vSphere 8.0 U2 で、vSphere with Tanzu の自宅ラボ環境を構築していきます。今回は、vSphere 名前空間に、Tanzu Kubernetes Gird Service(TKGS)のクラスタで、コンテナを起動してみます。
今回の内容です
ドキュメントでは、下記のあたりが参考になります。
ラボ構成のイメージ
前回に作成した TKGS クラスタに、アプリケーション(Nginx コンテナ)を展開してみます。イメージ図は、前回の再掲です。
今回は NSX を使用した(NSX ALB を利用していない)スーパーバイザーなので、LoadBalancer Service リソースを作成すると、NSX LB による VIP が作成されます。
1. TKGS の Kubernetes クラスタへの接続
ここからの作業の前提として、作業で使用するマシンには、下記の手順で kubectl をインストールしてあります。
TKGS の Kubernetes クラスタにアクセスする場合も、kubectl vsphere login コマンドを利用します。しかし、スーパーバイザーへのログインとは異なり、vSphere 名前空間と、TKGS クラスタ名の指定が必要になります。
ここでも、パスワードを環境変数に格納しておくことで、キー入力を省略できます。※例ではパスワードを VMware1! にしています。
$ export KUBECTL_VSPHERE_PASSWORD='VMware1!'
下記のように、TKG クラスタに接続します。
kubectl vsphere login では、スーパーバイザーに接続する場合のコマンドラインに、追加で下記のオプションを指定しています。
- --tanzu-kubernetes-cluster-namespace=demo-ns-01
→TKGS クラスタを作成してある vSphere 名前空間「demo-ns-01」を指定。 - --tanzu-kubernetes-cluster-name=tkc-01
→ TKGS クラスタの名前「tkc-01」を指定。
TKGS クラスタの名前は vSphere 名前空間ごとに一意になるので、「--tanzu-kubernetes-cluster-name」だけでなく、名前空間「--tanzu-kubernetes-cluster-namespace」も指定する必要があります。
kubectl vsphere login \ --server=192.168.131.34 \ -u [email protected] \ --tanzu-kubernetes-cluster-namespace=demo-ns-01 \ --tanzu-kubernetes-cluster-name=tkc-01 \ --insecure-skip-tls-verify
kubectl で実際にログインして成功すると、TKG クラスタと同名のコンテキスト(下記の例では tkc-01)が作成されます。
$ export KUBECTL_VSPHERE_PASSWORD='VMware1!' $ kubectl vsphere login --server=192.168.131.34 -u [email protected] --tanzu-kubernetes-cluster-namespace=demo-ns-01 --tanzu-kubernetes-cluster-name=tkc-01 --insecure-skip-tls-verify Logged in successfully. You have access to the following contexts: 192.168.131.34 demo-ns-01 tkc-01 If the context you wish to use is not in this list, you may need to try logging in again later, or contact your cluster administrator. To change context, use `kubectl config use-context <workload name>`
ここからは、TKGS のコンテキストに切り替えまて作業します。
$ kubectl config use-context tkc-01 Switched to context "tkc-01".
2. Pod と Service の YAML 作成
TKG クラスタに、ここでは、ドキュメント で紹介されている YAML を利用して、Nginx コンテナの Deployment と Serivce のリソースを作成します。
- ロード バランサ サービスを使用したポッドのデプロイ
https://docs.vmware.com/jp/VMware-vSphere/8.0/vsphere-with-tanzu-tkg/GUID-B6FC3ED6-F0DA-4225-910F-068594A7D73D.html
nginx.yml
3. アプリの展開
アプリを展開する、TKG クラスタ内の Namespace(demo)を作成します。
$ kubectl create ns demo namespace/demo created
ラボ用途むけに、作成した Namespace の、セキュリティ設定を緩和します。
$ kubectl label --overwrite ns demo pod-security.kubernetes.io/enforce=privileged namespace/demo labeled
動作確認用のアプリと見立てて、作成した YAML から Nginx のコンテナを展開します。
$ kubectl apply -f nginx.yml -n demo service/srvclb-ngnx created deployment.apps/loadbalancer created
少し待って、Pod や Service が起動されたことを確認します。LoadBalancer Service によって、EXTERNAL-IP として 192.168.131.37 が割り当てられました。
$ kubectl get all -n demo NAME READY STATUS RESTARTS AGE pod/loadbalancer-74994645d-94smf 1/1 Running 0 2m26s pod/loadbalancer-74994645d-gfbnq 1/1 Running 0 2m26s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/srvclb-ngnx LoadBalancer 198.61.148.77 192.168.131.37 80:31618/TCP 2m29s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/loadbalancer 2/2 2 2 2m28s NAME DESIRED CURRENT READY AGE replicaset.apps/loadbalancer-74994645d 2 2 2 2m28s
これで、Web ブラウザから EXTERNAL-IP アドレスにアクセスすると、Nginx のページが表示されるはずです。
この IP アドレスは、NSX のロードバランサによって提供されています。
NSX Manager の「ネットワーク」タブ →「ネットワーク サービス」→「ロード バランシング」にある、「ロード バランサ」タブを開くと、vSphere 名前空間の名前を含むロード バランサの「仮想サーバ」の数字が増加(1 → 2)しています。
この数字をクリックして、詳細情報を確認します。
仮想サーバに、 EXTERNAL-IP のアドレスが割り当てられていることがわかります。
4. アプリの削除
アプリを削除するには、下記のように kubectl delete コマンドを実行します。
$ kubectl delete -f nginx.yml -n demo
つづく。