Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Önemli
AKS önizleme özellikleri self servis ve kabul temelinde kullanılabilir. Önizlemeler "olduğu gibi" ve "mevcut olduğu şekilde" sağlanmakta olup, hizmet seviyesi anlaşmalarına ve sınırlı garantilere dahil edilmemektedir. AKS önizlemeleri, müşteri desteği ekibi tarafından maksimum çaba gösterilerek kısmen ele alınmaktadır. Bu nedenle, bu özellikler üretim kullanımı için tasarlanmamıştır. Daha fazla bilgi için aşağıdaki destek makalelerine bakın:
Istio hizmet ağı eklentisi hem Istio'nun kendi giriş trafik yönetimi API'sini hem de giriş trafiği yönetimi için Kubernetes Gateway API'sini destekler. Istio Gateway API'sinin otomatik dağıtım modelini veya el ile dağıtım modelini kullanabilirsiniz. Bu makalede, Otomatik dağıtım modeliyle Kubernetes Gateway API'sini kullanarak Istio hizmet ağı eklentisi için giriş trafiği yönetiminin nasıl yapılandırıldığı açıklanmaktadır.
Sınırlamalar ve Dikkat Edilecek Hususlar
- Istio hizmet mesh eklentisiyle çıkış trafiği yönetimi için Kubernetes Gateway API'sinin kullanılması yalnızca el ile dağıtım modeli için desteklenir.
- Kaynaklar için
GatewayConfigMap özelleştirmeleri Kaynak özelleştirmesine izin ver listesinde yer almalıdır. İzin listesinde olmayan alanlara izin verilmez ve eklenti tarafından yönetilen web bağlantı kancaları aracılığıyla engellenir. Daha fazla bilgi için istio hizmet ağı eklentisi destek ilkesine bakın.
Önkoşullar
- AKS kümenizde Yönetilen Ağ Geçidi API'sini etkinleştirin.
- Istio hizmet ağı eklentisi sürümünü
asm-1-26veya üzerindekini yükleyin. Istio hizmet ağı eklentisi henüz yüklü değilse yükleme kılavuzunu veya daha düşük bir ikincil düzeltme kullanıyorsanız yükseltme kılavuzunu izleyin.
Ortam değişkenlerini belirleme
Bu makale boyunca kullanılacak aşağıdaki ortam değişkenlerini ayarlayın:
| Variable | Description |
|---|---|
RESOURCE_GROUP |
AKS kümenizi içeren kaynak grubunun adı. |
CLUSTER_NAME |
AKS kümenizin adı. |
LOCATION |
AKS kümenizin dağıtıldığı Azure bölgesi. |
KEY_VAULT_NAME |
TLS gizli dizilerini depolamak için oluşturulacak Azure Key Vault kaynağının adı. Mevcut bir kaynağınız varsa bu adı kullanın. |
Örnek uygulamayı dağıtın
kubectl applykomutunu kullanarakdefaultad alanındahttpbinörnek uygulamayı dağıtın.kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.26/samples/httpbin/httpbin.yaml
Kubernetes Gateway ve HTTPRoute oluşturma
Örnek bildirim, küme dışından erişilebilen bir dış giriş yük dengeleyici hizmeti oluşturur. İç yük dengeleyici oluşturmak ve diğer yük dengeleyici ayarlarını özelleştirmek için ek açıklamalar ekleyebilirsiniz.
Aşağıdaki bildirimi kullanarak,
defaultad alanındaistioayarlanan veHTTPRouteile trafiğihttpbinhizmetine yönlendiren bir Ağ Geçidi API yapılandırmasını dağıtın:kubectl apply -f - <<EOF apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: name: httpbin-gateway spec: gatewayClassName: istio listeners: - name: http port: 80 protocol: HTTP allowedRoutes: namespaces: from: Same --- apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: http namespace: default spec: parentRefs: - name: httpbin-gateway hostnames: ["httpbin.example.com"] rules: - matches: - path: type: PathPrefix value: /get backendRefs: - name: httpbin port: 8000 EOFUyarı
Alt düzeltme yükseltmesi gerçekleştiriyorsanız ve kümenizde aynı anda iki Istio hizmet mesh eklenti düzeltmesi yüklüyse, daha yüksek olan alt düzeltmeye ait denetim düzlemi varsayılan olarak
Gateways'in sahipliğini alır. Kontrol düzlemi revizyonlarından hangisinin onu sahiplendiğini kontrol etmek içinistio.io/revetiketiniGatewayöğesine ekleyebilirsiniz. Düzeltme etiketini eklerseniz, geri dönmeden veya yükseltme işlemini tamamlamadan önce uygun kontrol düzlemi düzeltmesine uygun şekilde güncelleştirdiğinizden emin olun.
Kaynak oluşturmayı doğrulama
,
Deployment,ServiceveHorizontalPodAutoscalerkaynaklarınınPodDisruptionBudgetaşağıdakikubectl getkomutlar kullanılarak oluşturulduğunu doğrulayın:kubectl get deployment httpbin-gateway-istio kubectl get service httpbin-gateway-istio kubectl get hpa httpbin-gateway-istio kubectl get pdb httpbin-gateway-istioÖrnek çıkış:
# Deployment resource NAME READY UP-TO-DATE AVAILABLE AGE httpbin-gateway-istio 2/2 2 2 31m # Service resource NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE httpbin-gateway-istio LoadBalancer 10.0.65.45 <external-ip> 15021:32053/TCP,80:31587/TCP 33m # HPA resource NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE httpbin-gateway-istio Deployment/httpbin-gateway-istio cpu: 3%/80% 2 5 3 34m # PDB resource NAME MIN AVAILABLE MAX UNAVAILABLE ALLOWED DISRUPTIONS AGE httpbin-gateway-istio 1 N/A 2 36m
Örnek uygulamaya istek gönderme
curlisteğinihttpbinuygulamasına göndermeyi deneyin. İlk olarak ortam değişkeniniINGRESS_HOSTayarlayın:kubectl wait --for=condition=programmed gateways.gateway.networking.k8s.io httpbin-gateway export INGRESS_HOST=$(kubectl get gateways.gateway.networking.k8s.io httpbin-gateway -ojsonpath='{.status.addresses[0].value}')adresine bir HTTP isteği göndermeyi
httpbindeneyin.curl -s -I -HHost:httpbin.example.com "http://$INGRESS_HOST/get"Çıktıda bir
HTTP 200yanıt görmeniz gerekir.
Kubernetes Gateway API'siyle Istio giriş trafiğinin güvenliğini sağlama
Istio hizmet ağı eklentisi, Aktarım Katmanı Güvenliği (TLS) sonlandırma veya Sunucu Adı Göstergesi (SNI) geçişi ile Ağ Geçidi API tabanlı giriş trafiğinin güvenliğini sağlamak için Azure Key Vault'tan gizli anahtarların eşitlenmesini destekler. Aşağıdaki bölümlerde, Azure Key Vault'taki gizli dizileri Secrets Store CSI Sürücüsü eklentisi için Azure Key Vault sağlayıcısını kullanarak AKS kümenize senkronize eder ve TLS, giriş ağ geçidinde sonlandırılır.
İstemci/sunucu sertifikaları ve anahtarları oluşturma
Örnek hizmetler için sertifikaları imzalamak için bir kök sertifika ve özel anahtar oluşturun:
mkdir httpbin_certs openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -subj '/O=example Inc./CN=example.com' -keyout httpbin_certs/example.com.key -out httpbin_certs/example.com.crtiçin
httpbin.example.combir sertifika ve özel anahtar oluşturun:openssl req -out httpbin_certs/httpbin.example.com.csr -newkey rsa:2048 -nodes -keyout httpbin_certs/httpbin.example.com.key -subj "/CN=httpbin.example.com/O=httpbin organization" openssl x509 -req -sha256 -days 365 -CA httpbin_certs/example.com.crt -CAkey httpbin_certs/example.com.key -set_serial 0 -in httpbin_certs/httpbin.example.com.csr -out httpbin_certs/httpbin.example.com.crt
Azure Key Vault'u ayarlayın ve sırlar oluşturun
komutunu kullanarak
az keyvault createIstio hizmet ağı eklentisine sertifika ve anahtar girişleri sağlamak için bir Azure Key Vault örneği oluşturun. Zaten bir Azure Key Vault örneğiniz varsa bu adımı atlayabilirsiniz.az keyvault create --name $KEY_VAULT_NAME --resource-group $RESOURCE_GROUP --location $LOCATIONkomutunu kullanarak kümenizde Gizli Dizi Deposu (CSI) Sürücüsü eklentisi için Azure Key Vault sağlayıcısını
az aks enable-addonsetkinleştirin.az aks enable-addons --addons azure-keyvault-secrets-provider --resource-group $RESOURCE_GROUP --name $CLUSTER_NAMEAnahtar kasanız izin modeli için Azure rol tabanlı erişim denetimi (RBAC) kullanıyorsa, eklentinin kullanıcı tarafından atanan yönetilen kimliği için Key Vault Gizli Dizileri Kullanıcısı'nın Azure rolünü atamak üzere Azure rol tabanlı erişim denetimiyle Azure Key Vault anahtarlarına, sertifikalarına ve gizli dizilerine erişim sağlama başlığındaki yönergeleri izleyin. Alternatif olarak, anahtar kasanızın kasa erişim ilkesi izinleri modelini kullanması durumunda,
az keyvault set-policykomutunu kullanarak, eklentinin kullanıcı tarafından atanan yönetilen kimliğini Azure Key Vault kaynağına erişim için yetkilendirin.OBJECT_ID=$(az aks show --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --query 'addonProfiles.azureKeyvaultSecretsProvider.identity.objectId' -o tsv | tr -d '\r') CLIENT_ID=$(az aks show --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --query 'addonProfiles.azureKeyvaultSecretsProvider.identity.clientId') TENANT_ID=$(az keyvault show --resource-group $RESOURCE_GROUP --name $KEY_VAULT_NAME --query 'properties.tenantId') az keyvault set-policy --name $KEY_VAULT_NAME --object-id $OBJECT_ID --secret-permissions get listAşağıdaki
az keyvault secret setkomutlarını kullanarak sertifikalar ve anahtarlar ile Azure Key Vault'ta gizli bilgiler oluşturun.az keyvault secret set --vault-name $KEY_VAULT_NAME --name test-httpbin-key --file httpbin_certs/httpbin.example.com.key az keyvault secret set --vault-name $KEY_VAULT_NAME --name test-httpbin-crt --file httpbin_certs/httpbin.example.com.crt
SecretProviderClass ve örnek bir pod’u dağıtın
Aşağıdaki bildirimi kullanarak CSI sürücüsüne Azure Key Vault'a özgü parametreler sağlamak için SecretProviderClass'ı dağıtın. Bu örnekte
test-httpbin-keyvetest-httpbin-crtAzure Key Vault'taki gizli nesnelerin adlarıdır.cat <<EOF | kubectl apply -f - apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: httpbin-credential-spc spec: provider: azure secretObjects: - secretName: httpbin-credential type: kubernetes.io/tls data: - objectName: test-httpbin-key key: tls.key - objectName: test-httpbin-crt key: tls.crt parameters: useVMManagedIdentity: "true" userAssignedIdentityID: $CLIENT_ID keyvaultName: $KEY_VAULT_NAME cloudName: "" objects: | array: - | objectName: test-httpbin-key objectType: secret objectAlias: "test-httpbin-key" - | objectName: test-httpbin-crt objectType: secret objectAlias: "test-httpbin-crt" tenantId: $TENANT_ID EOFUyarı
Alternatif olarak, doğrudan Azure Key Vault'tan bir sertifika nesne türüne başvurmak için SecretProviderClass'ı dağıtmak için aşağıdaki bildirimi kullanın. Bu örnekte,
test-httpbin-cert-pxfAzure Key Vault'taki sertifika nesnesinin adıdır.cat <<EOF | kubectl apply -f - apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: httpbin-credential-spc spec: provider: azure secretObjects: - secretName: httpbin-credential type: kubernetes.io/tls data: - objectName: test-httpbin-key key: tls.key - objectName: test-httpbin-crt key: tls.crt parameters: useVMManagedIdentity: "true" userAssignedIdentityID: $CLIENT_ID keyvaultName: $KEY_VAULT_NAME cloudName: "" objects: | array: - | objectName: test-httpbin-cert-pfx #certificate object name from keyvault objectType: secret objectAlias: "test-httpbin-key" - | objectName: test-httpbin-cert-pfx #certificate object name from keyvault objectType: cert objectAlias: "test-httpbin-crt" tenantId: $TENANT_ID EOFAşağıdaki bildirimi kullanarak örnek bir pod dağıtın. Sırlar Deposu (CSI) Sürücüsü için Azure Key Vault sağlayıcısı, sırların Azure Key Vault'tan kümeye eşitlenmesini sağlamak amacıyla bir podun SecretProviderClass kaynağına başvurmasını gerektirir.
cat <<EOF | kubectl apply -f - apiVersion: v1 kind: Pod metadata: name: secrets-store-sync-httpbin spec: containers: - name: busybox image: mcr.microsoft.com/oss/busybox/busybox:1.33.1 command: - "/bin/sleep" - "10" volumeMounts: - name: secrets-store01-inline mountPath: "/mnt/secrets-store" readOnly: true volumes: - name: secrets-store01-inline csi: driver: secrets-store.csi.k8s.io readOnly: true volumeAttributes: secretProviderClass: "httpbin-credential-spc" EOF
TLS gizli anahtar oluşturulmasını doğrulama
httpbin-credentialkomutunu kullanarak, SecretProviderClass kaynağında tanımlandığı şekildedefaultad alanında gizli anahtarın oluşturulup oluşturulmadığını doğrulayın.kubectl describe secret/httpbin-credentialÖrnek çıkış:
Name: httpbin-credential Namespace: default Labels: secrets-store.csi.k8s.io/managed=true Annotations: <none> Type: kubernetes.io/tls Data ==== tls.crt: 1180 bytes tls.key: 1675 bytes
TLS Ağ Geçidi Dağıtın
Aşağıdaki bildirimi kullanarak
httpbin-credentialsırrına başvuran, TLS yapılandırması altında bir Kubernetes Ağ Geçidi oluşturun.cat <<EOF | kubectl apply -f - apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: name: httpbin-gateway spec: gatewayClassName: istio listeners: - name: https hostname: "httpbin.example.com" port: 443 protocol: HTTPS tls: mode: Terminate certificateRefs: - name: httpbin-credential allowedRoutes: namespaces: from: Selector selector: matchLabels: kubernetes.io/metadata.name: default EOFUyarı
Ağ geçidi tanımında,
tls.certificateRefs.nameIn SecretProviderClass kaynağıylasecretNameeşleşmelidir.Aşağıdaki bildirimi kullanarak HTTPS üzerinden
httpbinservisine giriş trafiğini yönlendirmek için karşılık gelen birHTTPRouteyapılandırın.cat <<EOF | kubectl apply -f - apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: httpbin spec: parentRefs: - name: httpbin-gateway hostnames: ["httpbin.example.com"] rules: - matches: - path: type: PathPrefix value: /status - path: type: PathPrefix value: /delay backendRefs: - name: httpbin port: 8000 EOFAşağıdaki komutları kullanarak giriş ağ geçidinin dış IP adresini ve güvenli bağlantı noktasını alın:
kubectl wait --for=condition=programmed gateways.gateway.networking.k8s.io httpbin-gateway export INGRESS_HOST=$(kubectl get gateways.gateway.networking.k8s.io httpbin-gateway -o jsonpath='{.status.addresses[0].value}') export SECURE_INGRESS_PORT=$(kubectl get gateways.gateway.networking.k8s.io httpbin-gateway -o jsonpath='{.spec.listeners[?(@.name=="https")].port}')Hizmete erişmek
httpbiniçin bir HTTPS isteği gönderin:curl -v -HHost:httpbin.example.com --resolve "httpbin.example.com:$SECURE_INGRESS_PORT:$INGRESS_HOST" \ --cacert httpbin_certs/example.com.crt "https://httpbin.example.com:$SECURE_INGRESS_PORT/status/418"Çıkışta
httpbinhizmetin 418 I'm a Teapot kodunu döndürdüğünü göstermelidir.Uyarı
HTTPS hizmetine HTTPS giriş erişimini yapılandırmak için ağ geçidi tanımındaki TLS modunu olarak
Passthroughgüncelleştirin. Bu yapılandırma, ağ geçidine TLS'yi sonlandırmadan giriş trafiğini olduğu gibi geçirmesini bildirir.
Açıklama özelleştirmeleri
spec.infrastructure.annotations altına yük dengeleyici ayarlarını yapılandırmak içinGateway. Örneğin, belirli bir alt ağa bağlı bir iç yük dengeleyici oluşturmak için aşağıdaki ek açıklamalarla bir Gateway oluşturabilirsiniz:
spec:
# ... existing spec content ...
infrastructure:
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
service.beta.kubernetes.io/azure-load-balancer-internal-subnet: "my-subnet"
ConfigMap özelleştirmeleri
Istio servis ağı eklentisi, oluşturulan kaynaklar için Gateways özelleştirmeleri destekler:
- Hizmet
- Dağıtım
- Yatay Pod Otomatik Ölçeklendiricisi (HPA)
- Pod Kesintisi Bütçesi (PDB)
Bu kaynakların varsayılan ayarları ad alanında ConfigMap'te istio-gateway-class-defaults ayarlanıraks-istio-system. Bu ConfigMap'in etiketi, gateway.istio.io/defaults-for-class ile tüm istio için özelleştirmelerin etkili olması amacıyla Gateways etiketine spec.gatewayClassName: istio olarak ayarlanmalıdır.
GatewayClass-seviyesinde ConfigMap, aks-istio-system etkinleştirildiğinde ad alanına varsayılan olarak yüklenir. Yönetilen Ağ Geçidi API'leri istio-gateway-class-defaults CRD'lerini yükledikten sonra ConfigMap'in dağıtılma süresi beş dakika kadar sürebilir.
kubectl get configmap istio-gateway-class-defaults -n aks-istio-system -o yaml
...
data:
horizontalPodAutoscaler: |
spec:
minReplicas: 2
maxReplicas: 5
podDisruptionBudget: |
spec:
minAvailable: 1
...
ConfigMap'i güncelleyerek tüm Istio GatewaysGatewayClass düzeyinde bu ayarları değiştirebilir veya bunları tek tek Gateway kaynaklar için ayarlayabilirsiniz. Hem GatewayClass-level hem de Gateway-level ConfigMaps için, verilen kaynağın izin verilenler listesine alanlar eklemelisiniz. Eğer hem GatewayClass hem de tek bir Gateway için özelleştirmeler varsa, Gateway seviyesindeki yapılandırma önceliklidir.
Dağıtım özelleştirme izin listesi alanları
| Alan yolu | Description |
|---|---|
metadata.labels |
Dağıtım etiketleri |
metadata.annotations |
Dağıtım ek açıklamaları |
spec.replicas |
Dağıtım replika sayısı |
spec.template.metadata.labels |
Pod etiketleri |
spec.template.metadata.annotations |
Pod ek açıklamaları |
spec.template.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms |
Düğüm benzitesi |
spec.template.spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution |
Düğüm benzitesi |
spec.template.spec.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution |
Pod benzimliği |
spec.template.spec.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution |
Pod benzimliği |
spec.template.spec.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution |
Pod benzeşimi önleme |
spec.template.spec.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution |
Pod benzeşimi önleme |
spec.template.spec.containers.resizePolicy |
Kapsayıcı kaynak kullanımı |
spec.template.spec.containers.resources.limits |
Kapsayıcı kaynak kullanımı |
spec.template.spec.containers.resources.requests |
Kapsayıcı kaynak kullanımı |
spec.template.spec.containers.stdin |
Kapsayıcı hata ayıklama |
spec.template.spec.containers.stdinOnce |
Kapsayıcı hata ayıklama |
spec.template.spec.nodeSelector |
Pod zamanlama |
spec.template.spec.nodeName |
Pod zamanlama |
spec.template.spec.tolerations |
Pod zamanlama |
spec.template.spec.topologySpreadConstraints |
Pod zamanlama |
Hizmet özelleştirme izin listesi alanları
| Alan yolu | Description |
|---|---|
metadata.labels |
Hizmet etiketleri |
metadata.annotations |
Hizmet açıklama notları |
spec.type |
Hizmet türü |
spec.loadBalancerSourceRanges |
Hizmet yük dengeleyici ayarları |
spec.loadBalancerClass |
Hizmet yük dengeleyici ayarları |
spec.externalTrafficPolicy |
Hizmet trafiği ilkesi |
spec.internalTrafficPolicy |
Hizmet trafiği ilkesi |
HorizontalPodAutoscaler (HPA) özelleştirmesi izin listesi alanları
| Alan yolu | Description |
|---|---|
metadata.labels |
HPA etiketleri |
metadata.annotations |
HPA ek açıklamaları |
spec.behavior.scaleUp.stabilizationWindowSeconds |
HPA ölçek genişletme davranışı |
spec.behavior.scaleUp.selectPolicy |
HPA ölçek genişletme davranışı |
spec.behavior.scaleUp.policies |
HPA ölçek genişletme davranışı |
spec.behavior.scaleDown.stabilizationWindowSeconds |
HPA ölçeği azaltma davranışı |
spec.behavior.scaleDown.selectPolicy |
HPA ölçeği azaltma davranışı |
spec.behavior.scaleDown.policies |
HPA ölçeği azaltma davranışı |
spec.metrics |
HPA kaynak ölçümlerini ölçeklendirme |
spec.minReplicas |
HPA asgari replika sayısı. 2'nin altında olmamalıdır. |
spec.maxReplicas |
HPA maksimum kopya sayısı |
PodDisruptionBudget (PDB) özelleştirmesi izin verilen liste alanları
| Alan yolu | Description |
|---|---|
metadata.labels |
PDB etiketleri |
metadata.annotations |
PDB ek açıklamaları |
spec.minAvailable |
PDB minimum düzeyde kullanılabilirlik |
spec.unhealthyPodEvictionPolicy |
PDB çıkarma politikası |
Uyarı
En düşük kullanılabilirlik ve çıkarma ilkesinin PDB değiştirilmesi, küme/düğüm yükseltme ve silme işlemleri sırasında olası hatalara yol açabilir. Çıkarma hatalarından kaynaklanan UpgradeFailed hatalarını gidermek için PDB izleyin.
GatewayClass düzeyi ayarlarını yapılandırma
GatewayClasskomutunukubectl edit configmapkullanarakaks-istio-systemadlı namespace'indeaks-istio-system-level ConfigMap'i güncelleyin.kubectl edit cm istio-gateway-class-defaults -n aks-istio-systemBölümdeki
datakaynak ayarlarını gerektiği gibi düzenleyin. Örneğin, HPA min/maks çoğaltmaları güncellemek veDeploymentöğesine etiket eklemek için ConfigMap'i aşağıdaki gibi değiştirebilirsiniz:... data: deployment: | metadata: labels: test.azureservicemesh.io/deployment-config: "updated" horizontalPodAutoscaler: | spec: minReplicas: 3 maxReplicas: 6 podDisruptionBudget: | spec: minAvailable: 1 ...Uyarı
GatewayClassiçin yalnızca bir tane ConfigMap'e izin verilir.Artık, daha önce oluşturduğunuz
httpbin-gatewayiçinHPA’in yeni min/maks değerlerle güncellendiğini görmelisiniz.HPAkomutunu kullanarakkubectl get hpaayarları doğrulayın.kubectl get hpa httpbin-gateway-istioÖrnek çıkış:
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE httpbin-gateway-istio Deployment/httpbin-gateway-istio cpu: 3%/80% 3 6 3 36mDeploymentkomutunu kullanarakkubectl get deploymentyeni etiketle güncelleştirildiğinden emin olun.kubectl get deployment httpbin-gateway-istio -ojsonpath='{.metadata.labels.test\.azureservicemesh\.io\/deployment-config}'Örnek çıkış:
updated
Belirli bir ağ geçidi için ayarları yapılandırma
Aşağıdaki bildirimi kullanarak Ağ Geçidi için
httpbinkaynak özelleştirmeleri içeren bir ConfigMap oluşturun:kubectl apply -f - <<EOF apiVersion: v1 kind: ConfigMap metadata: name: gw-options data: horizontalPodAutoscaler: | spec: minReplicas: 2 maxReplicas: 4 deployment: | metadata: labels: test.azureservicemesh.io/deployment-config: "updated-per-gateway" EOFConfigMap'i referans almak için
httpbinGatewaygüncelleyin :spec: # ... existing spec content ... infrastructure: parametersRef: group: "" kind: ConfigMap name: gw-optionskomutunu kullanarak
kubectl applygüncelleştirmeyi uygulayın.kubectl apply -f httpbin-gateway-updated.yamlHPAdeğerinin yeni min/maks değerlerle güncellenmiş olduğundankubectl get hpakomutunu kullanarak emin olun. EğerGatewayClassseviyesi ConfigMap'i de yapılandırdıysanız,Gatewayseviyesi ayarları öncelikli olmalıdır.kubectl get hpa httpbin-gateway-istioÖrnek çıkış:
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE httpbin-gateway-istio Deployment/httpbin-gateway-istio cpu: 3%/80% 2 4 2 4h14mDeploymentkomutunu kullanaraktest.azureservicemesh.io/deployment-configyeni değerekubectl get deploymentgüncelleştirildiğinden emin olmak için etiketleri inceleyin.kubectl get deployment httpbin-gateway-istio -ojsonpath='{.metadata.labels.test\.azureservicemesh\.io\/deployment-config}'Örnek çıkış:
updated-per-gateway
Kaynakları temizle
Bu makalede oluşturulan kaynaklara artık ihtiyacınız yoksa, ücret ödememek için bunları silebilirsiniz.
Aşağıdaki
kubectl deletekomutları kullanarak Ağ Geçidi ve HTTPRoute kaynaklarını silin:kubectl delete gateways.gateway.networking.k8s.io httpbin-gateway kubectl delete httproute httpbinKomutunu kullanarak
kubectl delete configmap, Ağ Geçidi kaynaklarınızı özelleştirmek için oluşturduğunuz ConfigMap'i silin.kubectl delete configmap gw-optionsTLS sonlandırması için kullanılacak bir SecretProviderClass ve gizli dizi oluşturduysanız aşağıdaki
kubectl deletekomutları kullanarak kaynakları silin:kubectl delete secret httpbin-credential kubectl delete pod secrets-store-sync-httpbin kubectl delete secretproviderclass httpbin-credential-spc