AWS EC2でTanzu CE(Community Edition)を動かす
背景
業務で vCD(VMware Cloud Director)環境でTKGクラスタの検証を行なっているのだが、その練習として今回はEC2にTanzu CEを構築してみる。
概要
- TanzuのCLIをインストール
- CLIで
UnManaged Cluster
を作成する - GUIで
Managed Cluster
を作成する -
Managed Cluster
からその後CLIでWorkload Cluster
を作成する
環境
- AWS EC2(t2.2xlarge)
- Ubuntu 20.04.3 LTS
- EC2のプライベートIPアドレス(172.31.10.190)
- Docker version 20.10.13
- kubectl v1.23.0
Install tanzu CLI
githubのvmware-tanzu/community-editionからtanzu CLIをダウンロードしてインストールする。今回はRelease v0.11.0-rc.2
を利用する。
(注意)root
ユーザーで実行するとスクリプトの実行で失敗する。そのため、一般ユーザーで実行する。
wget https://github.com/vmware-tanzu/community-edition/releases/download/v0.11.0-rc.2/tce-linux-amd64-v0.11.0-rc.2.tar.gz
ls
tce-linux-amd64-v0.11.0-rc.2.tar.gz
tar zxvf tce-linux-amd64-v0.11.0-rc.2.tar.gz
cd tce-linux-amd64-v0.11.0-rc.2/
ls
default-local install.sh tanzu uninstall.sh
./install.sh
Tanzu CLIがインストールされた。
which tanzu
/usr/local/bin/tanzu
tanzu version
version: v0.11.2
buildDate: 2022-03-17
sha: 6431d1d
tanzu management-cluster create -b 172.31.10.190:8080 -u --browser=none
Validating the pre-requisites...
Serving kickstart UI at http://172.31.10.190:8080
EC2と紐づいているグローバルIPアドレスにアクセスすると下記のような画面が表示される。
クラスタ作成(CLI, GUI)
CLIでクラスタを作成する(UnManaged Cluster)
先程GUIの画面を紹介したが、一旦その画面は使用せずにCLIでクラスタを作成してみる。
unmanaged cluster
をtanzu-test
という名前で作成する。
tanzu unmanaged-cluster create tanzu-test
出力は下記のようになる。
📁 Created cluster directory
🔧 Resolving Tanzu Kubernetes Release (TKR)
projects.registry.vmware.com/tce/tkr:v0.17.0
Downloaded to: /home/ubuntu/.config/tanzu/tkg/unmanaged/bom/projects.registry.vmware.com_tce_tkr_v0.17.0
Rendered Config: /home/ubuntu/.config/tanzu/tkg/unmanaged/tanzu-test/config.yaml
Bootstrap Logs: /home/ubuntu/.config/tanzu/tkg/unmanaged/tanzu-test/bootstrap.log
🔧 Processing Tanzu Kubernetes Release
🎨 Selected base image
projects.registry.vmware.com/tce/kind:v1.22.4
📦 Selected core package repository
projects.registry.vmware.com/tce/repo-10:0.10.0
📦 Selected additional package repositories
projects.registry.vmware.com/tce/main:v0.11.0
📦 Selected kapp-controller image bundle
projects.registry.vmware.com/tce/kapp-controller-multi-pkg:v0.30.1
🚀 Creating cluster tanzu-test
Cluster creation using kind!
❤️ Checkout this awesome project at https://kind.sigs.k8s.io
Base image downloaded
Cluster created
To troubleshoot, use:
kubectl ${COMMAND} --kubeconfig /home/ubuntu/.config/tanzu/tkg/unmanaged/tanzu-test/kube.conf
📧 Installing kapp-controller
kapp-controller status: Running
📧 Installing package repositories
Core package repo status: Reconcile succeeded
🌐 Installing CNI
calico.community.tanzu.vmware.com:3.22.1
✅ Cluster created
🎮 kubectl context set to tanzu-test
View available packages:
tanzu package available list
View running pods:
kubectl get po -A
Delete this cluster:
tanzu unmanaged delete tanzu-test
起動中のPod
を確認する
kubectl get po -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-kube-controllers-5b78fc7bb7-zrp86 1/1 Running 0 35m
kube-system calico-node-2dx5d 1/1 Running 0 35m
kube-system coredns-78fcd69978-45gjd 1/1 Running 0 35m
kube-system coredns-78fcd69978-7jlsh 1/1 Running 0 35m
kube-system etcd-tanzu-test-control-plane 1/1 Running 0 36m
kube-system kube-apiserver-tanzu-test-control-plane 1/1 Running 0 36m
kube-system kube-controller-manager-tanzu-test-control-plane 1/1 Running 0 36m
kube-system kube-proxy-z2ht6 1/1 Running 0 35m
kube-system kube-scheduler-tanzu-test-control-plane 1/1 Running 0 36m
local-path-storage local-path-provisioner-85494db59d-4c6rm 1/1 Running 0 35m
tkg-system kapp-controller-779d9777dc-8c5lx 1/1 Running 0 35m
利用可能なパッケージを確認する
tanzu package available list
/ Retrieving available packages...
NAME DISPLAY-NAME SHORT-DESCRIPTION LATEST-VERSION
cartographer.community.tanzu.vmware.com Cartographer Kubernetes native Supply Chain Choreographer. 0.2.2
cert-injection-webhook.community.tanzu.vmware.com cert-injection-webhook The Cert Injection Webhook injects CA certificates and proxy environment variables into pods 0.1.0
cert-manager.community.tanzu.vmware.com cert-manager Certificate management 1.6.1
contour.community.tanzu.vmware.com contour An ingress controller 1.20.1
external-dns.community.tanzu.vmware.com external-dns This package provides DNS synchronization functionality. 0.10.0
fluent-bit.community.tanzu.vmware.com fluent-bit Fluent Bit is a fast Log Processor and Forwarder 1.7.5
fluxcd-source-controller.community.tanzu.vmware.com Flux Source Controller The source-controller is a Kubernetes operator, specialised in artifacts acquisition from external sources such as Git, Helm repositories and S3 buckets. 0.21.2
gatekeeper.community.tanzu.vmware.com gatekeeper policy management 3.7.0
grafana.community.tanzu.vmware.com grafana Visualization and analytics software 7.5.7-1
harbor.community.tanzu.vmware.com harbor OCI Registry 2.3.3
knative-serving.community.tanzu.vmware.com knative-serving Knative Serving builds on Kubernetes to support deploying and serving of applications and functions as serverless containers 1.0.0
kpack.community.tanzu.vmware.com kpack kpack builds application source code into OCI compliant images using Cloud Native Buildpacks 0.5.1
local-path-storage.community.tanzu.vmware.com local-path-storage This package provides local path node storage and primarily supports RWO AccessMode. 0.0.20
multus-cni.community.tanzu.vmware.com multus-cni This package provides the ability for enabling attaching multiple network interfaces to pods in Kubernetes 3.7.1
prometheus.community.tanzu.vmware.com prometheus A time series database for your metrics 2.27.0-1
velero.community.tanzu.vmware.com velero Disaster recovery capabilities 1.8.0
whereabouts.community.tanzu.vmware.com whereabouts A CNI IPAM plugin that assigns IP addresses cluster-wide 0.5.0
docker ps
でどのようなPodが動いているか確認。Kind
を使っているようである。
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d94f1196928b projects.registry.vmware.com/tce/kind:v1.22.4 "/usr/local/bin/entr…" 38 minutes ago Up 37 minutes 127.0.0.1:43171->6443/tcp tanzu-test-control-plane
GUIでクラスタを作成する(Managed Cluster)
先程のGUIコンソールからDockerを選び、管理クラスタを作成する
次の画面でクラスタの名前、CNIのCIDRの設定を実施する
次の画面で入力した設定が正しいか確認する
クラスタ作成時のログが次の画面で表示される
管理クラスタの作成が完了すると下記のように表示される
管理クラスタを正常に作成できたか確認する。
tanzu management-cluster get
NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES PLAN
mng-cluster tkg-system running 1/1 1/1 v1.22.5+vmware.1 management dev
Details:
NAME READY SEVERITY REASON SINCE MESSAGE
/mng-cluster True 13m
├─ClusterInfrastructure - DockerCluster/mng-cluster True 13m
├─ControlPlane - KubeadmControlPlane/mng-cluster-control-plane True 13m
│ └─Machine/mng-cluster-control-plane-bzl5t True 13m
└─Workers
└─MachineDeployment/mng-cluster-md-0 True 13m
└─Machine/mng-cluster-md-0-6cf74db48c-6ht9t True 13m
Providers:
NAMESPACE NAME TYPE PROVIDERNAME VERSION WATCHNAMESPACE
capd-system infrastructure-docker InfrastructureProvider docker v1.0.1
capi-kubeadm-bootstrap-system bootstrap-kubeadm BootstrapProvider kubeadm v1.0.1
capi-kubeadm-control-plane-system control-plane-kubeadm ControlPlaneProvider kubeadm v1.0.1
capi-system cluster-api CoreProvider cluster-api v1.0.1
管理クラスタに疎通するためのkubeconfig
を下記のコマンドで確認する
tanzu management-cluster kubeconfig get mng-cluster --admin
Credentials of cluster 'mng-cluster' have been saved
You can now access the cluster by running 'kubectl config use-context mng-cluster-admin@mng-cluster'
指示通り下記のコマンドを実行する
kubectl config use-context mng-cluster-admin@mng-cluster
Switched to context "mng-cluster-admin@mng-cluster".
管理クラスタ上で動作するPodを確認する
kubectl get po -A
NAMESPACE NAME READY STATUS RESTARTS AGE
capd-system capd-controller-manager-86b587cf4b-8sd9d 1/1 Running 0 26m
capi-kubeadm-bootstrap-system capi-kubeadm-bootstrap-controller-manager-7ffb6dc8fc-f9482 1/1 Running 0 26m
capi-kubeadm-control-plane-system capi-kubeadm-control-plane-controller-manager-667999fdb8-lxzw9 1/1 Running 0 26m
capi-system capi-controller-manager-65c5769c4c-pf7k4 1/1 Running 0 26m
cert-manager cert-manager-cainjector-cc485fcdc-x88cn 1/1 Running 0 29m
cert-manager cert-manager-d6b468546-rtfxv 1/1 Running 0 29m
cert-manager cert-manager-webhook-dd697458d-tpdrh 1/1 Running 0 29m
kube-system antrea-agent-sjlh8 2/2 Running 0 25m
kube-system antrea-agent-xxcjj 2/2 Running 0 24m
kube-system antrea-controller-648f8c54bc-d7jvc 1/1 Running 0 25m
kube-system coredns-6765cf8944-gqrgj 1/1 Running 0 29m
kube-system coredns-6765cf8944-rvffc 1/1 Running 0 29m
kube-system etcd-mng-cluster-control-plane-bzl5t 1/1 Running 0 30m
kube-system kube-apiserver-mng-cluster-control-plane-bzl5t 1/1 Running 0 30m
kube-system kube-controller-manager-mng-cluster-control-plane-bzl5t 1/1 Running 0 30m
kube-system kube-proxy-hjk2b 1/1 Running 0 29m
kube-system kube-proxy-tsvfp 1/1 Running 0 29m
kube-system kube-scheduler-mng-cluster-control-plane-bzl5t 1/1 Running 0 30m
kube-system metrics-server-747466f474-jd7j8 1/1 Running 0 25m
tanzu-system secretgen-controller-6ff4b6b97f-ssc9d 1/1 Running 0 25m
tkg-system kapp-controller-5dcd4cdcd8-9hbbd 1/1 Running 0 27m
tkg-system tanzu-addons-controller-manager-8d88f6578-dhxcx 1/1 Running 0 26m
tkg-system tanzu-capabilities-controller-manager-6865b9fdbb-57gpd 1/1 Running 0 28m
tkg-system tanzu-featuregates-controller-manager-7979574447-lgksn 0/1 ContainerCreating 0 25m
tkr-system tkr-controller-manager-6c8bcddf48-75gf9 1/1 Running 0 29m
Management Cluster
からWorkload Cluster
を作成する
CLIでworkload-cluster
という名前のクラスタを、下記のコマンドで作成する
tanzu cluster create workload-cluster --plan dev
クラスタが作成できたら、下記のコマンドで確認する。workload-cluster
が正常に表示されていることがわかる。
tanzu cluster list
NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES PLAN
workload-cluster default running 1/1 1/1 v1.22.5+vmware.1 <none> dev
Workload Cluster
のkubeconfigを取得する。
tanzu cluster kubeconfig get workload-cluster --admin
Credentials of cluster 'workload-cluster' have been saved
You can now access the cluster by running 'kubectl config use-context workload-cluster-admin@workload-cluster'
指示に従い、下記コマンドを実行する
kubectl config use-context workload-cluster-admin@workload-cluster
どのようなPod
がWorkload cluster
で動作しているのか確認してみる
kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system antrea-agent-jkk99 2/2 Running 0 4m11s
kube-system antrea-agent-zzhd6 2/2 Running 0 4m11s
kube-system antrea-controller-75bdc46c56-d7s9h 1/1 Running 0 4m11s
kube-system coredns-6765cf8944-g7srj 1/1 Running 0 5m6s
kube-system coredns-6765cf8944-pdz2n 1/1 Running 0 5m6s
kube-system etcd-workload-cluster-control-plane-ccvz8 1/1 Running 0 5m8s
kube-system kube-apiserver-workload-cluster-control-plane-ccvz8 1/1 Running 0 5m8s
kube-system kube-controller-manager-workload-cluster-control-plane-ccvz8 1/1 Running 0 5m8s
kube-system kube-proxy-8n44x 1/1 Running 0 4m36s
kube-system kube-proxy-kfjns 1/1 Running 0 5m6s
kube-system kube-scheduler-workload-cluster-control-plane-ccvz8 1/1 Running 0 5m8s
kube-system metrics-server-84fcdcb464-j4pw2 1/1 Running 0 4m17s
tanzu-system secretgen-controller-5497d6cd98-9f8zf 1/1 Running 0 4m18s
tkg-system kapp-controller-74c67946c7-vb6q5 1/1 Running 0 5m6s
tkg-system tanzu-capabilities-controller-manager-6865b9fdbb-vhds7 1/1 Running 0 5m6s
最後に
本記事では、GUIでManagement Cluster
を作成し、その後Worklaod Cluster
を作成するまでの流れを試した。
本記事が参考になれば嬉しい。
Discussion