Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Viktigt!
AKS-förhandsversionsfunktioner är tillgängliga via självbetjäning och frivillig registrering. Förhandsversioner tillhandahålls "i befintligt skick" och "i mån av tillgång," och de är undantagna från servicenivåavtal och begränsad garanti. AKS-förhandsversioner stöds delvis av kundsupport efter bästa förmåga. Därför är dessa funktioner inte avsedda för produktionsanvändning. Mer information finns i följande supportartiklar:
Utöver Istios egna API för hantering av inkommande trafik stöder tillägget Istio Service Mesh även Kubernetes Gateway-API:et för hantering av inkommande trafik. För att kunna få stöd från API-baserade distributioner i Azure for Gateway med Istio-tillägget måste du ha API-installationen för Managed Gateway aktiverad i klustret. Du kan använda både den automatiserade distributionsmodellen för Istio Gateway API eller den manuella distributionsmodellen för hantering av inkommande trafik. Anpassningar av ConfigMap måste ligga under listan över tillåtna resursanpassningar.
Begränsningar
- Användning av Kubernetes Gateway-API:et för utgående trafikhantering med Istio-tillägget stöds endast för den manuella distributionsmodellen.
 - Anpassningar av ConfigMap för 
Gatewayresurser måste ingå i listan över tillåtna resursanpassningar. Fält som inte finns på tillåtelselistan tillåts inte och blockeras via webhooks som hanteras av tillägg. Se policyn för Istio-tilläggsstöd för mer information,allowed,blocked,supportedoch funktioner. 
Förutsättningar
- Aktivera API-installationen för Managed Gateway.
 - Installera Istio-tilläggsrevision 
asm-1-26eller senare. Följ installationsguiden om du inte har installerat Istio-tillägget ännu, eller uppgraderingsguiden om du har en lägre mindre revision. 
Konfigurera ingress med en Kubernetes Gateway
Distribuera exempelprogram
Distribuera först exempelprogrammet httpbin i default namnområdet:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.26/samples/httpbin/httpbin.yaml
Skapa Kubernetes Gateway och HTTPRoute
Distribuera sedan en gateway-API-konfiguration i default-namnrymden med gatewayClassName satt till istio.
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
EOF
Anmärkning
Exemplet ovan skapar en extern ingress load balancer-tjänst som är tillgänglig utanför klustret. Du kan lägga till anteckningar för att skapa en intern lastbalanserare och anpassa andra inställningar för lastbalanserare.
Anmärkning
Om du utför en mindre revisionsuppgradering och har två Istio-tilläggsrevisioner installerade på klustret samtidigt, kommer som standard kontrollplanet för den högre revisionen att ta ägarskap av Gateways. Du kan lägga till istio.io/rev etiketten i Gateway för att styra vilken kontrollplansrevision som äger den. Om du lägger till revisionsetiketten kontrollerar du att du uppdaterar den enligt lämplig kontrollplansrevision innan du återställer eller slutför uppgraderingen.
Kontrollera att en Deployment, Service, HorizontalPodAutoscaleroch PodDisruptionBudget skapas för httpbin-gateway:
kubectl get deployment httpbin-gateway-istio
NAME                    READY   UP-TO-DATE   AVAILABLE   AGE
httpbin-gateway-istio   2/2     2            2           31m
kubectl get service httpbin-gateway-istio
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
kubectl get hpa httpbin-gateway-istio
NAME                    REFERENCE                          TARGETS       MINPODS   MAXPODS   REPLICAS   AGE
httpbin-gateway-istio   Deployment/httpbin-gateway-istio   cpu: 3%/80%   2         5         3          34m
kubectl get pdb httpbin-gateway-istio
NAME                    MIN AVAILABLE   MAX UNAVAILABLE   ALLOWED DISRUPTIONS   AGE
httpbin-gateway-istio   1               N/A               2                     36m
Du kan konfigurera dessa resursinställningar genom att GatewayClass ändra standardinställningarna för ConfigMap eller genom att koppla en ConfigMap till en specifik Gateway.
Skicka begäran till exempelapplikationen
Försök slutligen skicka en curl begäran till programmet httpbin . 
              INGRESS_HOST Ange först miljövariabeln:
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}')
Försök sedan skicka en HTTP-begäran till httpbin:
curl -s -I -HHost:httpbin.example.com "http://$INGRESS_HOST/get"
Du bör se ett HTTP 200 svar.
Skydda Istio-inkommande trafik med Kubernetes Gateway-API:et
Istio-tillägget stöder synkronisering av sekretessdata från Azure Key Vault (AKV) för att skydda ingående trafik baserad på Gateway API med TLS-avslutning (Transport Layer Security) eller SNI-genomströmning (Server Name Indication). Du kan följa dokumentet om säker ingressgateway för att synkronisera sekretessdata från AKV till ditt AKS-kluster med hjälp av AKV Secrets Store Container Storage Interface (CSI) Driver-tillägget.
Resursanpassningar
Anpassningar av anteckningar
Du kan lägga till anteckningar under spec.infrastructure.annotations för att konfigurera inställningarna för lastbalanseraren för Gateway. Om du till exempel vill skapa en intern lastbalanserare som är kopplad till ett specifikt undernät kan du skapa en Gateway med följande anteckningar:
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
  infrastructure:
    annotations: 
      service.beta.kubernetes.io/azure-load-balancer-internal: "true"
      service.beta.kubernetes.io/azure-load-balancer-internal-subnet: "my-subnet"
EOF
Anpassningar av ConfigMap
Istio-tillägget stöder också anpassningar av de resurser som genereras för Gateways, nämligen:
- Tjänster
 - Driftsättning
 - Horizontal Pod Autoscaler (HPA)
 - Budget för avbrott för poddar (PDB)
 
              Standardinställningarna för dessa resurser anges i istio-gateway-class-defaults ConfigMap i aks-istio-system namnområdet. Denna ConfigMap måste ha gateway.istio.io/defaults-for-class-etiketten inställd till istio för att anpassningarna ska börja gälla för alla Gateways med spec.gatewayClassName: istio. 
              GatewayClass-nivå ConfigMap installeras som default i namnområdet aks-istio-system när Managed Gateway API-installation är aktiverad. Det kan ta upp till ~5 minuter innan istio-gateway-class-defaults ConfigMap distribueras efter att CRD:erna för Managed Gateway-API:erna har installerats.
kubectl get configmap istio-gateway-class-defaults -n aks-istio-system -o yaml
...
data:
  horizontalPodAutoscaler: |
    spec:
      minReplicas: 2
      maxReplicas: 5
  podDisruptionBudget: |
    spec:
      minAvailable: 1
...
Som beskrivs i de efterföljande avsnitten kan du ändra de här inställningarna för alla Istio Gateways på en GatewayClass nivå genom att uppdatera istio-gateway-class-defaults ConfigMap, eller så kan du ange dem för enskilda Gateway resurser. För både GatewayClass-nivå och Gateway-nivå ConfigMaps måste fälten vara vitlistade för den angivna resursen. Om det finns anpassningar både för GatewayClass och en enskild Gateway, har konfigurationen på Gateway-nivå företräde.
Tillåtlista för resursanpassning
Fält som inte finns på listan över tillåtna för resursen tillåts inte och blockeras via tilläggshanterade webhooks. Se policyn för Istio-tilläggsstöd för mer information, allowed, blocked, supported och funktioner.
Distributionsfält
| Fältsökväg | Description | 
|---|---|
metadata.labels | 
Distributionsetiketter | 
metadata.annotations | 
Distributionsanteckningar | 
spec.replicas | 
Antal distributionsrepliker | 
spec.template.metadata.labels | 
Poddetiketter | 
spec.template.metadata.annotations | 
Poddanteckningar | 
spec.template.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms | 
Nodtillhörighet | 
spec.template.spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution | 
Nodtillhörighet | 
spec.template.spec.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution | 
Pod-affinitet | 
spec.template.spec.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution | 
Pod-affinitet | 
spec.template.spec.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution | 
Poddskyddstillhörighet | 
spec.template.spec.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution | 
Poddskyddstillhörighet | 
spec.template.spec.containers.resizePolicy | 
Användning av containerresurser | 
spec.template.spec.containers.resources.limits | 
Användning av containerresurser | 
spec.template.spec.containers.resources.requests | 
Användning av containerresurser | 
spec.template.spec.containers.stdin | 
Felsökning av containrar | 
spec.template.spec.containers.stdinOnce | 
Felsökning av containrar | 
spec.template.spec.nodeSelector | 
Poddschemaläggning | 
spec.template.spec.nodeName | 
Poddschemaläggning | 
spec.template.spec.tolerations | 
Poddschemaläggning | 
spec.template.spec.topologySpreadConstraints | 
Poddschemaläggning | 
Tjänstfält
| Fältsökväg | Description | 
|---|---|
metadata.labels | 
Tjänstetiketter | 
metadata.annotations | 
Tjänstanteckningar | 
spec.type | 
Typ av tjänst | 
spec.loadBalancerSourceRanges | 
Inställningar för tjänstlastbalanserare | 
spec.loadBalancerClass | 
Inställningar för tjänstlastbalanserare | 
spec.externalTrafficPolicy | 
Tjänsttrafikprincip | 
spec.internalTrafficPolicy | 
Tjänsttrafikprincip | 
HPA-fält (HorizontalPodAutoscaler)
| Fältsökväg | Description | 
|---|---|
metadata.labels | 
HPA-etiketter | 
metadata.annotations | 
HPA-anteckningar | 
spec.behavior.scaleUp.stabilizationWindowSeconds | 
HPA:s skalningsbeteende | 
spec.behavior.scaleUp.selectPolicy | 
HPA:s skalningsbeteende | 
spec.behavior.scaleUp.policies | 
HPA:s skalningsbeteende | 
spec.behavior.scaleDown.stabilizationWindowSeconds | 
HPA-nedskalningsbeteende | 
spec.behavior.scaleDown.selectPolicy | 
HPA-nedskalningsbeteende | 
spec.behavior.scaleDown.policies | 
HPA-nedskalningsbeteende | 
spec.metrics | 
HPA-skalningsresursmått | 
spec.minReplicas | 
HPA minimalt antal repliker. Får inte vara under 2. | 
spec.maxReplicas | 
Maximalt antal HPA-repliker | 
PodDisruptionBudget-fält (PDB)
| Fältsökväg | Description | 
|---|---|
metadata.labels | 
PDB-etiketter | 
metadata.annotations | 
PDB-anteckningar | 
spec.minAvailable | 
Lägsta tillgänglighet för PDB | 
spec.unhealthyPodEvictionPolicy | 
PDB-eviktionspolicy | 
Anmärkning
Om PDB du ändrar principen för lägsta tillgänglighet och borttagning kan det leda till potentiella fel vid uppgradering och borttagning av kluster/noder. Följ felsökningsguiden för PDB för att åtgärda UpgradeFailed-fel på grund av PDB borttagningsfel.
Konfigurera inställningar på GatewayClass-nivå
Uppdatera ConfigMap på GatewayClass-nivå i aks-istio-system namnrymden:
kubectl edit cm istio-gateway-class-defaults -n aks-istio-system
Redigera resursinställningarna:
...
data:
  deployment: |
    metadata:
      labels:
        test.azureservicemesh.io/deployment-config: "updated"
  horizontalPodAutoscaler: |
    spec:
      minReplicas: 3
      maxReplicas: 6
  podDisruptionBudget: |
    spec:
      minAvailable: 1
...
Anmärkning
Endast en ConfigMap per GatewayClass tillåts.
Nu bör du se att den HPA för httpbin-gateway som du skapade tidigare har blivit uppdaterad.
kubectl get hpa httpbin-gateway-istio
NAME                    REFERENCE                          TARGETS       MINPODS   MAXPODS   REPLICAS   AGE
httpbin-gateway-istio   Deployment/httpbin-gateway-istio   cpu: 3%/80%   3         6         3          36m
Kontrollera också att Deployment är uppdaterad med den nya etiketten:
kubectl get deployment httpbin-gateway-istio -ojsonpath='{.metadata.labels.test\.azureservicemesh\.io\/deployment-config}'
updated
Konfigurera inställningar för en specifik gateway
Skapa en ConfigMap med resursanpassningar för httpbinGateway:
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"
EOF
Uppdatera httpbinGateway för att referera till ConfigMap:
kubectl apply -f - <<EOF
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: httpbin-gateway
spec:
  gatewayClassName: istio
  infrastructure:
    parametersRef:
      group: ""
      kind: ConfigMap
      name: gw-options
  listeners:
  - name: http
    port: 80
    protocol: HTTP
    allowedRoutes:
      namespaces:
        from: Same
EOF
Kontrollera att HPA har uppdaterats med de nya min/max-värdena. Om du också har konfigurerat GatewayClass-nivå ConfigMap, bör Gateway-nivåinställningarna ha företräde:
kubectl get hpa httpbin-gateway-istio
NAME                    REFERENCE                          TARGETS       MINPODS   MAXPODS   REPLICAS   AGE
httpbin-gateway-istio   Deployment/httpbin-gateway-istio   cpu: 3%/80%   2         4         2          4h14m
Kontrollera även etiketterna Deployment för att se till att test.azureservicemesh.io/deployment-config uppdateras till det nya värdet:
kubectl get deployment httpbin-gateway-istio -ojsonpath='{.metadata.labels.test\.azureservicemesh\.io\/deployment-config}'
updated-per-gateway
Nästa steg
Azure Kubernetes Service