ACK One Fleet uygulama dağıtımını kullanarak uygulamaları ilişkili kümelere PropagationPolicy ile dağıtın — Git depoları gerekmez.
Şunları yapacaksınız:
Bir Fleet örneğinde uygulama oluşturun
Çoklu küme dağıtımı için bir PropagationPolicy tanımlayın
(İsteğe bağlı) Küme başına özelleştirme için OverridePolicy uygulayın
Dağıtılan kaynakları doğrulayın, güncelleyin ve temizleyin
Ön koşullar
Aşağıdakilerin hazır olduğundan emin olun:
Çoklu küme yönetimi etkinleştirilmiştir.
Birden çok küme Fleet örneğiyle ilişkilendirilmiştir.
kubectl, ACK One konsolundan indirilen kubeconfig kullanılarak Fleet örneğine bağlanmıştır.
AliyunAdcpFullAccessilkesi Resource Access Management (RAM) kullanıcınıza atanmıştır.AMC komut satırı aracı yüklenmiştir.
(İsteğe bağlı) 1. Adım: Fleet örneğinde ad alanı oluşturma
Fleet örneğinde yoksa ad alanını oluşturun.
demo adlı bir ad alanı oluşturun:
kubectl create namespace demo
2. Adım: Fleet örneğinde uygulama oluşturma
Fleet; ConfigMap'leri, Deployment'ları ve Service'leri dağıtır. Bu örnekte bir NGINX Deployment kullanılır.
-
Aşağıdaki içeriğe sahip
web-demo.yamldosyasını oluşturun:apiVersion: apps/v1 kind: Deployment metadata: namespace: demo name: web-demo spec: replicas: 3 selector: matchLabels: app: web-demo template: metadata: labels: app: web-demo spec: containers: - name: nginx image: registry-cn-hangzhou.ack.aliyuncs.com/acs/web-demo:0.5.0 ports: - containerPort: 80 -
Uygulamayı dağıtın:
kubectl apply -f web-demo.yaml
3. Adım: Uygulamayı dağıtmak için PropagationPolicy oluşturma
PropagationPolicy, hangi kaynakların hangi kümelere dağıtılacağını tanımlar. Uygulandığında denetleyici, eşleşen kaynakları hedef kümelere otomatik olarak iter.
Bu örnekte Deployment iki kümeye Duplicated modunda dağıtılır; her küme üç çoğaltmayı bağımsız olarak çalıştırır.
-
Üye küme kimliklerini alın:
kubectl get mclÇıktı şuna benzer:
NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx true True True 3d23h cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx true True True 5d21h -
Aşağıdaki içeriğe sahip
propagationpolicy.yamldosyasını oluşturun.${cluster1-id}ve${cluster2-id}değerlerini küme kimliklerinizle değiştirin.ClusterPropagationPolicyküme kapsamındaki kaynakları (örneğin Namespaces) dağıtır.PropagationPolicyise ad alanı kapsamındaki kaynakları dağıtır ve yalnızca kendi ad alanı içinde seçim yapar.apiVersion: policy.one.alibabacloud.com/v1alpha1 kind: ClusterPropagationPolicy metadata: name: web-demo spec: resourceSelectors: - apiVersion: v1 kind: Namespace name: demo placement: clusterAffinity: clusterNames: - ${cluster1-id} # The ID of your cluster. - ${cluster2-id} # The ID of your cluster. replicaScheduling: replicaSchedulingType: Duplicated --- apiVersion: policy.one.alibabacloud.com/v1alpha1 kind: PropagationPolicy metadata: name: web-demo namespace: demo spec: preserveResourcesOnDeletion: true # When true, deleting resources from the Fleet instance keeps them in the member cluster. Set to false to delete them together. resourceSelectors: - apiVersion: apps/v1 kind: Deployment name: web-demo namespace: demo placement: clusterAffinity: clusterNames: - ${cluster1-id} # The ID of your cluster. - ${cluster2-id} # The ID of your cluster. replicaScheduling: replicaSchedulingType: DuplicatedTemel parametreler aşağıda listelenmiştir. Parametrelerin tamamı için bkz. PropagationPolicy.
Parametre Açıklama Örnek resourceSelectorsDağıtılacak kaynaklar. apiVersion,kind,name,namespaceveyalabelSelectorile eşleştirin.demoad alanındakiweb-demoDeployment'ını seçin.placement.clusterAffinityDağıtım için hedef kümeler. Küme adları yerine küme kimliklerini girin. ${cluster1-id},${cluster2-id}replicaScheduling.replicaSchedulingTypeZamanlama modu. Duplicated, tam çoğaltma sayısını (spec.replicastarafından tanımlanan) her kümeye kopyalar.Duplicated -
PropagationPolicy'yi uygulayın:
kubectl apply -f propagationpolicy.yaml
(İsteğe bağlı) 4. Adım: Küme başına yapılandırmayı özelleştirmek için OverridePolicy oluşturma
OverridePolicy, dağıtımdan önce kaynak yapılandırmasını değiştirerek ayarları tek tek kümelere göre uyarlamaya olanak tanır.
Bu örnek ${cluster2-id} için iki değişiklik uygular:
replicasdeğerini3değerinden1değerine düşürürGörüntüye kayıt defteri ön eki ekler
OverridePolicy uygulanmadan önce, ${cluster2-id} üzerindeki Deployment şu özelliklere sahiptir:
spec:
replicas: 3
...
containers:
- image: registry-cn-hangzhou.ack.aliyuncs.com/acs/web-demo:0.5.0
OverridePolicy uygulandıktan sonra, ${cluster2-id} üzerindeki Deployment şu hale gelir:
spec:
replicas: 1
...
containers:
- image: {{Registry}}/registry-cn-hangzhou.ack.aliyuncs.com/acs/web-demo:0.5.0
-
Aşağıdaki içeriğe sahip
overridepolicy.yamldosyasını oluşturun:apiVersion: policy.one.alibabacloud.com/v1alpha1 kind: OverridePolicy metadata: name: example namespace: demo spec: resourceSelectors: - apiVersion: apps/v1 kind: Deployment name: web-demo overrideRules: - targetCluster: clusterNames: - ${cluster2-id} overriders: plaintext: - operator: replace path: /spec/replicas value: 1 imageOverrider: - component: Registry operator: add value: {{Registry}}Temel parametreler aşağıda listelenmiştir. Parametrelerin tamamı için bkz. OverridePolicy.
Parametre Açıklama Örnek resourceSelectorsGeçersiz kılınacak kaynaklar. apiVersion,kind,name,namespaceveyalabelSelectorile eşleştirin.web-demoDeployment'ını seçin.overrideRules.plaintextKaynak alanlarını JSONPatch ile geçersiz kılın. operator,pathvevaluedeğerlerini ayarlayın.spec.replicasdeğerini1olarak değiştirin.overrideRules.imageOverriderGörüntü bileşenlerini geçersiz kılın: Registry,RepositoryveyaVersion.Görüntüye kayıt defteri ön eki ekleyin. -
OverridePolicy'yi uygulayın:
kubectl apply -f overridepolicy.yaml
5. Adım: Dağıtım durumunu görüntüleme
Uygulamanın tüm üye kümelere dağıtılıp dağıtılmadığını kontrol edin:
kubectl amc get deploy -ndemo -M
Çıktı şuna benzer:
NAME CLUSTER READY UP-TO-DATE AVAILABLE AGE ADOPTION
web-demo cxxxxxxxxxxxxx 3/3 3 3 3d4h Y
web-demo cxxxxxxxxxxxxx 3/3 3 3 3d4h Y
READY: 3/3 ve ADOPTION: Y değerleri, uygulamanın her kümede çalıştığını doğrular.
6. Adım: Uygulamayı güncelleme
-
replicasdeğerini4olarak artırmak içinweb-demo.yamldosyasını güncelleyin:apiVersion: apps/v1 kind: Deployment metadata: namespace: demo name: web-demo spec: replicas: 4 selector: matchLabels: app: web-demo template: metadata: labels: app: web-demo spec: containers: - name: nginx image: registry-cn-hangzhou.ack.aliyuncs.com/acs/web-demo:0.5.0 ports: - containerPort: 80 -
Güncellenen bildirimi uygulayın:
kubectl apply -f web-demo.yaml -
Yayılımın tüm kümelere gerçekleştiğini doğrulayın:
kubectl amc get deploy -ndemo -MÇıktı şuna benzer:
NAME CLUSTER READY UP-TO-DATE AVAILABLE AGE ADOPTION web-demo cxxxxxxxxxxxxx 4/4 4 4 3d4h Y web-demo cxxxxxxxxxxxxx 4/4 4 4 3d4h YREADY: 4/4değeri, her iki kümenin de güncellendiğini doğrular.
7. Adım: Uygulama kaynaklarını silme
Varsayılan olarak, bir uygulamayı veya PropagationPolicy'yi Fleet örneğinden kaldırmak, kaynakları üye kümelerden silmez.
Kaynakları üye kümelerden silmek için:
-
ClusterPropagationPolicyiçindepreserveResourcesOnDeletiondeğerinifalseolarak ayarlayın:apiVersion: policy.one.alibabacloud.com/v1alpha1 kind: ClusterPropagationPolicy metadata: name: web-demo spec: preserveResourcesOnDeletion: false resourceSelectors: - apiVersion: apps/v1 kind: Deployment name: web-demo - apiVersion: v1 kind: Namespace name: demo placement: clusterAffinity: clusterNames: - ${cluster1-id} # The ID of your cluster. - ${cluster2-id} # The ID of your cluster. replicaScheduling: replicaSchedulingType: Duplicated -
Güncellenen ilkeyi uygulayın:
kubectl apply -f propagationpolicy.yaml -
Uygulama kaynaklarını silin:
kubectl delete -f web-demo.yaml -
Üye kümelerden kaldırıldığını doğrulayın:
kubectl amc get deploy -ndemo -MÇıktı şuna benzer:
cluster(cxxxxxxxxxxxxx): deployments.apps "web-demo" not found cluster(cxxxxxxxxxxxxx): deployments.apps "web-demo" not found
Başvurular
Dağıtılan uygulamaları izleyin: İzleme yönetimi
Bölge felaket kurtarma uygulayın: ACK One'da bölge felaket kurtarma uygulamak için MSE çoklu küme ağ geçitlerini kullanma
Tam parametre başvurusu: PropagationPolicy ve OverridePolicy