はじめに
前回に引き続きAzure Kubernetes Fleet Managerの利用方法です。
-
Azure Kubernetes Fleet Manager でクラスタ間を連携する - 技術的な何か。
はじめに Kubernetesでクラスタ間での連携する場合にはマルチクラスタや、サービスメッシュが思い浮かぶと思います。ASKではAzure Kubernetes Fleet Managerという機能
level69.net
Fleet Managerを追加したので次はアプリケーションを展開していきます。
環境変数
前回構築した環境を環境変数に設定します。
export GROUP= export FLEET= export MEMBER_CLUSTER_1=aks-member-1 export MEMBER_CLUSTER_2=aks-member-2 export MEMBER_CLUSTER_3=aks-member-3 az fleet get-credentials --resource-group ${GROUP} --name ${FLEET} --file fleet az aks get-credentials --resource-group ${GROUP} --name ${MEMBER_CLUSTER_1} --file aks-member-1 az aks get-credentials --resource-group ${GROUP} --name ${MEMBER_CLUSTER_2} --file aks-member-2 az aks get-credentials --resource-group ${GROUP} --name ${MEMBER_CLUSTER_3} --file aks-member-3
デプロイ
デプロイするネームスペースを作成します。
KUBECONFIG=fleet kubectl create namespace hello-world
crp.yamlにClusterResourcePlacementを作成します。
fleet.azure.com/location: eastusを指定することでeastusだけに展開されるようになります。
apiVersion: fleet.azure.com/v1alpha1 kind: ClusterResourcePlacement metadata: name: hello-world spec: resourceSelectors: - group: "" version: v1 kind: Namespace name: hello-world policy: affinity: clusterAffinity: clusterSelectorTerms: - labelSelector: matchLabels: fleet.azure.com/location: eastus
デプロイします。
KUBECONFIG=fleet kubectl apply -f crp.yaml
成功を確認します。
KUBECONFIG=fleet kubectl get clusterresourceplacements
結果
NAME GEN SCHEDULED SCHEDULEDGEN APPLIED APPLIEDGEN AGE hello-world 1 True 1 True 1 24s
各クラスターを確認
# KUBECONFIG=aks-member-1 kubectl get namespace hello-world NAME STATUS AGE hello-world Active 35s # KUBECONFIG=aks-member-2 kubectl get namespace hello-world NAME STATUS AGE hello-world Active 47s # KUBECONFIG=aks-member-3 kubectl get namespace hello-world Error from server (NotFound): namespaces "hello-world" not found
複数のリージョンを追加する場合には2行指定することで展開されます。
apiVersion: fleet.azure.com/v1alpha1 kind: ClusterResourcePlacement metadata: name: hello-world spec: resourceSelectors: - group: "" version: v1 kind: Namespace name: hello-world policy: affinity: clusterAffinity: clusterSelectorTerms: - labelSelector: matchLabels: fleet.azure.com/location: eastus fleet.azure.com/location: westus
全てに展開したい場合にはpolicyを削除すると良いです。
上記ではリージョンを指定しましたが次はクラスターを指定します。
ネームスペースを作成します。
KUBECONFIG=fleet kubectl create namespace hello-world-1
下記のClusterResourcePlacementを作成します。
apiVersion: fleet.azure.com/v1alpha1 kind: ClusterResourcePlacement metadata: name: hello-world-1 spec: resourceSelectors: - group: "" version: v1 kind: Namespace name: hello-world-1 policy: clusterNames: - aks-member-1
クラスターを追加する場合にはPolicyに追加します。
まとめ
アプリケーションをデプロイを紹介しました。簡単ですね。Fleet managerを利用はシンプルなようです。