Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Důležité
Funkce AKS ve verzi Preview jsou k dispozici na bázi samoobsluhy a dobrovolného přihlášení. Ukázky jsou poskytovány "jak jsou" a "podle aktuální dostupnosti" a jsou vyloučené ze smluv o úrovni služeb a omezené záruky. Předběžné verze AKS jsou částečně pokryty zákaznickou podporou podle možností. Proto tyto funkce nejsou určené pro produkční použití. Další informace najdete v následujících článcích podpory:
Doplněk Istio Service Mesh podporuje jak rozhraní API pro správu příchozího přenosu dat Istio , tak rozhraní API brány Kubernetes pro správu příchozího přenosu dat. Můžete použít model automatizovaného nasazení rozhraní API služby Istio Gateway nebo model ručního nasazení. Tento článek popisuje, jak nakonfigurovat správu příchozího provozu pro doplněk Istio Service Mesh pomocí rozhraní API brány Kubernetes s modelem automatizovaného nasazení.
Omezení a úvahy
- Doplněk síťové architektury Istio a implementace rozhraní API pro směrování aplikací není možné povolit současně. Nejprve je nutné jednu zakázat a povolit druhou v samostatné operaci.
- Použití rozhraní API brány Kubernetes pro správu odchozího provozu pomocí doplňku Istio je podporováno pouze pro model ručního nasazení.
- Přizpůsobení ConfigMap pro
Gatewayzdroje musí být zahrnuta v seznamu povolených přizpůsobení zdrojů. Pole, která nejsou v povoleném seznamu, jsou zakázaná a blokovaná prostřednictvím webhooků spravovaných doplňkem. Další informace o funkcích ,allowedablockednaleznete vsupported. - Konfigurace příchozího přístupu HTTPS ke službám HTTPS – tj. průchozí režim pro Server Name Indication (SNI) prostřednictvím
TLSRouteprostředku se v současné době nepodporuje.
Požadavky
- Povolte spravované rozhraní API brány v clusteru AKS.
- Nainstalujte doplněk Istio
asm-1-26nebo novější verzi Service Mesh. Pokud ještě nemáte nainstalovaný doplněk Istio Service Mesh, postupujte podle pokynů k instalaci nebo průvodce upgradem , pokud používáte nižší dílčí revizi.
Nastavení proměnných prostředí
V tomto článku nastavte následující proměnné prostředí:
| Variable | Description |
|---|---|
RESOURCE_GROUP |
Název skupiny prostředků, která obsahuje váš AKS cluster. |
CLUSTER_NAME |
Název clusteru AKS |
LOCATION |
Oblast Azure, ve které je cluster AKS nasazený. |
KEY_VAULT_NAME |
Název prostředku Azure Key Vault, který se má vytvořit pro ukládání tajných kódů TLS. Pokud máte existující prostředek, použijte tento název. |
Nasazení ukázkové aplikace
Nejprve nasaďte ukázkovou aplikaci
httpbinv oboru názvůdefaultpomocí příkazukubectl apply.export ISTIO_RELEASE="release-1.27" kubectl apply -f https://raw.githubusercontent.com/istio/istio/$ISTIO_RELEASE/samples/httpbin/httpbin.yaml
Vytvořit Kubernetes Gateway a HTTPRoute
Ukázkový manifest vytvoří externí službu pro vyrovnávání zatížení příchozího provozu, která je přístupná mimo cluster. Přidáním poznámek můžete vytvořit interní nástroj pro vyrovnávání zatížení a přizpůsobit další nastavení nástroje pro vyrovnávání zatížení.
Nasaďte konfiguraci API brány v rámci oboru názvů
defaultsgatewayClassNamenastaveným naistioaHTTPRoutepro směrování provozu ke služběhttpbinpoužitím následujícího manifestu: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: httpbin spec: parentRefs: - name: httpbin-gateway hostnames: ["httpbin.example.com"] rules: - matches: - path: type: PathPrefix value: /get backendRefs: - name: httpbin port: 8000 EOFPoznámka:
Ve výchozím nastavení řídicí rovina Istio připojí název
GatewayClassk názvu prostředků, které zřizuje proistio. K vašemu prostředkuGatewaymůžete připojit poznámkygateway.istio.io/name-override, abyste přepsali název zřízených prostředků. Názvy prostředků musí být menší než63znaky a musí to být platný název DNS.Poznámka:
Pokud provádíte menší upgrade revizí a současně máte v clusteru nainstalované dvě revize sítě služeb Istio, řídicí rovina pro vyšší menší revizi ve výchozím nastavení převezme vlastnictví
Gateways. Můžete přidat popisekistio.io/revkGateway, aby bylo jasné, kterou revizi řídicí roviny vlastní. Pokud přidáte popisek revize, před vrácením zpět nebo dokončením operace upgradu ho aktualizujte odpovídajícím způsobem na příslušnou revizi řídicí roviny.
Ověření vytváření prostředků
Ověřte, že
Deployment,Service,HorizontalPodAutoscaleraPodDisruptionBudgetzdroje byly vytvořeny pomocí následujících příkazůkubectl get:kubectl get deployment httpbin-gateway-istio kubectl get service httpbin-gateway-istio kubectl get hpa httpbin-gateway-istio kubectl get pdb httpbin-gateway-istioPříklad výstupu:
# 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
Odeslání požadavku do ukázkové aplikace
Zkuste odeslat
curlžádost dohttpbinaplikace. Nejprve nastavte proměnnouINGRESS_HOSTprostředí: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}')Zkuste odeslat požadavek HTTP na
httpbinadresu .curl -s -I -HHost:httpbin.example.com "http://$INGRESS_HOST/get"Ve výstupu by se měla zobrazit
HTTP 200odpověď.
Zabezpečte příchozí provoz Istio pomocí rozhraní API brány Kubernetes
Doplněk Istio Service Mesh podporuje synchronizaci tajných kódů z Azure Key Vault pro zabezpečení příchozího přenosu dat založeného na rozhraní API brány s ukončením protokolu TLS (Transport Layer Security. V následujících částech synchronizujete tajné kódy z Azure Key Vault do clusteru AKS pomocí zprostředkovatele Azure Key Vault pro doplněk Ovladače úložiště kontejnerů úložiště tajných klíčů (CSI) a ukončete protokol TLS v bráně příchozího přenosu dat.
Vytvoření certifikátů a klíčů klienta/serveru
Vytvořte kořenový certifikát a privátní klíč pro podepisování certifikátů pro ukázkové služby:
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.crtVygenerujte certifikát a privátní klíč pro
httpbin.example.com: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
Nastavení Azure Key Vault a vytvoření tajných kódů
Pomocí příkazu
az keyvault createvytvořte instanci Azure Key Vault pro zadání vstupu certifikátu a klíče do doplňku Istio service mesh. Pokud už máte instanci Azure Key Vault, můžete tento krok přeskočit.az keyvault create --name $KEY_VAULT_NAME --resource-group $RESOURCE_GROUP --location $LOCATIONPovolte zprostředkovatele Azure Key Vault pro doplněk Ovladače úložiště tajných dat (CSI) ve vašem clusteru pomocí příkazu
az aks enable-addons.az aks enable-addons --addons azure-keyvault-secrets-provider --resource-group $RESOURCE_GROUP --name $CLUSTER_NAMEPokud váš Key Vault pro model oprávnění používá Azure řízení přístupu na základě role (RBAC), postupujte podle pokynů v Provide access to Azure Key Vault keys, certificates, and secrets with Azure role-based access control a přiřaďte Azure roli Uživatel tajemství Key Vault pro spravovanou identitu uživatelsky přiřazeného doplňku. Pokud váš klíčový trezor používá model oprávnění zásad přístupu, autorizujte uživatelem přiřazenou spravovanou identitu doplňku k přístupu k prostředku Azure Key Vault pomocí zásady přístupu příkazem
az keyvault set-policy.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 listPomocí certifikátů a klíčů vytvořte tajné kódy v Azure Key Vault pomocí následujících příkazů
az keyvault secret set: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
Nasazení třídy SecretProviderClass a ukázkového podu
Nasaďte SecretProviderClass pro poskytnutí Azure Key Vault konkrétních parametrů pro ovladač CSI pomocí následujícího manifestu. V tomto příkladu jsou
test-httpbin-keyatest-httpbin-crtnázvy tajných objektů v Azure Key Vault.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 EOFPoznámka:
Pokud chcete odkazovat na typ objektu certifikátu přímo z Azure Key Vault, použijte k nasazení SecretProviderClass následující manifest. V tomto příkladu je
test-httpbin-cert-pfxnázev objektu certifikátu v Azure Key Vault.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 EOFNasaďte ukázkový pod s využitím následujícího manifestu. Zprostředkovatel Azure Key Vault pro doplněk ovladače úložiště tajemství (CSI) vyžaduje pod, který odkazuje na prostředek SecretProviderClass, aby zajistil synchronizaci tajemství z Azure Key Vault do clusteru.
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
Ověření vytvoření tajného klíče TLS
Ověřte, že byl vytvořen tajný klíč
httpbin-credentialv oboru názvůdefault, jak je definováno v prostředku SecretProviderClass, pomocí příkazukubectl describe secret.kubectl describe secret/httpbin-credentialPříklad výstupu:
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
Nasazení brány TLS
Pomocí následujícího manifestu vytvořte bránu Kubernetes, která odkazuje na
httpbin-credentialtajný klíč v konfiguraci protokolu TLS: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 EOFPoznámka:
V definici
tls.certificateRefs.namebrány musí odpovídatsecretNameprostředku SecretProviderClass.Pomocí následujícího manifestu vytvořte odpovídající
HTTPRoutekonfiguraci směrování příchozího přenosu dat dohttpbinslužby přes PROTOKOL HTTPS: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 EOFPomocí následujících příkazů získejte externí IP adresu brány příchozího přenosu dat a zabezpečený port:
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}')Odešlete požadavek HTTPS pro přístup ke službě
httpbin: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"Výstup by měl ukázat, že služba
httpbinvrací kód 418 I'm a Teapot.Poznámka:
Pokud chcete nakonfigurovat přístup příchozího přenosu dat HTTPS ke službě HTTPS, aktualizujte režim TLS v definici brány na
Passthrough. Tato konfigurace dává bráně pokyn, aby předávala příchozí provoz tak, jak je, aniž by ukončoval protokol TLS.
Přizpůsobení poznámek
Můžete přidat poznámky pod spec.infrastructure.annotationskonfigurovat nastavení nástroje pro vyrovnávání zatížení pro nástroj Gateway. Pokud například chcete vytvořit interní nástroj pro vyrovnávání zatížení připojený ke konkrétní podsíti, můžete vytvořit Gateway následující poznámky:
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"
Přizpůsobení objektu ConfigMap
Doplněk Istio Service Mesh podporuje přizpůsobení prostředků generovaných pro službu Gateways, včetně:
- Service
- Nasazení
- Horizontální automatické škálování podů (HPA)
- Rozpočet přerušení podů (PDB)
Výchozí nastavení pro tyto prostředky jsou nastavena v objektu istio-gateway-class-defaults ConfigMap v aks-istio-system oboru názvů, který je vytvořen službou AKS, když jsou povoleny spravované CRD API brány společně s Istio doplňkem. Tento objekt ConfigMap musí mít popisek gateway.istio.io/defaults-for-class nastaven na istio, aby se přizpůsobení projevila pro všechny Gateways s spec.gatewayClassName: istio. Objekt ConfigMap příslušné úrovně je standardně nainstalován v namespace, pokud je povolena spravovaná instalace Gateway API. Nasazení objektu istio-gateway-class-defaults ConfigMap může po instalaci CRD API spravované brány trvat až pět minut.
Poznámka:
Objekt istio-gateway-class-defaults ConfigMap je provisionován a synchronizován službou AKS, když jsou společně povoleny CRD API spravované brány a doplněk Istio. Pokud jste dříve vytvořili objekt ConfigMap v oboru názvů istio-gateway-class-defaults sami, musíte před povolením identifikátorů Gateway API CRD spravovaných službou odstranit vlastní instanci ConfigMap, abyste zabránili konfliktům s vyrovnáním ConfigMap spravovaného službou AKS.
kubectl get configmap istio-gateway-class-defaults -n aks-istio-system -o yaml
...
data:
horizontalPodAutoscaler: |
spec:
minReplicas: 2
maxReplicas: 5
podDisruptionBudget: |
spec:
minAvailable: 1
...
Tato nastavení můžete upravit pro všechny Istio Gateways na GatewayClass úrovni aktualizací istio-gateway-class-defaults ConfigMap, nebo je můžete nastavit pro jednotlivé Gateway prostředky.
GatewayClass-level i Gateway-level ConfigMaps, je nutné přidat pole do seznamu povolených položek pro daný prostředek. Pokud existují přizpůsobení jak pro GatewayClass, tak pro konkrétní Gateway, má přednost konfigurace na úrovni Gateway.
Pole seznamu povolených přizpůsobení nasazení
| Cesta k poli | Description |
|---|---|
metadata.labels |
Štítky nasazení |
metadata.annotations |
Poznámky k nasazení |
spec.replicas |
Počet nasazení replik |
spec.template.metadata.labels |
Popisky podů |
spec.template.metadata.annotations |
Poznámky podů |
spec.template.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms |
Afinitní vazba uzlů |
spec.template.spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution |
Afinitní vazba uzlů |
spec.template.spec.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution |
Spřažení podů |
spec.template.spec.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution |
Spřažení podů |
spec.template.spec.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution |
Anti-afinitní rozložení podů |
spec.template.spec.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution |
Anti-afinitní rozložení podů |
spec.template.spec.containers.resizePolicy |
Využití prostředků kontejneru |
spec.template.spec.containers.resources.limits |
Využití prostředků kontejneru |
spec.template.spec.containers.resources.requests |
Využití prostředků kontejneru |
spec.template.spec.containers.stdin |
Ladění kontejneru |
spec.template.spec.containers.stdinOnce |
Ladění kontejneru |
spec.template.spec.nodeSelector |
Plánování podů |
spec.template.spec.nodeName |
Plánování podů |
spec.template.spec.tolerations |
Plánování podů |
spec.template.spec.topologySpreadConstraints |
Plánování podů |
Pole pro přizpůsobení služby seznamu povolení
| Cesta k poli | Description |
|---|---|
metadata.labels |
Popisky služeb |
metadata.annotations |
Poznámky ke službám |
spec.type |
Typ služby |
spec.loadBalancerSourceRanges |
Nastavení nástroje pro vyrovnávání zatížení služby |
spec.loadBalancerClass |
Nastavení nástroje pro vyrovnávání zatížení služby |
spec.externalTrafficPolicy |
Zásady provozu služby |
spec.internalTrafficPolicy |
Zásady provozu služby |
Pole seznamu povolených pro přizpůsobení HorizontalPodAutoscaler (HPA)
| Cesta k poli | Description |
|---|---|
metadata.labels |
Popisky HPA |
metadata.annotations |
Poznámky HPA |
spec.behavior.scaleUp.stabilizationWindowSeconds |
Chování navyšování kapacity HPA |
spec.behavior.scaleUp.selectPolicy |
Chování navyšování kapacity HPA |
spec.behavior.scaleUp.policies |
Chování navyšování kapacity HPA |
spec.behavior.scaleDown.stabilizationWindowSeconds |
Chování zmenšení kapacity HPA |
spec.behavior.scaleDown.selectPolicy |
Chování zmenšení kapacity HPA |
spec.behavior.scaleDown.policies |
Chování zmenšení kapacity HPA |
spec.metrics |
Metriky škálování prostředků HPA |
spec.minReplicas |
Minimální počet replik HPA Nesmí být nižší než 2. |
spec.maxReplicas |
Maximální počet replik HPA |
Seznam povolených polí pro přizpůsobení PodDisruptionBudget (PDB)
| Cesta k poli | Description |
|---|---|
metadata.labels |
Popisky PDB |
metadata.annotations |
Poznámky PDB |
spec.minAvailable |
Minimální dostupnost PDB |
spec.unhealthyPodEvictionPolicy |
Zásady vyřazení PDB |
Poznámka:
Úprava minimální PDB dostupnosti a zásad vyřazení může vést k potenciálním chybám při operacích upgradu clusteru nebo uzlu a odstranění. Při odstraňování chyb UpgradeFailed kvůli selhání evikce postupujte podle PDB.
Konfigurace nastavení na úrovni GatewayClass
Aktualizujte objekt ConfigMap na úrovni
GatewayClassv prostoru názvůaks-istio-systempomocí příkazukubectl edit configmap.kubectl edit cm istio-gateway-class-defaults -n aks-istio-systemPodle potřeby upravte nastavení prostředků v oddílu
data. Pokud chcete například aktualizovat repliky HPA min/max a přidat popisek doDeploymentConfigMap, proveďte úpravy následujícím způsobem:... data: deployment: | metadata: labels: test.azureservicemesh.io/deployment-config: "updated" horizontalPodAutoscaler: | spec: minReplicas: 3 maxReplicas: 6 podDisruptionBudget: | spec: minAvailable: 1 ...Poznámka:
Je povolena pouze jedna ConfigMap pro
GatewayClass.Teď byste měli vidět, že se
HPAprohttpbin-gateway, který jste vytvořili dříve, aktualizuje s novými minimálními a maximálními hodnotami. Ověřte nastaveníHPApomocí příkazukubectl get hpa.kubectl get hpa httpbin-gateway-istioPříklad výstupu:
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE httpbin-gateway-istio Deployment/httpbin-gateway-istio cpu: 3%/80% 3 6 3 36mPomocí příkazu ověřte, že
Deploymentje aktualizovaný s novým popiskemkubectl get deployment.kubectl get deployment httpbin-gateway-istio -ojsonpath='{.metadata.labels.test\.azureservicemesh\.io\/deployment-config}'Příklad výstupu:
updated
Konfigurace nastavení pro konkrétní bránu
Pomocí následujícího manifestu vytvořte objekt ConfigMap s vlastními nastaveními prostředků pro bránu
httpbin: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" EOFhttpbinGatewayAktualizujte odkaz na objekt ConfigMap:spec: # ... existing spec content ... infrastructure: parametersRef: group: "" kind: ConfigMap name: gw-optionsPoužijte aktualizaci pomocí
kubectl applypříkazu.kubectl apply -f httpbin-gateway-updated.yamlPomocí příkazu ověřte, že
HPAse aktualizuje s použitím nových minimálních a maximálních hodnotkubectl get hpa. Pokud jste také nakonfigurovaliGatewayClass-úrovňový objekt ConfigMap, nastavení na úrovniGatewayby měly mít přednost.kubectl get hpa httpbin-gateway-istioPříklad výstupu:
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE httpbin-gateway-istio Deployment/httpbin-gateway-istio cpu: 3%/80% 2 4 2 4h14mDeploymentZkontrolujte popisky a ujistěte se, že pomocí příkazutest.azureservicemesh.io/deployment-configjekubectl get deploymentaktualizováno na novou hodnotu.kubectl get deployment httpbin-gateway-istio -ojsonpath='{.metadata.labels.test\.azureservicemesh\.io\/deployment-config}'Příklad výstupu:
updated-per-gateway
Povolení protokolů přístupu pro pody brány
Telemetry CRD jsou instalovány automaticky s doplňkem Istio. Můžete použít Telemetry API ke konfiguraci protokolování přístupu pro Gateway pody.
Vytvořte prostředek v aks-istio-system oboru názvů, abyste povolili přístupové protokoly pro všechny Gateway pody v síti nebo v konkrétním oboru názvů, abyste povolili přístupové protokoly pouze pro Gateway pody v daném oboru názvů.
Následující příklad ukazuje Telemetry prostředek, který umožňuje Gateway protokolování přístupu:
apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
name: mesh-default
namespace: aks-istio-system
spec:
accessLogging:
- providers:
- name: envoy
Poznámka:
Výše uvedený manifest umožňuje protokolování přístupu napříč celou mesh sítí, a to jak pro pody, tak i pro sidecar proxy servery injektované Istiem. Pomocí selektorů můžete cílit na konkrétní pody. Další podrobnosti o konfiguraci protokolování přístupu pomocí Telemetry API najdete v dokumentaci k doplňku Istio.
Vyčistěte zdroje
Pokud už prostředky vytvořené v tomto článku nepotřebujete, můžete je odstranit, abyste se vyhnuli poplatkům.
Pomocí následujících
kubectl deletepříkazů odstraňte tyto zdroje Gateway a HTTPRoute:kubectl delete gateways.gateway.networking.k8s.io httpbin-gateway kubectl delete httproute httpbinPokud jste vytvořili objekt ConfigMap pro přizpůsobení prostředků brány, odstraňte ho
kubectl delete configmappomocí příkazu.kubectl delete configmap gw-optionsPokud jste vytvořili SecretProviderClass a tajný klíč, který se má použít pro ukončení protokolu TLS, odstraňte prostředky pomocí následujících
kubectl deletepříkazů:kubectl delete secret httpbin-credential kubectl delete pod secrets-store-sync-httpbin kubectl delete secretproviderclass httpbin-credential-spc