Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Let's Use OKE

36 views

Published on

Oracle Container Engine for Kubernetes (OKE) を使ってみよう

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

Let's Use OKE

  1. 1. Oracle Container Engine for Kubernetes (OKE) を 使ってみよう
  2. 2. Oracle Cloud サービスの紹介から…
  3. 3. Oracle Cloud Infrastructure (OCI) • OCI : Oracle の IaaS • VM (Compute Instance) • VCN (Virtual Cloud Network) • Subnet・Load Balancer • OCIR・OKE は OCI の中の1サービス • Compartment・Policy・Group・User… • 総称して「リソース」 • 概念理解が大変…
  4. 4. Oracle Cloud Infrastructure Registry (OCIR) • プライベート Docker レジストリ • OCI 環境内に自作の Docker イメージを置ける • Kubernetes クラスタにデプロイする Docker イメージとして OCIR を参照できる
  5. 5. Oracle Container Engine for Kubernetes (OKE) • Kubernetes … コンテナオーケストレーションツール • 複数の Docker コンテナを冗長構成にしたり • 高頻度なデプロイも簡単 • 自前で環境構築しようとすると大変 • Master Node の準備・インストール • Worker Node となるサーバの調達・インストール • ネットワーク整備… • ⇒ OKE のおかげで… • Kubernetes を使い始めるまでの障壁がなくなる • とりあえず使い始められる
  6. 6. OKE を使って Web アプリケーションを公開してみる
  7. 7. Kubernetes クラスタの構成 Load Balancer VCN (Oracle Cloud のネットワーク内) ユーザ Web アプリ Virtual Machine ≒ Virtual Machine ≒ Virtual Machine ≒ どのコンテナが どのサーバで動いているかは 通常意識しない
  8. 8. OKE クラスタを作る • OCI 管理画面で「Create Cluster」ボタンを押下 • VCN・Subnet など必要なリソースは自動作成 • サーバマシン (=Worker Node) も自動生成 • 「Node Pool」というグループで表現
  9. 9. OKE と OCI リソースの関係 • OKE クラスタは1つの仮想ネットワークを構築する • VCN • Worker Node となる VM を複数生成する • Compute Instance • Pod を外部に公開する Load Balancer Service • OCI Load Balancer • OKE の構成要素は OCI のリソースを流用している • OCI 管理コンソールでも OKE が作った VM などが見える
  10. 10. Docker イメージを作成する • Web アプリの実装 • 最終的に Docker イメージにできればどんな言語でも良い • 例 : Node.js Express サーバ EXPOSE 8080 CMD ["node", "server.js"] • (http://localhost:8080/ でアクセスできる状態) • docker login コマンドで OCIR に接続 • docker build で Docker イメージを作成 • docker tag で OCIR 用の名前を付ける
  11. 11. OCIR に Docker イメージを Push する • docker push iad.ocir.io/tenancy/repo/app:v1 • OCIR に Docker イメージが Push できた
  12. 12. OKE クラスタに ReplicaSet を作る • deployment.yaml (抜粋) kind: Deployment spec: replicas: 3 template: metadata: labels: name: my-app spec: containers: - name: my-container image: iad.ocir.io/tenancy/repo/app:v1 imagePullPolicy: Always ports: - containerPort: 8080 • kubectl apply –f deployment.yaml • Pod (≒ Docker コンテナ) が3台できた • Pod は 8080 ポートを開放して待ち受けて いる • このままではインターネットから Pod に 到達する経路がない
  13. 13. Pod を公開するため Service を作る 1 • service.yaml (抜粋) kind: Service spec: type: LoadBalancer selector: name: my-app ports: - name: http port: 80 targetPort: 8080 • 通信を転送したい Pod 群を selector.name で指定する (「my- app」部分) • Load Balancer Service 自身は 80 ポートを開放する • 80 ポートで受け取った通信を Pod の 8080 ポートへ転送する
  14. 14. Pod を公開するため Service を作る 2 • kubectl apply –f service.yaml • Kubernetes Load Balancer Service ≒ OCI Load Balancer • パブリック IP が発行される (132.100.17.10 みたいなやつ) • インターネットからアクセスできるようになった
  15. 15. Kubernetes・OKE のメリット
  16. 16. Kubernetes はデプロイが楽チン • これまで面倒だったリリース作業が数コマンドに • アプリを作ったら docker build • イメージを OCIR に docker push • kubectl apply –f deployment.yaml • Pod の差し替えは自動的に行われる • ゼロダウンタイムでリリースするのも簡単 • ブルー・グリーン・デプロイメント • イミュータブル・デプロイメント • デプロイ環境や設定項目が YAML ファイルに残る • 環境全体をバージョン管理しやすい
  17. 17. OKE は作り捨て・スケールしやすい • クラスタごと自動作成 • クラスタごと削除 • セットアップの手間なし • Node の台数を増やす Node Pool 機能 ↑ • 水平スケールがボタンひとつ
  18. 18. Kubernetes・OKE のデメリット (注意点)
  19. 19. Kubernetes の「コスト」 • Kubernetes 自体の学習コストは高い • Kubernetes が何を抽象化しているのか • どの機能を使えばよいのか • 疎結合ゆえの難解さ (環境変数の注入など) • K8s を使ったシステムの運用コストは高い • 気にしないといけないことはあまり減らない • 監視対象は増える • オンプレや生 K8s よりは OKE を使うのが断然楽 • クラスタごと作り捨てられる手軽さ • 水平スケールの容易さ
  20. 20. ネットワーク・セキュリティは泥臭い • ネットワーク構成の設計が大変 • VCN・Subnet・CIDR Block・Load Balancer… • SSL 証明書設定・終端 • Security List (ファイアウォールルール) の設定が重要 • デフォルトでは全トラフィック筒抜けなので 不正アクセスや踏み台にされる危険性 • インターネットから LB • LB と Worker Node • Worker Node からインターネット • OKE 固有の設定もある
  21. 21. まとめ
  22. 22. まとめ • OKE を使えば Kubernetes 環境の導入は簡単! • Kubernetes 自体の複雑さはあるものの OKE がかなりお膳立てしてくれる • 「アプリ」「インフラ」の垣根はなくなっていく 1. Oracle のドキュメントは英語だけど頑張って読む • すみっこにも重要なことが書いてあるので… 2. Security List 設定大事 • 設定しないとセキュリティリスク • 設定ミスると通信障害 3. OCID 重要 • 問合せ時に必ず訊かれる
  23. 23. おわり

×