Slide 1

Slide 1 text

©2020 VMware, Inc. Cluster API による Kubernetes 環境の ライフサイクル管理と マルチクラウド環境での適⽤ Jul. 30, 2020 CTO, North Asia (Japan, Korea and Greater China) Motonori Shindo / motonori_shindo

Slide 2

Slide 2 text

2 ©2020 VMware, Inc. GNU Photo by Charl Durand on Unsplash GNU’s Not Unix

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

4 ©2020 VMware, Inc. Kubernetes クラスタのライフサイクル管理 ・・・ Day 0 オペレーシ ョン 作成 設定 Day 2 オペレーシ ョン アップグレード リサイズ メンテナンス

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

6 ©2020 VMware, Inc. Kubernetes Stack API Driven Infrastructure インフラストラクチャ kubeadm, etc. ブートストラップ Kubernetes ランタイム Cluster API プロビジョンニング

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

8 ©2020 VMware, Inc. 2020/7 時点でサポートされている Provider Rael Garcia from go.rael.dev/kubecap19-eu 最新リスト︓ https://cluster-api.sigs.k8s.io/reference/providers.html

Slide 9

Slide 9 text

9 ©2020 VMware, Inc. Cluster API Custom Resource Definitions (CRDs) Pod ReplicaSet Deployment Cluster Machine MachineSet ControlPlane MachineDeployment Kubernetes Cluster API

Slide 10

Slide 10 text

10 ©2020 VMware, Inc. Cluster API 処理の流れ Management Cluster Operator clusterctl config kubectl apply clusterctl init Workload Cluster clusterctl config kubectl apply Workload Cluster

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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 }}'

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

‹#› 17 Confidential │ ©2020 VMware, Inc. Demo: Cluster Bootstrap

Slide 18

Slide 18 text

18 ©2020 VMware, Inc.

Slide 19

Slide 19 text

19 ©2020 VMware, Inc.

Slide 20

Slide 20 text

‹#› Confidential │ ©2020 VMware, Inc. Kubernetes is yet another application managed by Kubernetes Photo by Josh Rocklage on Unsplash

Slide 21

Slide 21 text

21 ©2020 VMware, Inc. GitOps by ArgoCD Management Cluster Operator git commit git push Workload Cluster Workload Cluster Webhook

Slide 22

Slide 22 text

‹#› 22 Confidential │ ©2020 VMware, Inc. Demo: GitOps

Slide 23

Slide 23 text

23 ©2020 VMware, Inc.

Slide 24

Slide 24 text

24 ©2020 VMware, Inc. 課題︓ 複数の異なるテクノロジー製品、⼿法、プロセス、チーム、専⾨知識 マルチクラウドは時代の流れ

Slide 25

Slide 25 text

‹#› 25 Confidential │ ©2020 VMware, Inc. Demo: Multi Cloud Management with Cluster API

Slide 26

Slide 26 text

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 サポートは近⽇対応予定 * *

Slide 27

Slide 27 text

‹#› 27 Confidential │ ©2020 VMware, Inc. Demo: Tanzu Mission Control

Slide 28

Slide 28 text

28 ©2020 VMware, Inc.

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

31 ©2020 VMware, Inc. https://github.com/kubernetes-sigs/cluster-api https://github.com/kubernetes-sigs/cluster-api-provider-aws https://github.com/kubernetes-sigs/cluster-api-provider-vsphere https://blog.shin.do/2019/09/kubernetes-cluster-api-part1/ https://blog.pfs.nifcloud.com/20200603_cluster-api-for-nifcloud References

Slide 32

Slide 32 text

©2020 VMware, Inc. Thank You