マルチクラスタHello World Helidon
Hello World Helidonの例は、起動されると、"Hello World"レスポンスを返すHelidonベースのサービスです。サンプル・アプリケーションは、Open Application Model (OAM)コンポーネントとアプリケーション構成YAMLファイルを使用して指定され、それらのファイルを適用してデプロイされます。このサンプルは、アプリケーションの配置を別のクラスタに変更する方法も示しています。
始める前に
ここの手順に従って、1つの管理クラスタおよび1つの管理対象クラスタでマルチクラスタVerrazzanoインストールを作成し、管理対象クラスタを登録します。
管理クラスタおよび管理対象クラスタのkubeconfigファイルを指すように、次の環境変数を設定します。
$ export KUBECONFIG_ADMIN=/path/to/your/adminclusterkubeconfig
$ export KUBECONFIG_MANAGED1=/path/to/your/managedclusterkubeconfig
ノート: Hello World Helidonアプリケーションのデプロイメント・ファイルは、<VERRAZZANO_HOME>/examples/multicluster/hello-helidon
にあるVerrazzanoプロジェクトに含まれています(<VERRAZZANO_HOME>
はVerrazzanoプロジェクトのルートです)。
アプリケーション・ネームスペースの作成
アプリケーションのネームスペースを定義する管理クラスタにVerrazzanoProjectリソースを適用します。VerrazzanoProjectリソースで定義されたネームスペースは、管理クラスタおよびすべての管理対象クラスタで作成されます。
$ kubectl --kubeconfig $KUBECONFIG_ADMIN apply \
-f https://raw.githubusercontent.com/verrazzano/verrazzano/v1.6.11/examples/multicluster/hello-helidon/verrazzano-project.yaml
アプリケーションのデプロイ
-
hello-helidon
マルチクラスタ・アプリケーション構成リソースを適用して、アプリケーションをデプロイします。マルチクラスタ・リソースは、OAMリソースとデプロイするクラスタのリストを含むエンベロープです。$ kubectl --kubeconfig $KUBECONFIG_ADMIN apply \ -f https://raw.githubusercontent.com/verrazzano/verrazzano/v1.6.11/examples/multicluster/hello-helidon/hello-helidon-comp.yaml $ kubectl --kubeconfig $KUBECONFIG_ADMIN apply \ -f https://raw.githubusercontent.com/verrazzano/verrazzano/v1.6.11/examples/multicluster/hello-helidon/mc-hello-helidon-app.yaml
-
管理対象クラスタでアプリケーションの準備ができるまで待ちます。
$ kubectl --kubeconfig $KUBECONFIG_MANAGED1 wait \ --for=condition=Ready pods \ --all -n hello-helidon \ --timeout=300s
サンプル・アプリケーションの探索
単一クラスタ例のHello World Helidonアプリケーションの探索の手順に従います。サンプル・アプリケーションをテストするには、管理対象クラスタのkubeconfigファイルを使用します。
デプロイされたアプリケーションの確認
単一クラスタ例のHello World Helidonアプリケーションのトラブルシューティングの手順に従います。サンプル・アプリケーションをトラブルシューティングするには、管理対象クラスタのkubeconfigファイルを使用します。
-
アプリケーション・ネームスペースが管理対象クラスタに存在することを確認します。
$ kubectl --kubeconfig $KUBECONFIG_MANAGED1 get namespace hello-helidon
-
アプリケーションのマルチクラスタ・リソースが存在することを確認します。
$ kubectl --kubeconfig $KUBECONFIG_MANAGED1 get MultiClusterApplicationConfiguration -n hello-helidon
別のクラスタへのアプリケーションの配置
デフォルトでは、アプリケーションはmanaged1
という管理対象クラスタにあります。アプリケーションの場所を別のクラスタ(管理クラスタまたは別の管理対象クラスタ)に変更できます。この例では、マルチクラスタ・リソースにパッチを適用して、アプリケーションの配置を管理クラスタに変更します。
-
アプリケーションの場所を管理クラスタに変更するには、配置変更パッチ・ファイルを指定します。
# To change the placement to the admin cluster $ export CHANGE_PLACEMENT_PATCH_FILE="https://raw.githubusercontent.com/verrazzano/verrazzano/v1.6.11/examples/multicluster/hello-helidon/patch-change-placement-to-admin.yaml"
この環境変数は以降のステップで使用されます。
-
配置を変更するには、
hello-helidon
マルチクラスタ・アプリケーション構成にパッチを適用します。$ kubectl --kubeconfig $KUBECONFIG_ADMIN patch mcappconf hello-helidon-appconf \ -n hello-helidon \ --type merge \ --patch "$(curl -s $CHANGE_PLACEMENT_PATCH_FILE)" # Expected response multiclusterapplicationconfiguration.clusters.verrazzano.io/hello-helidon-appconf patched
-
配置が変更されたことを確認するには、マルチクラスタ・リソースを表示します。
$ kubectl --kubeconfig $KUBECONFIG_ADMIN get mcappconf hello-helidon-appconf \ -n hello-helidon \ -o jsonpath='{.spec.placement}';echo # Expected response {"clusters":[{"name":"local"}]}
クラスタ名
local
は、管理クラスタ内の配置を示します。 -
配置を変更するには、VerrazzanoProjectにパッチを適用します。
$ kubectl --kubeconfig $KUBECONFIG_ADMIN patch vp hello-helidon \ -n verrazzano-mc \ --type merge \ --patch "$(curl -s $CHANGE_PLACEMENT_PATCH_FILE)" # Expected response verrazzanoproject.clusters.verrazzano.io/hello-helidon patched
-
管理クラスタでアプリケーションの準備ができるまで待ちます。
$ kubectl --kubeconfig $KUBECONFIG_ADMIN wait \ --for=condition=Ready pods \ --all -n hello-helidon \ --timeout=300s
ノート: アプリケーションを管理対象クラスタに戻す場合は、かわりに管理対象クラスタでアプリケーションの準備ができるまで待ちます。
$ kubectl --kubeconfig $KUBECONFIG_MANAGED1 wait \ --for=condition=Ready pods \ --all -n hello-helidon \ --timeout=300s
-
これで、新しい場所で実行されているサンプル・アプリケーションをテストできます。
managed1
という名前の管理対象クラスタにアプリケーションを戻すには、CHANGE_PLACEMENT_PATCH_FILE
環境変数の値を、その目的のために提供されたパッチ・ファイルに設定し、前の番号付きステップを繰り返します。# To change the placement back to the managed cluster named managed1 $ export CHANGE_PLACEMENT_PATCH_FILE="https://raw.githubusercontent.com/verrazzano/verrazzano/v1.6.11/examples/multicluster/hello-helidon/patch-return-placement-to-managed1.yaml"
アプリケーションのアンデプロイ
場所に関係なく、アプリケーションをアンデプロイするには、アプリケーション・リソースとプロジェクトを管理クラスタから削除します。アンデプロイは、アプリケーションが配置されているすべてのクラスタに影響します。
-
アプリケーションをアンデプロイするには、Hello World Helidon OAMリソースを削除します。
$ kubectl --kubeconfig $KUBECONFIG_ADMIN delete \ -f https://raw.githubusercontent.com/verrazzano/verrazzano/v1.6.11/examples/multicluster/hello-helidon/mc-hello-helidon-app.yaml $ kubectl --kubeconfig $KUBECONFIG_ADMIN delete \ -f https://raw.githubusercontent.com/verrazzano/verrazzano/v1.6.11/examples/multicluster/hello-helidon/hello-helidon-comp.yaml
-
プロジェクトを削除します。
$ kubectl --kubeconfig $KUBECONFIG_ADMIN delete \ -f https://raw.githubusercontent.com/verrazzano/verrazzano/v1.6.11/examples/multicluster/hello-helidon/verrazzano-project.yaml
-
アプリケーション・ポッドの終了後にネームスペース
hello-helidon
を削除します。$ kubectl --kubeconfig $KUBECONFIG_ADMIN delete namespace hello-helidon $ kubectl --kubeconfig $KUBECONFIG_MANAGED1 delete namespace hello-helidon