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 (Oracle Container Engine for Kubernetes)

115 views

Published on

Let's Use OKE (Oracle Container Engine for Kubernetes)

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

Let's Use OKE (Oracle Container Engine for Kubernetes)

  1. 1. Oracle Container Engine for Kubernetes を 使ってみよう Mikuriya Daiki 2019-07-24
  2. 2. Copyright © Open Stream,Inc. All rights reserved. 自己紹介  Mikuriya Daiki (@mkrydik)  プログラミング以外の趣味  カメラ  ギター  フロントエンド開発が好き  2019年に入って Oracle Cloud・Kubernetes デビュー  今日は Oracle Cloud のマネージド Kubernetes サービス OKE のコトハジメをご紹介します
  3. 3. Copyright © Open Stream,Inc. All rights reserved. アジェンダ 1. Oracle Cloud サービスの紹介 1. Oracle Cloud Infrastructure (OCI) 2. Oracle Cloud Infrastructure Registry (OCIR) 3. Oracle Container Engine for Kubernetes (OKE) 2. OKE を使って Web アプリケーションを公開するまで 3. Kubernetes を使うメリット 4. OKE を使うメリット 5. Kubernetes・OKE のデメリット・注意点 6. まとめ  話したかったけど割愛 (弊社ブログ TECH 4 ALL に書くかも) 1. HTTPS 通信に対応するには 2. Wercker でデプロイ自動化 3. OKE クラスタを Terraform で構築
  4. 4. Copyright © Open Stream,Inc. All rights reserved. 1. Oracle Cloud サービスの紹介
  5. 5. Copyright © Open Stream,Inc. All rights reserved. 1.1. Oracle Cloud Infrastructure (OCI)
  6. 6. Copyright © Open Stream,Inc. All rights reserved. Oracle Cloud Infrastructure  OCI : Oracle の IaaS  VM (Compute Instance)  VCN (Virtual Cloud Network)  Subnet・Load Balancer  OCIR・OKE は OCI の中の1サービス  Compartment・Policy・Group・User…  総称して「リソース」  概念理解が大変… Virtual Machine Load Balancer ID & Access Management Groups Compartments
  7. 7. Copyright © Open Stream,Inc. All rights reserved. 1.2. Oracle Cloud Infrastructure Registry (OCIR)
  8. 8. Copyright © Open Stream,Inc. All rights reserved. Oracle Cloud Infrastructure Registry  OCIR  プライベート Docker レジストリ  OCI 環境内に自作の Docker イメージを置ける  Kubernetes クラスタにデプロイする Docker イメージとして OCIR を参照できる
  9. 9. Copyright © Open Stream,Inc. All rights reserved. 1.3. Oracle Container Engine for Kubernetes (OKE)
  10. 10. Copyright © Open Stream,Inc. All rights reserved. Oracle Container Engine for Kubernetes  Kubernetes … コンテナオーケストレーションツール  複数の Docker コンテナを冗長構成にしたり  高頻度なデプロイも簡単  自前で環境構築しようとすると大変  Master Node の準備・インストール  Worker Node となるサーバの調達・インストール  ネットワーク整備…  OKE のおかげで…  Kubernetes を使い始めるまでの障壁がなくなる  とりあえず使い始められる
  11. 11. Copyright © Open Stream,Inc. All rights reserved. 2. OKE を使って Web アプリケーションを公開するまで
  12. 12. Copyright © Open Stream,Inc. All rights reserved. Kubernetes クラスタの構成 Load Balancer VCN (Oracle Cloud のネットワーク内) ユーザ Web アプリ Virtual Machine ≒ Virtual Machine ≒ Virtual Machine ≒ どのコンテナが どのサーバで動いているかは 通常 意識しない
  13. 13. Copyright © Open Stream,Inc. All rights reserved. OKE クラスタを作る  OCI 管理画面で「Create Cluster」ボタンを押下  VCN・Subnet など必要なリソースは自動作成  サーバマシン (=Worker Node) も自動生成  「Node Pool」というグループで表現
  14. 14. Copyright © Open Stream,Inc. All rights reserved. OKE と OCI リソースの関係  OKE クラスタは1つの仮想ネットワークを構築する  VCN  Worker Node となる VM を複数生成する  Compute Instance  Pod を外部に公開する Load Balancer Service  OCI Load Balancer  OKE の構成要素は OCI のリソースを流用している  OCI 管理コンソールでも OKE が作った VM などが見える Virtual Machine Load Balancer Virtual Cloud Network
  15. 15. Copyright © Open Stream,Inc. All rights reserved. Docker イメージを作成する  Web アプリの実装  最終的に Docker イメージにできればどんな言語でも良い  例 : Node.js Express サーバ EXPOSE 8080 CMD ["node", "server.js"]  (http://localhost:8080/ でアクセスできる状態)  docker login コマンドで OCIR に接続  docker build で Docker イメージを作成  docker tag で OCIR 用の名前を付ける
  16. 16. Copyright © Open Stream,Inc. All rights reserved. OCIR に Docker イメージを Push する  docker push iad.ocir.io/tenancy/repo/app:v1  OCIR に Docker イメージが Push できた
  17. 17. Copyright © Open Stream,Inc. All rights reserved. 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
  18. 18. Copyright © Open Stream,Inc. All rights reserved. Pod を公開するため Service を作る  service.yaml (抜粋) kind: Service spec: type: LoadBalancer selector: name: my-app ports: - name: http port: 80 targetPort: 8080  Load Balancer Service ≒ OCI Load Balancer  パブリック IP が発行される (129.200.175.110 みたいな)  インターネットからアクセスできるようになった (´▽` )
  19. 19. Copyright © Open Stream,Inc. All rights reserved. 3. Kubernetes を使うメリット
  20. 20. Copyright © Open Stream,Inc. All rights reserved. Kubernetes はデプロイが楽チン  これまで面倒だったリリース作業が数コマンドに  アプリを作ったら docker build  イメージを OCIR に docker push  kubectl apply –f deployment.yaml  Pod の差し替えは自動的に行われる  ゼロダウンタイムでリリースするのも簡単  ブルー・グリーン・デプロイメント  イミュータブル・デプロイメント  デプロイ環境や設定項目が YAML ファイルに残る  環境全体をバージョン管理しやすい
  21. 21. Copyright © Open Stream,Inc. All rights reserved. 4. OKE を使うメリット
  22. 22. Copyright © Open Stream,Inc. All rights reserved. OKE は作り捨て・スケールしやすい  クラスタごと自動作成  クラスタごと削除  セットアップの手間なし  Node の台数を増やす Node Pool 機能  水平スケールがボタンひとつ
  23. 23. Copyright © Open Stream,Inc. All rights reserved. 5. Kubernetes・OKE の デメリット・注意点
  24. 24. Copyright © Open Stream,Inc. All rights reserved. Kubernetes の「コスト」  Kubernetes 自体の学習コストは高い  Kubernetes が何を抽象化しているのか  どの機能を使えばよいのか  疎結合ゆえの難解さ (環境変数の注入など)  K8s を使ったシステムの運用コストは高い  気にしないといけないことはあまり減らない  監視対象は増える  オンプレや生 K8s よりは OKE を使うのが断然楽  クラスタごと作り捨てられる手軽さ  水平スケールの容易さ
  25. 25. Copyright © Open Stream,Inc. All rights reserved. ネットワーク・セキュリティは泥臭い  ネットワーク構成の設計が大変  VCN・Subnet・CIDR・Load Balancer…??  SSL 証明書設定・終端  Security List の設定が重要  デフォルトでは全トラフィック筒抜けなので 不正アクセスや踏み台にされる危険性  インターネットから LB  LB と Worker Node  Worker Node からインターネット  OKE 固有の設定 Security Lists
  26. 26. Copyright © Open Stream,Inc. All rights reserved. 6. まとめ
  27. 27. Copyright © Open Stream,Inc. All rights reserved. まとめ  OKE を使えば Kubernetes 環境の導入は簡単!  Kubernetes 自体の複雑さはあるものの OKE がかなりお膳立てしてくれている  アプリ・インフラの垣根はなくなっていく 1. Oracle のドキュメントは英語だけど頑張って読む  すみっこにも重要なことが書いてある 2. Security List 設定大事  設定しないとセキュリティリスク  設定ミスると通信障害 3. OCID 重要  問合せ時に必ず訊かれる
  28. 28. Copyright © Open Stream,Inc. All rights reserved. ご清聴ありがとうございました

×