vm.gowatana.jp

NEOにほんごVMware(仮)

vSphere with Tanzu 8.0 U2 ラボ環境構築。Part-14: TKGS クラスタでのアプリ展開

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 administrator@vsphere.local \
--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 administrator@vsphere.local --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 のリソースを作成します。

 

nginx.yml

gist.github.com

 

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

 

つづく。