ASM ağ geçitleri, sorunsuz bir yükseltme deneyimi için canary yükseltmeyi destekler. Bu konu, tüm ağ geçidi pod'ları yükseltilmeden önce trafiği doğrulamanıza olanak tanımak amacıyla yeni sürümde tek bir pod'un nasıl başlatıldığını göstermek için bir ASM örneğinin yerinde yükseltmesini örnek alır.
Önkoşullar
ASM örneği ve sürümü — Bir kümeyi bir ASM örneğine eklediğinizden ve ASM sürümünün 1.20 veya üzeri olduğundan emin olun. Bir ASM örneğini yükseltme talimatları için bkz. Bir ASM örneğini yükseltme.
Giriş ağ geçidi — Bir giriş ağ geçidi oluşturduğunuzu doğrulayın.
Korumalı kapatma — Yükseltmeyi yapmadan önce ağ geçidi için korumalı kapatmayı etkinleştirin. Bu işlem, yükseltme sırasında trafik kaybı riskini en aza indirir. Talimatlar için bkz. Trafik kaybını önlemek için korumalı kapatmayı etkinleştirme.
Canary Dağıtımı ile ad çakışması olmaması — Ağ geçidinin ad alanında, ağ geçidi Dağıtımının adına
-canarysoneki eklenmiş adla aynı ada sahip bir Dağıtım bulunmadığından emin olun. Örneğin, ağ geçidiingressgatewayolarak adlandırılmışsa,istio-systemad alanındaistio-ingressgateway-canaryadında bir Dağıtım olmadığından emin olun.Veri düzlemi erişimi — Veri düzlemi kümesine karşı kubectl komutlarını çalıştırabilmeniz için veri düzleminin KubeConfig dosyasını edinin.
Bir ağ geçidi canary yükseltmesinin çalışma şekli
Hizmet trafiği için tek giriş ve çıkış noktası olan bir ağ geçidi, sıkı kullanılabilirlik gereksinimlerini karşılamalıdır. Canary yükseltme, iş sürekliliğini korumanıza yardımcı olur. Ağ geçidi yapılandırmasını değiştirerek öncelikle yeni sürümü çalıştıran bir ağ geçidi pod'u başlatır ve bu pod üzerindeki trafiği doğrularsınız. Ağ geçidi, yalnızca doğrulama başarılı olduktan sonra tamamen yükseltilir. Doğrulama sırasında herhangi bir sorun oluşursa, bu yeni pod'u istediğiniz zaman silebilir ve sorunu çözdükten sonra yükseltmeye devam edebilirsiniz.
Bir ASM ağ geçidinin canary yükseltmesi, bir ASM örneğinin canary yükseltmesiyle aynı değildir. ASM örneğinde yerinde yükseltme mi yoksa canary yükseltme mi yaptığınızdan bağımsız olarak ASM ağ geçidinin canary yükseltmesi kullanılabilir.
ASM'de kontrol düzlemi yükseltmesi ve veri düzlemi yükseltmesi ayrı işlemlerdir. Veri düzlemi, kontrol düzlemi yükseltmesi tamamlandıktan sonra yükseltilebilir.
Bir ağ geçidi canary yükseltmesi, geçerli kontrol düzlemi sürümüyle eşleşen tek çoğaltmalı bir Dağıtım oluşturur. Bu Dağıtım Canary Dağıtımı olarak adlandırılır ve yönettiği tek pod canary pod'udur. Canary Dağıtımı, ağ geçidinin orijinal Dağıtımıyla aynı Hizmet'e aittir. Farklı olarak, adı orijinal Dağıtımın adına -canary sonekinin eklenmesiyle oluşur.
Ağ geçidinin ad alanında aynı ada ve -canary sonekine sahip bir Dağıtım zaten varsa, bu Dağıtımın üzerine yazılmaz.
Aşağıdaki her iki ASM örneği yükseltme yolu da ağ geçidi canary yükseltmesini destekler. Başlamadan önce yolunuzu belirleyin:
Bir ASM örneğinin yerinde yükseltmesi — Kontrol düzlemi yükseltmesi tamamlandıktan sonra ağ geçidi hala önceki sürümü çalıştırır. Bu konudaki 1. Adımı 4. Adıma kadar uygulayın.
Bir ASM örneğinin canary yükseltmesi — Bu konudaki 1. Adım uygulanmaz. Bir ASM örneğinin canary yükseltmesi sırasında, yeni sürümü varsayılan kontrol düzlemine geçirdikten sonra ağ geçidi yükseltme bekliyor durumundadır. Ağ geçidi için bir canary pod'u dağıtmak, trafiği doğrulamak ve doğrulama başarılı olduktan sonra ağ geçidini yükseltmek için 2. Adımdan devam edin.
1. Adım: Kontrol düzlemini yükseltme
ASM konsoluna giriş yapın. Sol gezinme bölmesinde seçeneğini belirleyin.
Mesh Management sayfasında ASM örneğinin adını tıklayın. Sol gezinme bölmesinde seçeneğini belirleyin.
-
Upgrade Management sayfasında, In-place Upgrades sekmesinde Perform Upgrade Precheck öğesini tıklayın. Note iletişim kutusunda OK öğesini tıklayın.
NotSayfa Currently, it is the latest version and does not need to be upgraded. mesajını görüntülerse, hizmet kafesi zaten en son sürümdedir ve yükseltilemez.
Yükseltme ön denetimi başarılı olduktan sonra Upgrade öğesini tıklayın. Note iletişim kutusunda OK öğesini tıklayın.
2. Adım: ASM ağ geçidi için bir canary pod'u dağıtma
Bir ASM ağ geçidi için canary pod'u dağıtmak üzere, ASM ağ geçidinin YAML dosyasındaki metadata alanı altındaki annotations bölümüne asm.alibabacloud.com/enable-canary-deployment: "true" açıklamasını ekleyin. Bunun için ASM konsolunu veya kubectl komut satırını kullanabilirsiniz.
Yöntem 1: ASM konsolunu kullanma
ASM konsoluna giriş yapın. Sol gezinme bölmesinde seçeneğini belirleyin.
Mesh Management sayfasında ASM örneğinin adını tıklayın. Sol gezinme bölmesinde seçeneğini belirleyin.
Ingress Gateway sayfasında, hedef ağ geçidinin sağındaki View YAML seçeneğini tıklayın. Edit iletişim kutusunda açıklamayı ekleyin ve ardından OK öğesini tıklayın.
Yöntem 2: kubectl komutunu kullanma
-
ASM ağ geçidinin YAML dosyasını açmak için aşağıdaki komutu çalıştırın.
kubectl edit IstioGateway <YOUR-INGRESSGATEWAY-NAME> -n istio-system Açıklamayı eklemek için YAML dosyasını düzenleyin ve ardından dosyayı kaydedin.
Aşağıdaki örnek YAML dosyası, açıklamanın eklendiği bir ASM ağ geçidi yapılandırmasını göstermektedir. Sonuç, her iki yöntem için de aynıdır.
apiVersion: istio.alibabacloud.com/v1beta1
kind: IstioGateway
metadata:
labels:
asm-gateway-type: ingress
annotations:
asm.alibabacloud.com/enable-canary-deployment: "true" # Add this annotation.
name: ingressgateway
namespace: istio-system
spec:
clusterIds:
- xxxxxxxxxxxxxx
disableContainerPortExposed: true
dnsPolicy: ClusterFirst
externalTrafficPolicy: Local
gatewayType: ingress
ports:
- name: http-0
port: 80
protocol: HTTP
targetPort: 80
replicaCount: 1
resources:
limits:
cpu: '2'
memory: 4G
requests:
cpu: 200m
memory: 256Mi
rollingMaxSurge: 25%
rollingMaxUnavailable: 25%
serviceAnnotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain: 'on'
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain-timeout: '10'
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type: PayByCLCU
service.beta.kubernetes.io/alicloud-loadbalancer-address-type: internet
serviceType: LoadBalancer
Canary pod'unu ve trafiğini doğrulama
Açıklamayı eklemek için kullandığınız yöntemden bağımsız olarak aşağıdaki adımları uygulayın.
-
Dağıtılan Canary Dağıtımını görüntülemek için veri düzleminin KubeConfig dosyasını kullanarak aşağıdaki komutu çalıştırın. Bu örnekte ağ geçidi adı
ingressgatewayolarak verilmiştir. Kendi senaryonuza göre bunu değiştirin.kubectl -n istio-system get deployment | grep ingressgatewayBeklenen çıktı:
istio-ingressgateway 1/1 1 1 10m istio-ingressgateway-canary 1/1 1 1 55s-canarysonekine sahip Dağıtım, Canary Dağıtımıdır. Hazır çoğaltmalarının yukarıdaki çıktıda gösterildiği gibi1/1değerine ulaşmasını bekleyin. -
Canary pod'u hazır hale geldikten sonra, trafiğin bir kısmı canary pod'una yönlendirilir. Ağ geçidine ulaşan trafiğin normal olup olmadığını kontrol edin.
Trafik normal ise ağ geçidini yükseltmek için 3. Adımla devam edin. Trafik anormal ise aşağıdaki bölümde açıklandığı şekilde canary pod'unu geri alın.
Doğrulama başarısız olursa geri alma
Ağ geçidine ulaşan trafik anormal ise aşağıdaki adımları uygulayın:
Ağ geçidi günlüklerini kaydedin.
Yapılandırdığınız
asm.alibabacloud.com/enable-canary-deployment: "true"açıklamasını silin. Canary pod'u silinir ve tüm trafik önceki sürümü çalıştıran ağ geçidi pod'larına yönlendirilir.Sorunu çözdükten sonra canary pod'unu yeniden dağıtmak için açıklamayı tekrar ekleyin ve ardından trafiği yeniden doğrulayın.
3. Adım: Doğrulama başarılı olduktan sonra ağ geçidini yükseltme
ASM konsoluna giriş yapın. Sol gezinme bölmesinde seçeneğini belirleyin.
Mesh Management sayfasında ASM örneğinin adını tıklayın. Sol gezinme bölmesinde seçeneğini belirleyin.
Data Plane bölümünde, Upgrade sütununda hedef ağ geçidini seçin ve Upgrade Gateway öğesini tıklayın. Note iletişim kutusunda OK öğesini tıklayın ve ağ geçidi yükseltmesinin tamamlanmasını bekleyin.
4. Adım: Canary pod'unu silme
Ağ geçidi yükseltmesi tamamlandıktan sonra, 2. Adımda eklediğiniz açıklamayı silin. Canary pod'u otomatik olarak silinir. Sonucu onaylamak için ağ geçidinin ad alanındaki Dağıtımları tekrar görüntüleyin ve -canary sonekine sahip Dağıtımın artık mevcut olmadığını kontrol edin.
Canary pod'u her zaman kontrol düzleminin sürümünü takip eder. Silmezseniz, kontrol düzlemini bir sonraki yükseltişinizde canary pod'u da kontrol düzlemiyle birlikte yükseltilir.