事前準備
ローカルロードバランシングタスクを開始する前に、まず複数のクラスタにIstioをインストールする必要があります。クラスタは3つのリージョンにまたがり、4つの可用性ゾーンを含む必要があります。必要なクラスタの数は、クラウドプロバイダーが提供する機能によって異なる場合があります。
HelloWorld
アプリケーションの複数のインスタンスを以下のようにデプロイします。
環境変数
このガイドでは、すべてのクラスタがデフォルトのKubernetes設定ファイル内のコンテキストを通じてアクセスされると仮定します。様々なコンテキストには、以下の環境変数を使用します。
変数 | 説明 |
---|---|
CTX_PRIMARY | プライマリクラスタに設定を適用するために使用されるコンテキスト。 |
CTX_R1_Z1 | region1.zone1 内のPodと対話するために使用されるコンテキスト。 |
CTX_R1_Z2 | region1.zone2 内のPodと対話するために使用されるコンテキスト。 |
CTX_R2_Z3 | region2.zone3 内のPodと対話するために使用されるコンテキスト。 |
CTX_R3_Z4 | region3.zone4 内のPodと対話するために使用されるコンテキスト。 |
sample
名前空間の作成
最初に、自動サイドカーインジェクションが有効になっているsample
名前空間のYAMLを生成します。
$ cat <<EOF > sample.yaml
apiVersion: v1
kind: Namespace
metadata:
name: sample
labels:
istio-injection: enabled
EOF
各クラスタにsample
名前空間を追加します。
$ for CTX in "$CTX_PRIMARY" "$CTX_R1_Z1" "$CTX_R1_Z2" "$CTX_R2_Z3" "$CTX_R3_Z4"; \
do \
kubectl --context="$CTX" apply -f sample.yaml; \
done
HelloWorld
のデプロイ
ローカルをバージョン文字列として使用して、各ローカルのHelloWorld
YAMLを生成します。
$ for LOC in "region1.zone1" "region1.zone2" "region2.zone3" "region3.zone4"; \
do \
./@samples/helloworld/gen-helloworld.sh@ \
--version "$LOC" > "helloworld-${LOC}.yaml"; \
done
各ローカルに対応する適切なクラスタにHelloWorld
YAMLを適用します。
$ kubectl apply --context="${CTX_R1_Z1}" -n sample \
-f helloworld-region1.zone1.yaml
$ kubectl apply --context="${CTX_R1_Z2}" -n sample \
-f helloworld-region1.zone2.yaml
$ kubectl apply --context="${CTX_R2_Z3}" -n sample \
-f helloworld-region2.zone3.yaml
$ kubectl apply --context="${CTX_R3_Z4}" -n sample \
-f helloworld-region3.zone4.yaml
curl
のデプロイ
curl
アプリケーションをregion1
zone1
にデプロイします。
$ kubectl apply --context="${CTX_R1_Z1}" \
-f @samples/curl/curl.yaml@ -n sample
HelloWorld
ポッドの待機
各ゾーンのHelloWorld
PodがRunning
になるまで待ちます。
$ kubectl get pod --context="${CTX_R1_Z1}" -n sample -l app="helloworld" \
-l version="region1.zone1"
NAME READY STATUS RESTARTS AGE
helloworld-region1.zone1-86f77cd7b-cpxhv 2/2 Running 0 30s
$ kubectl get pod --context="${CTX_R1_Z2}" -n sample -l app="helloworld" \
-l version="region1.zone2"
NAME READY STATUS RESTARTS AGE
helloworld-region1.zone2-86f77cd7b-cpxhv 2/2 Running 0 30s
$ kubectl get pod --context="${CTX_R2_Z3}" -n sample -l app="helloworld" \
-l version="region2.zone3"
NAME READY STATUS RESTARTS AGE
helloworld-region2.zone3-86f77cd7b-cpxhv 2/2 Running 0 30s
$ kubectl get pod --context="${CTX_R3_Z4}" -n sample -l app="helloworld" \
-l version="region3.zone4"
NAME READY STATUS RESTARTS AGE
helloworld-region3.zone4-86f77cd7b-cpxhv 2/2 Running 0 30s
おめでとうございます! システムの設定が完了し、ローカルロードバランシングタスクを開始する準備ができました!
次のステップ
以下のロードバランシングオプションのいずれかを設定できます。