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

Cluster API によるKubernetes環境のライフサイクル管理とマルチクラウド環境...

Cluster API によるKubernetes環境のライフサイクル管理とマルチクラウド環境での適用

Cluster API は Kubernetes の宣言的APIとリソースの管理機能を活かし、Kubernetes環境のライフサイクル管理を行うもので、Kubernetesコミュニティで仕様の策定と開発が進められています。

これまでもKubernetes環境の構築を支援するツールはいくつかありましたが、Cluster APIはコミュニティからの大きな支持を得ており、Cluster APIのエコシステムが広がりつつあります。

本セッションでは Cluster API の概要と最新の動向、また、Cluster APIを利用した大規模マルチクラウド環境への適用などをデモを交えながら解説を行います。

本資料はCloud Operator Days Tokyo 2020登壇時の資料です。

More Decks by Motonori Shindo / 進藤資訓

Other Decks in Technology

Transcript

  1. ©2020 VMware, Inc. Cluster API による Kubernetes 環境の ライフサイクル管理と マルチクラウド環境での適⽤

    Jul. 30, 2020 CTO, North Asia (Japan, Korea and Greater China) Motonori Shindo / motonori_shindo
  2. 3 ©2020 VMware, Inc. Cluster API とは Kubernetes スタイルの API

    を使って Kubernetes のクラスタのライフサイクルを管理するための仕組 み Kubernetes の Cluster Lifecycle SIG で仕様の制定 が⾏われている 2020 年 7 ⽉時点での API version は “v1alpha3“
  3. 4 ©2020 VMware, Inc. Kubernetes クラスタのライフサイクル管理 ・・・ Day 0 オペレーシ

    ョン 作成 設定 Day 2 オペレーシ ョン アップグレード リサイズ メンテナンス
  4. 5 ©2020 VMware, Inc. Kubernetes Stack API Driven Infrastructure インフラストラクチャ

    kubeadm, etc. ブートストラップ Kubernetes ランタイム
  5. 6 ©2020 VMware, Inc. Kubernetes Stack API Driven Infrastructure インフラストラクチャ

    kubeadm, etc. ブートストラップ Kubernetes ランタイム Cluster API プロビジョンニング
  6. 7 ©2020 VMware, Inc. Cluster API のアーキテクチャ Management Cluster Custom

    Resources Cluster API Controller Bootstrap Provider Controller Infrastructure Provider Controller Cluster MachineDeployment ControlPlane Workload Clusters Node Node Node
  7. 8 ©2020 VMware, Inc. 2020/7 時点でサポートされている Provider Rael Garcia from

    go.rael.dev/kubecap19-eu 最新リスト︓ https://cluster-api.sigs.k8s.io/reference/providers.html
  8. 9 ©2020 VMware, Inc. Cluster API Custom Resource Definitions (CRDs)

    Pod ReplicaSet Deployment Cluster Machine MachineSet ControlPlane MachineDeployment Kubernetes Cluster API
  9. 10 ©2020 VMware, Inc. Cluster API 処理の流れ Management Cluster Operator

    clusterctl config kubectl apply clusterctl init Workload Cluster clusterctl config kubectl apply Workload Cluster
  10. 11 Confidential │ ©2020 VMware, Inc. Cluster リソース クラスタ全体の設定を規定 Pod

    の CIDR controlPlane および infrastructure へのリファレン ス apiVersion: cluster.x-k8s.io/v1alpha3 kind: Cluster metadata: name: aws-demo namespace: default spec: clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 controlPlaneRef: apiVersion: controlplane.cluster.x-k8s.io/v1alpha3 kind: KubeadmControlPlane name: aws-demo-control-plane infrastructureRef: apiVersion: infrastructure.cluster.x-k8s.io/v1alpha3 kind: AWSCluster name: aws-demo
  11. 12 Confidential │ ©2020 VMware, Inc. InfrastructureCluster リソース インフラストラクチャに固有の 情報

    • AWS – リージョン – sshKey • vSphere – vCenter のアドレス – データセンタ / リソースプー ル / フォルダ apiVersion: infrastructure.cluster.x-k8s.io/v1alpha3 kind: AWSCluster metadata: name: aws-demo namespace: default spec: region: ap-northeast-1 sshKeyName: default
  12. 13 Confidential │ ©2020 VMware, Inc. ControlPlane リソース InfrastrucutureTemplate への

    リファレンス Control Plane をブートストラ ップするのに必要となるパラメ ータ Master のノード数 K8S のバージョン apiVersion: controlplane.cluster.x-k8s.io/v1alpha3 kind: KubeadmControlPlane metadata: name: aws-demo-control-plane namespace: default spec: infrastructureTemplate: apiVersion: infrastructure.cluster.x-k8s.io/v1alpha3 kind: AWSMachineTemplate name: aws-demo-control-plane kubeadmConfigSpec: clusterConfiguration: … initConfiguration: … joinConfiguration: … replicas: 3 version: v1.17.3
  13. 14 Confidential │ ©2020 VMware, Inc. BootstrapConfigTemplate リソース MachineDeployment から参

    照される apiVersion: bootstrap.cluster.x-k8s.io/v1alpha3 kind: KubeadmConfigTemplate metadata: name: aws-demo-md-0 namespace: default spec: template: spec: joinConfiguration: nodeRegistration: kubeletExtraArgs: cloud-provider: aws name: '{{ ds.meta_data.local_hostname }}'
  14. 15 Confidential │ ©2020 VMware, Inc. InfrastrucutreMachineTemplate リソース インフラストラクチャに固有の Machine

    に関する情報 • AWS – インスタンスタイプ • vSphere – メモリ – ディスクサイズ – データセンタ / リソースプー ル / フォルダ – テンプレート名 apiVersion: infrastructure.cluster.x-k8s.io/v1alpha3 kind: AWSMachineTemplate metadata: name: aws-demo-control-plane namespace: default spec: template: spec: iamInstanceProfile: control-plane.cluster-api-provider-aws.sigs.k8s.io instanceType: t3.large sshKeyName: default
  15. 16 Confidential │ ©2020 VMware, Inc. MachineDeployment リソース Machine、MachineSet を宣⾔

    的にアップデートするために必 要となる情報 Workload Cluster のノード数 ブートストラップへのリファン レス K8S バージョン apiVersion: cluster.x-k8s.io/v1alpha3 kind: MachineDeployment metadata: name: aws-demo-md-0 namespace: default spec: clusterName: aws-demo replicas: 3 selector: matchLabels: null template: spec: bootstrap: … clusterName: aws-demo infrastructureRef: … version: v1.17.3
  16. ‹#› Confidential │ ©2020 VMware, Inc. Kubernetes is yet another

    application managed by Kubernetes Photo by Josh Rocklage on Unsplash
  17. 21 ©2020 VMware, Inc. GitOps by ArgoCD Management Cluster Operator

    git commit git push Workload Cluster Workload Cluster Webhook
  18. 26 ©2020 VMware, Inc. VMware Tanzu Mission Control 新規クラスタ 作成

    既存クラスタ のアッタチ Tanzu Mission Control 認証とアクセス セキュリティと コンプライアン ス 設定と監査 データ保全 クラスタ ライフサイクル 管理 アプリ&サービス 管理 可視化と分析 最適化 接続性と トラフィック管理 Tanzu Application Catalog Tanzu Observability by Wavefront Tanzu Service Mesh Tanzu Kubernetes Grid 複数クラウドにまたがる複数の Kubernetes 環境を⼀元管理 * vSphere と Azure サポートは近⽇対応予定 * *
  19. 29 ©2020 VMware, Inc. Cluster API 主要ロードマップ https://cluster-api.sigs.k8s.io/roadmap.html V0.4 v1alpha

    4 Pluggable LB 0.3.7 v1alpha 3 Template Engine ClusterResourceSet Spot Instance Cluster Autoscaler June/July 2020 Q4 2020 TBD API Maturity v1beta1
  20. 30 ©2020 VMware, Inc. まとめ Cluster API は Kubernetes クラスタのライフサイ

    クル管理を Kubernetes ⾃⾝を使って⾏うための仕 組み 宣⾔的な特徴を活かし、Kubernetes のエコシステ ムを最⼤限に活⽤することが可能 幅広いプラットフォームをサポートしており、マル チクラウドを実現することができる ⽐較的新しいプロジェクトであるため、今後⼤きな 機能追加や仕様変更が発⽣することを許容する「覚 悟」が必要