はじめに
前回に引き続きAzure Kubernetes Fleet Managerの利用方法です。
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を利用はシンプルなようです。
