Aracılığıyla paylaş


Azure Kubernetes Service için Istio tabanlı hizmet ağı eklentisini yapılandırma

Açık kaynak Istio, Istio hizmet ağı için ağ genelinde ayarlar tanımlamak için MeshConfig kullanır. MeshConfig'in üzerinde AKS derlemeleri için Istio tabanlı hizmet mesh eklentisi ve desteklenen, izin verilen ve engellenen farklı özellikleri sınıflandırır.

Bu makalede, Azure Kubernetes Service için Istio tabanlı hizmet ağı eklentisinin nasıl yapılandırılması ve bu yapılandırma için geçerli olan destek ilkesi açıklanmaktadır.

Önkoşullar

Bu kılavuzda, BIR AKS kümesinde Istio eklentisini etkinleştirmek için belgeleri izlediğiniz varsayılır.

Kümede yapılandırmayı ayarlama

  1. Kümede hangi Istio düzeltmesinin dağıtıldığı hakkında bilgi edinin:

    az aks show --name $CLUSTER --resource-group $RESOURCE_GROUP --query 'serviceMeshProfile'
    

    Çıktı:

    {
      "istio": {
          "certificateAuthority": null,
          "components": {
          "egressGateways": null,
          "ingressGateways": null
          },
          "revisions": [
          "asm-1-18"
          ]
      },
      "mode": "Istio"
    }
    
  2. Ad alanında aks-istio-system adıyla istio-shared-configmap-<asm-revision> bir ConfigMap oluşturun. Örneğin, kümeniz mesh'in asm-1-18 düzeltmesini çalıştırıyorsa, ConfigMap olarak adlandırılmalıdır istio-shared-configmap-asm-1-18. Mesh yapılandırmasının mesh altındaki veri bölümünde sağlanması gerekir.

    Örnek:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: istio-shared-configmap-asm-1-18
      namespace: aks-istio-system
    data:
      mesh: |-
        accessLogFile: /dev/stdout
        defaultConfig:
          holdApplicationUntilProxyStarts: true
    

    altındaki defaultConfig değerler, Envoy sepet ara sunucusu için uygulanan ağ genelindeki ayarlardır.

Dikkat

Istio eklentisi etkinleştirildiğinde kümedeki ad alanında aks-istio-system varsayılan bir ConfigMap (örneğin, istio-asm-1-18 düzeltme asm-1-18 için) oluşturulur. Ancak, bu varsayılan ConfigMap yönetilen Istio eklentisi tarafından uzlaşır ve bu nedenle kullanıcıların bu ConfigMap'i doğrudan DÜZENLEMEMESİ gerekir. Bunun yerine kullanıcılar aks-istio-system ad alanında düzeltmeye özgü bir Istio paylaşılan ConfigMap (örneğin istio-shared-configmap-asm-1-18 , düzeltme asm-1-18) oluşturmalı ve ardından Istio denetim düzlemi bunu varsayılan ConfigMap ile birleştirerek varsayılan ayarların öncelikli olması gerekir.

Mesh yapılandırması ve yükseltmeleri

Istio için kanarya yükseltmesi yaparken, kanarya yükseltmesini başlatmadan önce ad alanında aks-istio-system yeni düzeltme için ayrı bir ConfigMap oluşturmanız gerekir. Bu şekilde yapılandırma, yeni düzeltmenin denetim düzlemi kümeye dağıtıldığında kullanılabilir. Örneğin, ağı asm-1-18'den asm-1-19'a yükseltiyorsanız, ad alanında aks-istio-system adlı istio-shared-configmap-asm-1-19 yeni bir ConfigMap oluşturmak için üzerindeki değişiklikleri istio-shared-configmap-asm-1-18 kopyalamanız gerekir.

Yükseltme tamamlandıktan veya geri alındıktan sonra, kümeden kaldırılan düzeltmenin ConfigMap'ini silebilirsiniz.

İzin verilen, desteklenen ve engellenen MeshConfig değerleri

içindeki MeshConfig alanlar , supportedveya blockedolarak allowedsınıflandırılır. Bu kategoriler hakkında daha fazla bilgi edinmek için Bkz . Istio eklenti özellikleri ve yapılandırma seçenekleri için destek ilkesi .

Mesh yapılandırması ve izin verilen/desteklenen alanların listesi, düzeltmeler arasında eklenen/kaldırılan alanlar için hesaba özgü düzeltmelerdir. İzin verilen alanların ve izin verilenler listesindeki desteklenen/desteklenmeyen alanların tam listesi aşağıdaki tabloda verilmiştir. Yeni mesh düzeltmesi kullanıma sunulduğunda, alanların izin verilen ve desteklenen sınıflandırmasında yapılan tüm değişiklikler bu tabloda not edilir.

MeshConfig

Açık kaynak MeshConfig başvuru belgelerinde bulunan ve aşağıdaki tabloda yer almayan alanlar engellenir. Örneğin, configSources engellenir.

Alan Desteklenen/İzin Verilen Notlar
proxyListenPort İzin Verilir -
proxyInboundListenPort İzin Verilir -
proxyHttpPort İzin Verilir -
connectTimeout İzin Verilir DestinationRule'da yapılandırılabilir
tcpKeepalive İzin Verilir DestinationRule'da yapılandırılabilir
defaultConfig Desteklenir ProxyConfig'i yapılandırmak için kullanılır
outboundTrafficPolicy Desteklenir Sepet CR'de de yapılandırılabilir
extensionProviders İzin Verilir -
defaultProviders İzin Verilir -
accessLogFile Desteklenir Bu alan, erişim günlüklerinin oluşturulmasını ele alır. Günlüklerin toplanması ve sorgulanmasıyla ilgili yönetilen bir deneyim için bkz. AKS üzerinde Azure İzleyici Container Insights. Telemetri API'sini kullanarak erişim günlüğünü yapılandırmaya teşvik edilir.
accessLogFormat Desteklenir Bu alan, erişim günlüklerinin oluşturulmasını ele alır. Günlüklerin toplanması ve sorgulanmasıyla ilgili yönetilen bir deneyim için bkz. AKS üzerinde Azure İzleyici Container Insights
accessLogEncoding Desteklenir Bu alan, erişim günlüklerinin oluşturulmasını ele alır. Günlüklerin toplanması ve sorgulanmasıyla ilgili yönetilen bir deneyim için bkz. AKS üzerinde Azure İzleyici Container Insights
enableTracing İzin Verilir Telemetri API'sini kullanarak izlemeyi yapılandırmaya teşvik edilir.
enableEnvoyAccessLogService Desteklenir Bu alan, erişim günlüklerinin oluşturulmasını ele alır. Günlüklerin toplanması ve sorgulanmasıyla ilgili yönetilen bir deneyim için bkz. AKS üzerinde Azure İzleyici Container Insights
disableEnvoyListenerLog Desteklenir Bu alan, erişim günlüklerinin oluşturulmasını ele alır. Günlüklerin toplanması ve sorgulanmasıyla ilgili yönetilen bir deneyim için bkz. AKS üzerinde Azure İzleyici Container Insights
trustDomain İzin Verilir -
trustDomainAliases İzin Verilir -
caCertificates İzin Verilir DestinationRule'da yapılandırılabilir
defaultServiceExportTo İzin Verilir ServiceEntry'de yapılandırılabilir
defaultVirtualServiceExportTo İzin Verilir VirtualService'te yapılandırılabilir
defaultDestinationRuleExportTo İzin Verilir DestinationRule'da yapılandırılabilir
localityLbSetting İzin Verilir DestinationRule'da yapılandırılabilir
dnsRefreshRate İzin Verilir -
h2UpgradePolicy İzin Verilir DestinationRule'da yapılandırılabilir
enablePrometheusMerge İzin Verilir -
discoverySelectors Desteklenir -
pathNormalization İzin Verilir -
defaultHttpRetryPolicy İzin Verilir VirtualService'te yapılandırılabilir
serviceSettings İzin Verilir -
meshMTLS İzin Verilir -
tlsDefaults İzin Verilir -
ingressService İzin Verilir istio giriş denetleyicisi için kullanılan Kubernetes hizmetinin adı.
ingressSelector İzin Verilir Giriş denetleyicisi olarak kullanılacak ağ geçidi dağıtımını tanımlar. Bu alan Gateway.selector alanına karşılık gelir ve istio: INGRESS_SELECTOR olarak ayarlanır.

ProxyConfig (meshConfig.defaultConfig)

Açık kaynak MeshConfig başvuru belgelerinde bulunan ve aşağıdaki tabloda yer almayan alanlar engellenir.

Alan Desteklenen/İzin Verilen Notlar
tracingServiceName İzin Verilir Telemetri API'sini kullanarak izlemeyi yapılandırmaya teşvik edilir.
drainDuration Desteklenir -
statsUdpAddress İzin Verilir -
proxyAdminPort İzin Verilir -
Izleme İzin Verilir Telemetri API'sini kullanarak izlemeyi yapılandırmaya teşvik edilir.
eşzamanlılık Desteklenir -
envoyAccessLogService İzin Verilir Telemetri API'sini kullanarak izlemeyi yapılandırmaya teşvik edilir.
envoyMetricsService İzin Verilir Telemetri API'sini kullanarak ölçüm toplamayı yapılandırmaya teşvik edilir.
proxyMetadata İzin Verilir -
statusPort İzin Verilir -
extraStatTags İzin Verilir -
proxyStatsMatcher İzin Verilir -
terminationDrainDuration Desteklenir -
meshId İzin Verilir -
holdApplicationUntilProxyStarts Desteklenir -
caCertificatesPem İzin Verilir -
privateKeyProvider İzin Verilir -

Dikkat

Yapılandırmaların destek kapsamı: Mesh yapılandırması, Zipkin veya Apache Skywalking'in kendi kendine yönetilen örnekleri gibi uzantı sağlayıcılarının Istio eklentisiyle yapılandırılmasını sağlar. Ancak, bu uzantı sağlayıcıları Istio eklentisinin destek kapsamının dışındadır. Uzantı araçlarıyla ilişkili tüm sorunlar, Istio eklentisinin destek sınırının dışındadır.

Yaygın hatalar ve sorun giderme ipuçları

  • MeshConfig'in sekmeler yerine boşluklarla girintilendiğinden emin olun.
  • Yalnızca düzeltmeye özgü paylaşılan ConfigMap'i (örneğin istio-shared-configmap-asm-1-18) düzenlediğinize ve varsayılan ConfigMap'i (örneğin istio-asm-1-18) düzenlemeye çalışmadığınızdan emin olun.
  • ConfigMap adı istio-shared-configmap-<asm-revision> izlemeli ve ad alanında aks-istio-system olmalıdır.
  • Tüm MeshConfig alanlarının doğru yazıldığından emin olun. Tanınmayanlar veya izin verilenler listesinin bir parçası değilse, erişim denetimi bu tür yapılandırmaları reddeder.
  • Kanarya yükseltmeleri gerçekleştirirken, kümenizde dağıtılan düzeltmeler için yapılandırmaların mevcut olduğundan emin olmak için düzeltmeye özgü ConfigMap'lerinizi denetleyin.
  • AccessLogging gibi bazı MeshConfig seçenekler Envoy'un kaynak tüketimini artırabilir ve bu ayarlardan bazılarının devre dışı bırakılması Istio veri düzlemi kaynak kullanımını azaltabilir. Ayrıca, Istiod ve Envoy için bellek tüketimini azaltmaya yardımcı olması için MeshConfig'deki alanın kullanılması discoverySelectors önerilir.
  • concurrency MeshConfig içindeki alan yanlış yapılandırılmış ve sıfır olarak ayarlanmışsa, Envoy'un tüm CPU çekirdeklerini kullanmasına neden olur. Bu alan ayarlanmamışsa, çalıştırılacak çalışan iş parçacığı sayısı CPU isteklerine/sınırlarına göre otomatik olarak belirlenir.
  • Uygulamanın Envoy'un öncesinde başladığı pod ve sepet yarış koşulları MeshConfig'deki alan kullanılarak holdApplicationUntilProxyStarts azaltılabilir.