Upgrade to Pro — share decks privately, control downloads, hide ads and more …

IKSを本番で使うための道しるべ / IKS in Production

IKSを本番で使うための道しるべ / IKS in Production

2019/05/22に開催された「IKS Deep Dive」で登壇したときの資料です。

https://ibm-developer.connpass.com/event/130492/

Yoshihiro Kishida

May 24, 2019
Tweet

More Decks by Yoshihiro Kishida

Other Decks in Technology

Transcript

  1. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation このセッションのスコープ 2 IBM Cloud Kubernetes Services (IKS) を本番で利用するにあたり、 検討すべき項目をお伝えする 話さないこと • Docker、Kubernetesの概要 • IBM Cloud、IKSの概要 • コンテナー開発のベストプラクティス
  2. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation コンテナーの適用ロードマップ n CNCF - “Cloud Native Trail Map“ 1. コンテナー化 • 一般的には Docker コンテナで実施 • あらゆるサイズのアプリケーションおよび依存性をコンテナ化できる • 時間が経つにつれ、アプリケーションを分割し マイクロサービス化したくなるはず 2. CI/CD(継続デリバリの仕組み) • 継続インテグレーション・継続デリバリの仕組みをセットアップ • コード変更が 新しいコンテナ・イメージとして、 自動的にビルドされ、テストされ、デプロイされるように 3. オーケストレーション&アプリ定義 • 互換性試験に合格した Certified Kubernetes 環境を選びましょう • 複雑なアプリケーションであってもHELMで 定義して、 導入して更新していくことが可能 https://github.com/cncf/landscape/blob/master/README.md#trail-map
  3. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation IBM Cloud Kubernetes Service 4 簡略化されたクラスタ管理 IBM Cloud & Watsonの活用 セキュリティの担保 独自のクラスター設計 統合された運用ツール ネイティブKubernetes体験 • 高可用性(HA)の マネージドMaster • Nodeの自動リカバリー • IBM Cloud IAMによる アクセス管理 直感的なユーザー・エクスペリエンスと 容易なクラスタ管理を提供するマネージド型のKubernetesサービス 取得済みコンプライアンス 東京リージョンでも利用可能 認証取得済みバージョン • 仮想サーバー(共有/専有)、 ベアメタルから選択 • マルチゾーンクラスター による高可用性構成 • 脆弱性アドバイザー によるコンテナイメージと 実行中のコンテナの検査 • HSMによる鍵管理 • Watson, IoT, Analyticsなど IBM Cloudサービスと連携 • Secretは自動で暗号化 • Kubernetesの公式認証 プロバイダー • Kubernetes APIとツール を100%利用可能 • ロギング、監視サービスが ビルトイン • Prometheusやfluentdなど アドオンツールのサポート
  4. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation KUBERNETES CLUSTER KUBERNETES クラスター IKSを取り巻くIBM Cloudのサービス USER ON-PREMIS IBM CLOUD USER APPLICATION INTERNET SERVICES DEVELOPER IBM CLOUD SERVICES IoT SERVICES WATSON SERVICES INTEGRATION MOBILE SERVICE CI/CD PIPELINE CONTAINER REGISTRY CONTINUOUS DELIVERY GIT LAB CONTAINER IMAGES LOG・MONITORING LOG ANALYSIS MONITORING AVAILABILITY MONITORING STORAGE・DB BLOCK STORAGE OBJECT STORAGE CLOUD DATABASES NETWORK
  5. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation 6 クラスターの構成
  6. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation KUBERNETES CLUSTER KUBERNETES クラスター IKSを取り巻くIBM Cloudのサービス ON-PREMIS IBM CLOUD USER
  7. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation クラスターの可用性 8 uシングルゾーン または マルチゾーン を選択 - 可用性を高めるためにもマルチゾーン・クラスターでの構成を推奨 https://cloud.ibm.com/docs/containers?topic=containers-plan_clusters
  8. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation ワーカー・ノードの選択 : ハードウェアの選択 9 uベアメタル、仮想(専有)、仮想(共有)から選択 - ベアメタル : ハイパフォーマンスが必要なワークロード、GPU - 仮想(専有): 本番環境 - 仮想(共有): 開発/テスト環境、本番環境
  9. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation ワーカー・ノードの選択 : サイジング 10 u1つのゾーンが障害で使えなくなっても100%のサービスを継続提供できるよう、 それぞれ50%ずつ(合計150%)のワークロード配置を推奨 uスペックはアプリケーションに依存するのでちゃんと検証しましょう - 4コア or 8コアが選ばれることが多い - k8s稼働のためのオーバーヘッド(10%程度)も考慮する TOK04 w5 node w6 node TOK05 w7 node w8 node w9 node TOK02 w1 node w2 node w3 node w4 node 50% 50% 50% Worker Pool Cluster
  10. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation マルチゾーン・クラスターによる高可用性構成 11 TOK02 TOK04 TOK05 Worker 1 Worker 2 Worker 3 Worker 1 Worker 2 Worker 3 Worker 1 Worker 2 Worker 3 Global Load Balancer (Cloud Internet Services) IBM Cloud Databases Master バックアップ IBM Cloud Object Storage u MZRなら可用性を担保しつつ国内で完結できる Cross-Regional ロードバランサー機能は IKSに組み込まれている 東京リージョンの3つの データセンターで実現可能 マスターノードも 3データセンターに分散配置 ゾーン間で分散配置され、 常にレプリケーション クロスリージョナルの ICOSに自動バックアップ
  11. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation マルチゾーン・クラスター : ネットワーク 12 TOK02 cluster Worker Pool TOK04 TOK05 private VLANs public VLANs VRF or VLAN spanning w5 node w6 node w7 node w8 node w9 node w1 node w2 node w3 node w4 node uマルチゾーン構成の際はVRF(もしくはVLANスパニング)を有効にする必要がある - 各ゾーンで異なるVLAN間で会話できるようにするため - VRFが有効になっているかどうかは`$ ibmcloud account show`で確認
  12. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation IKSのバージョニング・ポリシー 13 u最新バージョン (n) がリリースされると、2 つ前のバージョン (n-2) までサポート uそれ以前のバージョン (n-3) は非推奨になった後、サポート対象外になる - サポート対象バージョンの Kubernetes を検証するための30日以上の猶予期間が与えられる (2019/05/22 時点) https://cloud.ibm.com/docs/containers?topic=containers-cs_versions
  13. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation 14 CI/CD パイプライン
  14. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation KUBERNETES CLUSTER KUBERNETES クラスター IKSを取り巻くIBM Cloudのサービス ON-PREMIS IBM CLOUD USER APPLICATION DEVELOPER CI/CD PIPELINE CONTAINER REGISTRY CONTINUOUS DELIVERY GIT LAB CONTAINER IMAGES
  15. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation CI/CD パイプライン ‹#› 16 Plan Code Build Test Release Operate Monitor Unit Integration CI Pipeline CD Pipeline Hook Commit PR Package Dev, Stage Production Log Usage Liveness Issues Maintenance ERROR Review Develop LGTM! Registry
  16. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation IBM CloudにおけるCI/CD ‹#› Hook Commit PR ERROR LGTM! Registry Unit Integration Package Dev, Stage Production Log Usage Liveness Issues Maintenance Review Develop Plan Code Build Test Release Operate Monitor CI Pipeline CD Pipeline Gitlab Sauce Labs Web IDE Availability Monitoring Slack Pager Duty Gitlab Delivery Pipeline Delivery Pipeline Gitlab Monitoring Log Analysis Container Registry Nexus Kubernetes Service Kubernetes Service Kubernetes Service
  17. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation 18 https://cloud.ibm.com/devops/toolchains
  18. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation 19 永続データの保管
  19. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation KUBERNETES CLUSTER KUBERNETES クラスター IKSを取り巻くIBM Cloudのサービス ON-PREMIS IBM CLOUD USER APPLICATION DEVELOPER CI/CD PIPELINE CONTAINER REGISTRY CONTINUOUS DELIVERY GIT LAB CONTAINER IMAGES STORAGE・DB BLOCK STORAGE OBJECT STORAGE CLOUD DATABASES
  20. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation IKSにおける永続ストレージ 21 w5 node w6 node w7 node w8 node w9 node w1 node w2 node w3 node w4 node cluster Worker Pool TOK02 TOK04 TOK05 PVC PVC PVC uマルチゾーン対応もしているDBaaSまたはICOSの利用を推奨 uIaaSで提供しているファイルストレージ or ブロックストレージも利用可能 - ただしゾーンをまたげないためマルチゾーンの場合は注意が必要 uIaaS上の仮想サーバー/ベアメタルにDBを導入してPrivate NWで接続することもできる
  21. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation マルチゾーン対応のストレージソリューション 22 https://cloud.ibm.com/docs/containers?topic=containers-integrations&locale=ja#storage_services IBM Cloud Object Storage DBaaS (IBM Cloud Databases, Cloudant) SDS(Software Defined Storage) (Portworx) ※ 要ライセンス
  22. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation IBM Cloud Databases (ICD) 23 IBM Cloud Object Storage (Cross Regional) Follower Leader Follower Customer 1 Namespace Customer 2 Namespace Customer 3 Namespace Kubernetes cluster within a IBM Cloud Region • フルマネージドの データベース・サービス • オープンソースの様々な データベースを提供 • デフォルトでMZRに 分散配置 (データベースの種類ごとに 2メンバーまたは3メンバーで構成) • Cross-regional の Cloud Object Storageに 自動バックアップ Availability Zone B Availability Zone C Availability Zone A Backups Replication Replication
  23. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation 24 ログ & モニタリング
  24. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation KUBERNETES CLUSTER KUBERNETES クラスター IKSを取り巻くIBM Cloudのサービス ON-PREMIS IBM CLOUD USER APPLICATION DEVELOPER CI/CD PIPELINE CONTAINER REGISTRY CONTINUOUS DELIVERY GIT LAB CONTAINER IMAGES LOG・MONITORING LOG ANALYSIS MONITORING AVAILABILITY MONITORING STORAGE・DB BLOCK STORAGE OBJECT STORAGE CLOUD DATABASES
  25. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation IKSのロギング 26 取得可能なログ ① ワーカー・ノード • OSのイベント ② コンテナー • コンテナのSTDOUT、STDERR ③ アプリケーション ④ ストレージ ⑤ kube-system • kubelet、kube-proxy などの情報 ⑥ kube-audit • API サーバーに送信された情報 ⑦ Ingress • ネットワーク・トラフィックに関する情報 uIKSでは以下のコンポーネントのログがローカルで生成され、書き込まれる u一元的にみるにはIBM Cloudのサービスや外部サービスを使うのがよい https://cloud.ibm.com/docs/containers?topic=containers-health
  26. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation IBM Log Analysis with logDNA 27 • リアルタイムログ監視 • ログソースの自動解析と索引作成 • キーワードベースのログ検索と グラフ作成 • 重要なイベントやエラーの アラート通知 • IBM Cloud Object Storage へ ログをアーカイブ • 30以上のログソースのサポート
  27. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation LogDNAによるログの取得 28 IBM Cloud Log Analysis with LogDNAサービスを使用してログを取得可能 IBM Log Analysis with LogDNA LogDNA Web UI API Alert System Log Search Archive Customer app logs Machine Generated data Kubernetes cluster Virtual Server instance IBM Cloud Databases Customer app IBM Cloud
  28. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation LogDNAによるログの取得 29 IKSクラスターにエージェントを導入するだけ! https://cloud.ibm.com/docs/services/Log-Analysis-with-LogDNA
  29. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation IBM Cloud Monitoring with Sysdig 30 - リアルタイムのパフォーマンス監視 およびトラブルシューティング - 動的トポロジーマップにより、 サービス間の依存関係を視覚的に確認 - カスタマイズ可能なダッシュボード - Kubernetesクラスターを自動検出し 様々なメトリクスを収集 - 異常やダウンタイム、パフォーマンス劣 化時のマルチチャネル通知 - Email, Slack, PagerDuty, Webhook, OpsGenie, VictorOps - 東京でも動くようになりました!
  30. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation モニタリング 31 IBM Cloud Monitoring with Sysdig サービスを使用して様々なメトリクスを収集・管理可能
  31. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation Sysdigによるメトリクスの収集 32 IKSクラスターにエージェントを導入するだけ! https://cloud.ibm.com/docs/services/Monitoring-with-Sysdig
  32. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation 33 ネットワーク
  33. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation KUBERNETES CLUSTER KUBERNETES クラスター IKSを取り巻くIBM Cloudのサービス USER ON-PREMIS IBM CLOUD USER APPLICATION INTERNET SERVICES DEVELOPER CI/CD PIPELINE CONTAINER REGISTRY CONTINUOUS DELIVERY GIT LAB CONTAINER IMAGES LOG・MONITORING LOG ANALYSIS MONITORING AVAILABILITY MONITORING STORAGE・DB BLOCK STORAGE OBJECT STORAGE CLOUD DATABASES NETWORK
  34. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation クラスター・ネットワーク 35
  35. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation クラスターネットワーク 36 uIKSのワーカーノードはユーザーの IaaSアカウント上に配置される - IaaSサーバーとPrivateでの通信が可能 uIKS内部のネットワーク制御に `Calico`を使用 uインターネットからクラスターを保護 するにはFirewallやCalicoを使用 u Firewall: Vyatta, Fortigate u 仮想サーバーで使える Security GroupはIKSで使えない
  36. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation ファイアウォールの選択肢 37 種類 Description できること Calico ネットワークポリシー • クラスターに標準で統合されている Calicoプラグイン • calicoctl コマンドが必要 • ワーカー・ノードで iptablesのルールを設定 • ホワイトリストで特定リソース(CISなど)から のみのリクエストを許可 Cloud Internet Services • IBM Cloudのサービスとして提供 • 実態はCloudflareのデータセンターで稼働 •DDoS 保護 •Web Application Firewall (WAF) •Global Load Balancer (GLB) •CDN Gateway Appliance • Juniper vSRX • Vyatta VRA •Public および private (10 Gbps only) VLAN 保護 •単一ゾーンでのシングルテナントの ファイアウォール •Virtual Private Network (VPN) ゲートウェイ Fortigate Security Appliance • 1 Gbps (仮想, 単一のpublic VLAN) • 10 Gbps (物理, 複数のpublic および private VLAN) •Public および private (10 Gbps only) VLAN 保護 •単一ゾーンでのシングルテナントの ファイアウォール •Intrusion Prevention System (IPS) •Virtual Private Network (VPN) ゲートウェイ https://cloud.ibm.com/docs/containers?topic=containers-network_policies
  37. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation Cloud Internet Services(CIS) 38 Cloudflare社 とのパートナーシップにより、世界中の150以上のCloudflare社のデータセンターを活⽤したサービスを IBM Cloud から利⽤できるようになりました。 インターネットに公開されたアプリケーションやWebサイトのパフォーマンスを改善し、セキュアに保ちます。 セキュリティ 回復性 パフォーマンス DDoS 防御: レイヤ3、4、または7が対象の⼤量のトラフィックやリクエストを利⽤した攻撃に対する保護 Web アプリケーション ファイアウォール (WAF): 既知や未知の脆弱性に対してアプリやウェブサイトを保護 SSL/TLS: 最新の標準暗号化⽅式を利⽤し、インターネットを通じたデータ転送をセキュアに維持 DNS: IPアドレスやエイリアスに対して、⾼速な名前解決を提供 Global Load Balancer (GLB): 可⽤性やサービス健全性に基づいたルーティングにより、 可⽤性を向上し、レイテンシを低減 CDN: ロケーションベースのアクセスを提供し、レイテンシを低減し、性能を改善 ページルール: ウェブページごとに詳細なアクションを管理、リダイレクト作成、キャッシュ動作調整が可能
  38. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation Private Cluster 39 マスター ↔ ワーカーノード間の通信、マスターへのアクセス(kubectlコマンド)がPrivate 経由に
  39. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation 42 ユーザー管理
  40. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation ユーザーの権限管理 43 https://cloud.ibm.com/docs/containers?topic=containers-users u複数のユーザーが関わる場合は適切な権限管理を付与する
  41. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation IBM Cloud IAMとKubernetes RBACの関係 44 https://cloud.ibm.com/docs/containers?topic=containers-access_reference IAM での役割 - 管理者(Admin) - オペレーター(Operator) - エディター(Editor) - ビューワー(Viewer) Kubernetes クラスター ClusterRole - edit - view - admin … Role binding - ClusterRole - Role Default Role binding : - ibm-admin → RBAC ClusterRole admin - ibm-edit → RBAC ClusterRoles edit - ibm-view → RBAC ClusterRoles view ユーザーアカウント `$ kubectl get clusterrolebinding ibm-admin -o yaml`でユーザー確認できる uIBM Cloud IAMで設定した役割は内部でKubernetesのClusterRoleに紐づけられる それぞれどんな役割が 与えられているかは Docsで確認
  42. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation KUBERNETES CLUSTER KUBERNETES クラスター IKSを取り巻くIBM Cloudのサービス USER ON-PREMIS IBM CLOUD USER APPLICATION INTERNET SERVICES DEVELOPER IBM CLOUD SERVICES IoT SERVICES WATSON SERVICES INTEGRATION MOBILE SERVICE CI/CD PIPELINE CONTAINER REGISTRY CONTINUOUS DELIVERY GIT LAB CONTAINER IMAGES LOG・MONITORING LOG ANALYSIS MONITORING AVAILABILITY MONITORING STORAGE・DB BLOCK STORAGE OBJECT STORAGE CLOUD DATABASES NETWORK
  43. IBM Cloud | ©2019 IBM Corporation IBM Cloud | ©2018

    IBM Corporation もっと詳しく知りたい方はDocsへ 47 https://cloud.ibm.com/docs/containers