Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Belangrijk
AKS preview-functies zijn beschikbaar op selfservice, opt-in basis. Previews worden geleverd 'zoals het is' en 'voor zover beschikbaar' en zijn uitgesloten van de serviceovereenkomsten en beperkte garantie. AKS-previews worden gedeeltelijk gedekt door klantondersteuning naar best vermogen. Zodoende zijn deze functies niet bedoeld voor productiegebruik. Zie de volgende ondersteuningsartikelen voor meer informatie:
De invoegtoepassing istio-service-mesh ondersteunt zowel de eigen API voor inkomend verkeerbeheer van Istio als de Kubernetes Gateway-API voor inkomend verkeerbeheer. U kunt het geautomatiseerde implementatiemodel van de Istio Gateway-API of het handmatige implementatiemodel gebruiken. In dit artikel wordt beschreven hoe u inkomend verkeerbeheer configureert voor de invoegtoepassing Istio-service-mesh met behulp van de Kubernetes Gateway-API met het geautomatiseerde implementatiemodel.
Beperkingen en overwegingen
- De invoegtoepassing Istio-service-mesh en de implementatie van de gateway-API voor toepassingsroutering kunnen niet tegelijkertijd worden ingeschakeld. U moet er eerst een uitschakelen en de andere inschakelen in een afzonderlijke bewerking.
- Het gebruik van de Kubernetes Gateway-API voor uitgaand verkeerbeheer met de Istio-invoegtoepassing wordt alleen ondersteund voor het handmatige implementatiemodel.
- ConfigMap-aanpassingen voor
Gatewayresources moeten binnen de toegestane lijst voor resourceaanpassing vallen. Velden die niet op de acceptatielijst staan, worden geweigerd en geblokkeerd via door uitbreidingsmodule beheerde webhooks. Zie het ondersteuningsbeleid voor de Istio-invoegtoepassing voor meer informatie overallowed,blockedensupportedfuncties. - Het configureren van HTTPS-toegang tot HTTPS-services, d.w.z. SNI-passthrough (Server Name Indication), via de
TLSRouteresource wordt momenteel niet ondersteund.
Vereiste voorwaarden
- Schakel de Managed Gateway-API in op uw AKS-cluster.
- Installeer revision
asm-1-26of hoger van de Istio service-mesh-invoegtoepassing. Volg de installatiehandleiding als u de invoegtoepassing Istio service mesh nog niet hebt geïnstalleerd, of als u een lagere secundaire revisie gebruikt.
Omgevingsvariabelen instellen
Stel de volgende omgevingsvariabelen in voor gebruik in dit artikel:
| Variable | Description |
|---|---|
RESOURCE_GROUP |
De naam van de resourcegroep die uw AKS-cluster bevat. |
CLUSTER_NAME |
De naam van uw AKS-cluster. |
LOCATION |
De Azure-regio waar uw AKS-cluster is geïmplementeerd. |
KEY_VAULT_NAME |
De naam van de Azure Key Vault-resource die moet worden gemaakt voor het opslaan van TLS-geheimen. Als u een bestaande resource hebt, gebruikt u die naam. |
Voorbeeldtoepassing implementeren
Implementeer eerst de voorbeeldtoepassing
httpbinin dedefaultnaamruimte met behulp van dekubectl applyopdracht.export ISTIO_RELEASE="release-1.27" kubectl apply -f https://raw.githubusercontent.com/istio/istio/$ISTIO_RELEASE/samples/httpbin/httpbin.yaml
Kubernetes Gateway en HTTPRoute maken
In het voorbeeldmanifest wordt een externe load balancer-service voor inkomend verkeer gemaakt die toegankelijk is van buiten het cluster. U kunt aantekeningen toevoegen om een interne load balancer te maken en andere load balancer-instellingen aan te passen.
Implementeer een gateway-API-configuratie in de
defaultnaamruimte met degatewayClassNameset naaristioen eenHTTPRoutedie verkeer naar dehttpbinservice routeert met behulp van het volgende manifest: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 EOFOpmerking
Standaard zal het Istio-controlevlak de
GatewayClassnaamistiotoevoegen aan de naam van de resources die het voorziet voor deGateway. U kunt uwGateway-resource annoteren metgateway.istio.io/name-overrideom de naam van de geconfigureerde bronnen te overschrijven. De resourcenamen moeten kleiner zijn dan63tekens en moeten een geldige DNS-naam zijn.Opmerking
Als u een kleine revisie-upgrade uitvoert en er twee revisies van de Istio-service-mesh-invoegtoepassing op uw cluster zijn geïnstalleerd, neemt het control plane voor de hogere kleine revisie standaard de verantwoordelijkheid voor de
Gateways. U kunt hetistio.io/revlabel toevoegen aanGatewayom te bepalen welke revisie van het besturingsvlak hiervan eigenaar is. Als u het revisielabel toevoegt, zorg er dan voor dat u deze bijwerkt naar de juiste versie van het controlevlak voordat u de upgradebewerking terugdraait of voltooit.
De creatie van bronnen verifiëren
Controleer of de resources
Deployment,Service,HorizontalPodAutoscalerenPodDisruptionBudgetzijn gemaakt met behulp van de volgendekubectl getcommando's.kubectl get deployment httpbin-gateway-istio kubectl get service httpbin-gateway-istio kubectl get hpa httpbin-gateway-istio kubectl get pdb httpbin-gateway-istioVoorbeelduitvoer:
# 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
Aanvraag verzenden naar voorbeeldtoepassing
Probeer een
curlaanvraag naar dehttpbintoepassing te verzenden. Stel eerst deINGRESS_HOSTomgevingsvariabele in: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}')Probeer een HTTP-aanvraag naar
httpbin.curl -s -I -HHost:httpbin.example.com "http://$INGRESS_HOST/get"In de uitvoer ziet u een
HTTP 200antwoord.
Binnenkomend Verkeer van Istio beveiligen met de Kubernetes Gateway-API
De invoegtoepassing istio-service-mesh biedt ondersteuning voor het synchroniseren van geheimen uit Azure Key Vault voor het beveiligen van inkomend verkeer op basis van gateway-API met TLS-beëindiging (Transport Layer Security). In de volgende secties synchroniseert u geheimen van Azure Key Vault naar uw AKS-cluster met behulp van de Azure Key Vault-provider voor de CSI-stuurprogramma-invoegtoepassing (Secrets Store Container Storage Interface) en beëindigt u TLS bij de ingangsgateway.
Client-/servercertificaten en -sleutels maken
Maak een basiscertificaat en een persoonlijke sleutel voor het ondertekenen van de certificaten voor voorbeeldservices:
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.crtGenereer een certificaat en een persoonlijke sleutel voor
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
Azure Key Vault instellen en geheimen aanmaken
Maak een Azure Key Vault-exemplaar om het certificaat en de sleutelinvoer op te geven aan de Mesh-invoegtoepassing van de Istio-service met behulp van de
az keyvault createopdracht. Als u al een Azure Key Vault-exemplaar hebt, kunt u deze stap overslaan.az keyvault create --name $KEY_VAULT_NAME --resource-group $RESOURCE_GROUP --location $LOCATIONSchakel de Azure Key Vault-provider in voor de invoegtoepassing Secrets Store (CSI) op uw cluster met behulp van de
az aks enable-addonsopdracht.az aks enable-addons --addons azure-keyvault-secrets-provider --resource-group $RESOURCE_GROUP --name $CLUSTER_NAMEAls uw sleutelkluis gebruikmaakt van op rollen gebaseerd toegangsbeheer van Azure (RBAC) voor het machtigingsmodel, volgt u de instructies in Toegang bieden tot Azure Key Vault-sleutels, -certificaten en -geheimen met op rollen gebaseerd toegangsbeheer van Azure om een Azure-rol van Key Vault-geheimengebruiker toe te wijzen voor de door de gebruiker toegewezen beheerde identiteit van de invoegtoepassing. Als uw sleutelkluis gebruikmaakt van het machtigingsmodel voor kluistoegangsbeleid, kunt u ook de door de gebruiker toegewezen beheerde identiteit van de invoegtoepassing autoriseren voor toegang tot Azure Key Vault-resource met behulp van toegangsbeleid met behulp van de
az keyvault set-policyopdracht.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 listMaak geheimen in Azure Key Vault met behulp van de certificaten en sleutels met behulp van de volgende
az keyvault secret setopdrachten: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 en voorbeeldpod implementeren
Implementeer de SecretProviderClass om specifieke parameters voor Azure Key Vault op te geven voor het CSI-stuurprogramma met behulp van het volgende manifest. In dit voorbeeld zijn
test-httpbin-keyentest-httpbin-crtde namen van de geheime objecten in 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 EOFOpmerking
Als u ook rechtstreeks vanuit Azure Key Vault wilt verwijzen naar een certificaatobjecttype, gebruikt u het volgende manifest om SecretProviderClass te implementeren. In dit voorbeeld
test-httpbin-cert-pfxis dit de naam van het certificaatobject in 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 EOFImplementeer een voorbeeldpod met behulp van het volgende manifest. Voor de Azure Key Vault-provider voor de CSI-stuurprogramma-invoegtoepassing (Secrets Store) is een pod vereist om te verwijzen naar de SecretProviderClass-resource om ervoor te zorgen dat geheimen worden gesynchroniseerd vanuit Azure Key Vault naar het cluster.
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
Het maken van TLS-geheim controleren
Controleer of de
httpbin-credentialsecret is aangemaakt in dedefaultnamespace zoals gedefinieerd in de SecretProviderClass-resource met behulp van dekubectl describe secretopdracht.kubectl describe secret/httpbin-credentialVoorbeelduitvoer:
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-gateway implementeren
Maak een Kubernetes-gateway die verwijst naar het
httpbin-credentialgeheim onder de TLS-configuratie met behulp van het volgende manifest: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 EOFOpmerking
In de gateway-definitie moet
tls.certificateRefs.nameovereenkomen metsecretNamein de SecretProviderClass-resource.Creëer een overeenkomstige
HTTPRouteom de routering van inkomend verkeer naar dehttpbin-service via HTTPS te configureren met het volgende manifest: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 EOFHaal het externe IP-adres van de ingangsgateway en de beveiligde poort op met behulp van de volgende opdrachten:
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}')Een HTTPS-aanvraag verzenden om toegang te krijgen tot de
httpbinservice: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"In de uitvoer moet de
httpbinservice de 418 I'm a Teapot code retourneren.Opmerking
Werk de TLS-modus in de gatewaydefinitie bij naar
Passthroughom toegang voor inkomend HTTPS-verkeer tot een HTTPS-service te configureren. Met deze configuratie wordt de gateway geïnstrueerd om het inkomend verkeer door te geven zoals dat wel is, zonder TLS te beëindigen.
Aanpassingen aan aantekeningen
U kunt aantekeningen toevoegen onder spec.infrastructure.annotations voor het configureren van load balancer-instellingen voor de Gateway. Als u bijvoorbeeld een interne load balancer wilt maken die is gekoppeld aan een specifiek subnet, kunt u een Gateway met de volgende aantekeningen maken:
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-aanpassingen
De Istio-service mesh-invoegtoepassing ondersteunt het aanpassen van de gegenereerde resources voor de Gateways, waaronder:
- Dienst
- Uitrol
- Horizontale Pod Autoscaler (HPA)
- Budget voor podonderbreking (PDB)
De standaardinstellingen voor deze resources worden ingesteld in de istio-gateway-class-defaults ConfigMap in de aks-istio-system naamruimte, die wordt ingericht door AKS wanneer de MANAGED Gateway-API-CRD's zijn ingeschakeld, samen met de Istio-invoegtoepassing. Voor deze ConfigMap moet het gateway.istio.io/defaults-for-class label zijn ingesteld op istio om de aanpassingen van kracht te laten worden voor alle Gateways met spec.gatewayClassName: istio. De ConfigMap op GatewayClass-niveau wordt standaard geïnstalleerd in de aks-istio-system namespace wanneer de Managed Gateway-API installatie is ingeschakeld. Het kan vijf minuten duren voordat de istio-gateway-class-defaults ConfigMap is geïmplementeerd na de installatie van de BEHEERDE GATEWAY-API-CRD's.
Opmerking
De istio-gateway-class-defaults ConfigMap wordt ingericht en gesynchroniseerd door AKS wanneer de Managed Gateway API CRD's en de Istio add-on samen zijn ingeschakeld. Als u de istio-gateway-class-defaults ConfigMap eerder zelf in de aks-istio-system naamruimte hebt gemaakt, moet u het zelfbeheerde ConfigMap-exemplaar verwijderen voordat u de MANAGED Gateway-API-CRD's inschakelt om conflicten met afstemming van de door AKS beheerde ConfigMap te voorkomen.
kubectl get configmap istio-gateway-class-defaults -n aks-istio-system -o yaml
...
data:
horizontalPodAutoscaler: |
spec:
minReplicas: 2
maxReplicas: 5
podDisruptionBudget: |
spec:
minAvailable: 1
...
U kunt deze instellingen voor alle Istio Gateways op een GatewayClass niveau wijzigen door de istio-gateway-class-defaults ConfigMap bij te werken of u kunt deze instellen voor afzonderlijke Gateway resources. Voor zowel GatewayClass-level als Gateway-level ConfigMapsmoet u velden toevoegen aan de acceptatielijst voor de opgegeven resource. Als er aanpassingen zijn zowel voor de GatewayClass als een individuele Gateway, heeft de Gateway-niveauconfiguratie voorrang.
Lijstvelden voor acceptatielijst voor implementatieaanpassing
| Veldpad | Description |
|---|---|
metadata.labels |
Implementatielabels |
metadata.annotations |
Aantekeningen bij de implementatie |
spec.replicas |
Aantal implementatiereplica's |
spec.template.metadata.labels |
Podlabels |
spec.template.metadata.annotations |
Podaantekeningen |
spec.template.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms |
Knooppuntaffiniteit |
spec.template.spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution |
Knooppuntaffiniteit |
spec.template.spec.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution |
Podaffiniteit |
spec.template.spec.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution |
Podaffiniteit |
spec.template.spec.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution |
Antiaffiniteit van pods |
spec.template.spec.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution |
Antiaffiniteit van pods |
spec.template.spec.containers.resizePolicy |
Gebruik van containerresources |
spec.template.spec.containers.resources.limits |
Gebruik van containerresources |
spec.template.spec.containers.resources.requests |
Gebruik van containerresources |
spec.template.spec.containers.stdin |
Containeropsporing |
spec.template.spec.containers.stdinOnce |
Containeropsporing |
spec.template.spec.nodeSelector |
Podplanning |
spec.template.spec.nodeName |
Podplanning |
spec.template.spec.tolerations |
Podplanning |
spec.template.spec.topologySpreadConstraints |
Podplanning |
Lijstvelden toestaan voor serviceaanpassing
| Veldpad | Description |
|---|---|
metadata.labels |
Servicelabels |
metadata.annotations |
Serviceaantekeningen |
spec.type |
Service-type |
spec.loadBalancerSourceRanges |
Instellingen voor service load balancer |
spec.loadBalancerClass |
Instellingen voor service load balancer |
spec.externalTrafficPolicy |
Beleid voor serviceverkeer |
spec.internalTrafficPolicy |
Beleid voor serviceverkeer |
HorizontalPodAutoscaler (HPA) aanpassingen toegestane veldenlijst
| Veldpad | Description |
|---|---|
metadata.labels |
HPA-labels |
metadata.annotations |
HPA-aantekeningen |
spec.behavior.scaleUp.stabilizationWindowSeconds |
HPA-opschalingsgedrag |
spec.behavior.scaleUp.selectPolicy |
HPA-opschalingsgedrag |
spec.behavior.scaleUp.policies |
HPA-opschalingsgedrag |
spec.behavior.scaleDown.stabilizationWindowSeconds |
Gedrag van HPA bij het verkleinen van de schaal |
spec.behavior.scaleDown.selectPolicy |
Gedrag van HPA bij het verkleinen van de schaal |
spec.behavior.scaleDown.policies |
Gedrag van HPA bij het verkleinen van de schaal |
spec.metrics |
HPA-resources schalen op basis van metrische gegevens |
spec.minReplicas |
Minimum aantal HPA-replica's. Mag niet lager zijn dan 2. |
spec.maxReplicas |
Maximum aantal HPA-replica's |
PodDisruptionBudget (PDB) aanpassingslijstvelden toestaan
| Veldpad | Description |
|---|---|
metadata.labels |
PDB-labels |
metadata.annotations |
PDB-aantekeningen |
spec.minAvailable |
Minimale beschikbaarheid van PDB |
spec.unhealthyPodEvictionPolicy |
Verwijderingsbeleid voor PDB |
Opmerking
Het wijzigen van het PDB minimale beschikbaarheids- en verwijderingsbeleid kan leiden tot mogelijke fouten tijdens het upgraden en verwijderen van clusters/knooppunten. Volg de handleiding voor het oplossen van PDB-problemen om UpgradeFailed-fouten als gevolg van PDB evictie-fouten op te lossen.
Instellingen op GatewayClass-niveau configureren
Werk de
GatewayClassconfiguratiemap op -niveau bij in deaks-istio-systemnaamruimte met behulp van dekubectl edit configmapopdracht:kubectl edit cm istio-gateway-class-defaults -n aks-istio-systemBewerk de resource-instellingen in de
datasectie indien nodig. Als u bijvoorbeeld de HPA min/max replica's wilt bijwerken en een label wilt toevoegen aan deDeploymentreplica, wijzigt u de ConfigMap als volgt:... data: deployment: | metadata: labels: test.azureservicemesh.io/deployment-config: "updated" horizontalPodAutoscaler: | spec: minReplicas: 3 maxReplicas: 6 podDisruptionBudget: | spec: minAvailable: 1 ...Opmerking
Er is slechts één ConfigMap per
GatewayClasstoegestaan.Nu zou u de
HPAvoorhttpbin-gatewaydie u eerder hebt gemaakt, bijgewerkt moeten zien worden met de nieuwe min/max-waarden. Controleer deHPAinstellingen met behulp van dekubectl get hpaopdracht.kubectl get hpa httpbin-gateway-istioVoorbeelduitvoer:
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE httpbin-gateway-istio Deployment/httpbin-gateway-istio cpu: 3%/80% 3 6 3 36mControleer of het
Deploymentis bijgewerkt met het nieuwe label met behulp van dekubectl get deploymentopdracht.kubectl get deployment httpbin-gateway-istio -ojsonpath='{.metadata.labels.test\.azureservicemesh\.io\/deployment-config}'Voorbeelduitvoer:
updated
Instellingen configureren voor een specifieke gateway
Maak een ConfigMap met resourceaanpassingen voor de
httpbingateway met behulp van het volgende manifest: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" EOFWerk
httpbinGatewaybij zodat deze verwijst naar de ConfigMap.spec: # ... existing spec content ... infrastructure: parametersRef: group: "" kind: ConfigMap name: gw-optionsPas de update toe met behulp van de
kubectl applyopdracht.kubectl apply -f httpbin-gateway-updated.yamlControleer of de
HPAwaarde is bijgewerkt met de nieuwe min/max-waarden met behulp van dekubectl get hpaopdracht. Als u ook deGatewayClass-niveau configuratiemap hebt geconfigureerd, moeten deGateway-niveau instellingen voorrang hebben.kubectl get hpa httpbin-gateway-istioVoorbeelduitvoer:
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE httpbin-gateway-istio Deployment/httpbin-gateway-istio cpu: 3%/80% 2 4 2 4h14mControleer de
Deploymentlabels om ervoor te zorgen dat detest.azureservicemesh.io/deployment-configwaarde wordt bijgewerkt naar de nieuwe waarde met behulp van dekubectl get deploymentopdracht.kubectl get deployment httpbin-gateway-istio -ojsonpath='{.metadata.labels.test\.azureservicemesh\.io\/deployment-config}'Voorbeelduitvoer:
updated-per-gateway
De hulpbronnen opschonen
Als u de resources die in dit artikel zijn gemaakt niet meer nodig hebt, kunt u ze verwijderen om te voorkomen dat er kosten in rekening worden gebracht.
Verwijder de gateway- en HTTPRoute-resources met behulp van de volgende
kubectl deleteopdrachten:kubectl delete gateways.gateway.networking.k8s.io httpbin-gateway kubectl delete httproute httpbinAls u een ConfigMap hebt gemaakt om uw gateway-resources aan te passen, verwijdert u deze met behulp van de
kubectl delete configmapopdracht.kubectl delete configmap gw-optionsAls u een SecretProviderClass en een geheim voor TLS-beëindiging hebt gemaakt, verwijdert u de resources met behulp van de volgende
kubectl deleteopdrachten:kubectl delete secret httpbin-credential kubectl delete pod secrets-store-sync-httpbin kubectl delete secretproviderclass httpbin-credential-spc