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
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" }
Ad alanında
aks-istio-system
adıylaistio-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ıristio-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 , supported
veya blocked
olarak allowed
sı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ğinistio-asm-1-18
) düzenlemeye çalışmadığınızdan emin olun. - ConfigMap adı
istio-shared-configmap-<asm-revision>
izlemeli ve ad alanındaaks-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.
Azure Kubernetes Service