Utilizzo di Anthos Service Mesh

A partire dalla versione 1.8 di Apigee hybrid, Apigee hybrid utilizza il gateway di ingresso Apigee per fornire un gateway di ingresso per l'installazione ibrida. Se preferisci utilizzare Anthos Service Mesh per l'ingresso, segui questi passaggi per installarlo nel tuo cluster.

Versioni di Anthos Service Mesh supportate

Consulta Apigee Hybrid: piattaforme supportate per le versioni di Anthos Service Mesh supportate nella versione ibrida 1.8.

Se stai eseguendo l'upgrade dell'installazione ibrida, segui le istruzioni riportate in Eseguire l'upgrade di Anthos Service Mesh.

Installazione di Anthos Service Mesh

Esegui questi passaggi su una nuova installazione di Apigee hybrid solo se non utilizzi il gateway di ingresso Apigee.

Esegui le procedure utilizzando la documentazione di Anthos Service Mesh appropriata per la tua piattaforma:

Le istruzioni per installare e configurare Anthos Service Mesh sono diverse a seconda della piattaforma. Le piattaforme sono suddivise nelle seguenti categorie:

  • GKE: cluster Google Kubernetes Engine in esecuzione su Google Cloud.
  • Al di fuori di Google Cloud: cluster Anthos in esecuzione su:
    • Cluster Anthos su VMware (GKE on-prem)
    • Anthos on bare metal
    • Anthos clusters on AWS
    • Amazon EKS
  • Altre piattaforme Kubernetes: cluster conformi creati ed eseguiti su:
    • AKS
    • EKS
    • OpenShift

GKE

La sequenza per l'installazione di Anthos Service Mesh è la seguente:

  1. Preparati per l'installazione.
  2. Installa la nuova versione di Anthos Service Mesh.

Preparativi per l'installazione di Anthos Service Mesh

  1. Esamina i requisiti in Eseguire l'upgrade di Anthos Service Mesh, ma non eseguire ancora l'upgrade.
  2. Crea un nuovo file overlay.yaml o verifica che quello esistente overlay.yaml contenga i seguenti contenuti:
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      components:
        ingressGateways:
        - name: istio-ingressgateway
          enabled: true
          k8s:
            nodeSelector:
              # default node selector, if different or not using node selectors, change accordingly.
              cloud.google.com/gke-nodepool: apigee-runtime
            resources:
              requests:
                cpu: 1000m
            service:
              type: LoadBalancer
              loadBalancerIP: STATIC_IP # If you do not have a reserved static IP, leave this out.
              ports:
                - name: http-status-port
                  port: 15021
                - name: http2
                  port: 80
                  targetPort: 8080
                - name: https
                  port: 443
                  targetPort: 8443
      meshConfig:
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
  3. Segui le istruzioni riportate nelle seguenti sezioni della documentazione di Anthos Service Mesh:
    1. Scarica asmcli
    2. Concedere le autorizzazioni di amministratore del cluster
    3. Convalida progetto e cluster
    4. Eseguire l'upgrade con funzionalità facoltative. Interrompi prima di iniziare la sezione "Eseguire l'upgrade dei gateway".

Al di fuori di Google Cloud

Queste istruzioni riguardano l'upgrade di Anthos Service Mesh su:

  • Cluster Anthos su VMware (GKE on-prem)
  • Anthos on bare metal
  • Anthos clusters on AWS
  • Amazon EKS

La sequenza per l'installazione di Anthos Service Mesh è la seguente:

  1. Preparati per l'installazione.
  2. Installa la nuova versione di Anthos Service Mesh.

Preparativi per l'installazione di Anthos Service Mesh

  1. Esamina i requisiti in Eseguire l'upgrade di Anthos Service Mesh, ma non eseguire ancora l'upgrade.
  2. Crea un nuovo file overlay.yaml o verifica che quello esistente overlay.yaml contenga i seguenti contenuti:
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:  
      components:
        ingressGateways:
        - name: istio-ingressgateway
          enabled: true
          k8s:
            nodeSelector:
              # default node selector, if different or not using node selectors, change accordingly.
              cloud.google.com/gke-nodepool: apigee-runtime
            resources:
              requests:
                cpu: 1000m
            service:
              type: LoadBalancer
              loadBalancerIP: STATIC_IP # If you do not have a reserved static IP, leave this out.
              ports:
                - name: http-status-port
                  port: 15021
                - name: http2
                  port: 80
                  targetPort: 8080
                - name: https
                  port: 443
                  targetPort: 8443
      values:
        gateways:
          istio-ingressgateway:
            runAsRoot: true
    
      meshConfig:
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
  3. Segui le istruzioni riportate nelle seguenti sezioni della documentazione di Anthos Service Mesh:
    1. Scarica asmcli
    2. Concedere le autorizzazioni di amministratore del cluster
    3. Convalida progetto e cluster
    4. Eseguire l'upgrade con funzionalità facoltative. Interrompi prima di iniziare la sezione "Eseguire l'upgrade dei gateway".

AKS / EKS

Preparazione all'installazione di Anthos Service Mesh

    Linux

  1. Scarica il file di installazione di Anthos Service Mesh nella directory di lavoro corrente:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.13.9-asm.10-linux-amd64.tar.gz
  2. Scarica il file della firma e utilizza OpenSSL per verificarla:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.13.9-asm.10-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.13.9-asm.10-linux-amd64.tar.gz.1.sig istio-1.13.9-asm.10.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  3. Estrai i contenuti del file in qualsiasi posizione del file system. Ad esempio, per estrarre i contenuti nella directory di lavoro corrente:
    tar xzf istio-1.13.9-asm.10-linux-amd64.tar.gz

    Il comando crea una directory di installazione nella directory di lavoro corrente denominata istio-1.13.9-asm.10 che contiene:

    • Applicazioni di esempio nella directory samples.
    • Lo strumento a riga di comando istioctl che utilizzi per installare Anthos Service Mesh si trova nella directory bin.
    • I profili di configurazione di Anthos Service Mesh si trovano nella directory manifests/profiles.
  4. Assicurati di essere nella directory principale dell'installazione di Anthos Service Mesh:
    cd istio-1.13.9-asm.10
  5. Per comodità, aggiungi gli strumenti nella directory /bin a PATH:
    export PATH=$PWD/bin:$PATH
  6. Mac OS

  7. Scarica il file di installazione di Anthos Service Mesh nella directory di lavoro corrente:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.13.9-asm.10-osx.tar.gz
  8. Scarica il file della firma e utilizza OpenSSL per verificarla:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.13.9-asm.10-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.13.9-asm.10-osx.tar.gz.1.sig istio-1.13.9-asm.10.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  9. Estrai i contenuti del file in qualsiasi posizione del file system. Ad esempio, per estrarre i contenuti nella directory di lavoro corrente:
    tar xzf istio-1.13.9-asm.10-osx.tar.gz

    Il comando crea una directory di installazione nella directory di lavoro corrente denominata istio-1.13.9-asm.10 che contiene:

    • Applicazioni di esempio nella directory samples.
    • Lo strumento a riga di comando istioctl che utilizzi per installare Anthos Service Mesh si trova nella directory bin.
    • I profili di configurazione di Anthos Service Mesh si trovano nella directory manifests/profiles.
  10. Assicurati di essere nella directory principale dell'installazione di Anthos Service Mesh:
    cd istio-1.13.9-asm.10
  11. Per comodità, aggiungi gli strumenti nella directory /bin a PATH:
    export PATH=$PWD/bin:$PATH
  12. Windows

  13. Scarica il file di installazione di Anthos Service Mesh nella directory di lavoro corrente:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.13.9-asm.10-win.zip
  14. Scarica il file della firma e utilizza OpenSSL per verificarla:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.13.9-asm.10-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.13.9-asm.10-win.zip.1.sig istio-1.13.9-asm.10.win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  15. Estrai i contenuti del file in qualsiasi posizione del file system. Ad esempio, per estrarre i contenuti nella directory di lavoro corrente:
    tar xzf istio-1.13.9-asm.10-win.zip

    Il comando crea una directory di installazione nella directory di lavoro corrente denominata istio-1.13.9-asm.10 che contiene:

    • Applicazioni di esempio nella directory samples.
    • Lo strumento a riga di comando istioctl che utilizzi per installare Anthos Service Mesh si trova nella directory bin.
    • I profili di configurazione di Anthos Service Mesh si trovano nella directory manifests\profiles.
  16. Assicurati di essere nella directory principale dell'installazione di Anthos Service Mesh:
    cd istio-1.13.9-asm.10
  17. Per comodità, aggiungi gli strumenti nella directory \bin al tuo PATH:
    set PATH=%CD%\bin:%PATH%
  18. Ora che Anthos Service Mesh Istio è installato, controlla la versione di istioctl:
    istioctl version
  19. Crea uno spazio dei nomi denominato istio-system per i componenti del piano di controllo:
    kubectl create namespace istio-system

Installazione di Anthos Service Mesh

  1. Modifica il file overlay.yaml o creane uno nuovo con i seguenti contenuti:
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      meshConfig:
        accessLogFile: /dev/stdout
        enableTracing: true
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
      components:
        ingressGateways:
        - name: istio-ingressgateway
          enabled: true
          k8s:
            service:
              type: LoadBalancer
              ports:
              - name: status-port
                port: 15021
                targetPort: 15021
              - name: http2
                port: 80
                targetPort: 8080
              - name: https
                port: 443
                targetPort: 8443
    
  2. Installa Anthos Service Mesh con istioctl utilizzando il profilo asm-multicloud:
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="asm-1139-10" \
        --filename overlay.yaml

    L'output dovrebbe avere il seguente aspetto:

    kubectl get pods -n istio-system
    NAME                                   READY   STATUS    RESTARTS   AGE
    istio-ingressgateway-88b6fd976-flgp2   1/1     Running   0          3m13s
    istio-ingressgateway-88b6fd976-p5dl9   1/1     Running   0          2m57s
    istiod-asm-1139-10-798ffb964-2ls88       1/1     Running   0          3m21s
    istiod-asm-1139-10-798ffb964-fnj8c       1/1     Running   1          3m21s

    L'argomento --set revision aggiunge un'etichetta di revisione nel formato istio.io/rev=asm-1139-10 a istiod. L'etichetta di revisione viene utilizzata dal webhook dell'iniettore di sidecar automatico per associare i sidecar iniettati a una determinata istiod revisione. Per attivare l'iniezione automatica di sidecar per uno spazio dei nomi, devi etichettarlo con una revisione corrispondente all'etichetta in istiod.

  3. Verifica che l'installazione sia stata completata:
    kubectl get svc -n istio-system

    L'output dovrebbe avere il seguente aspetto:

    NAME                   TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)                                                                      AGE
    istio-ingressgateway   LoadBalancer   172.200.48.52    34.74.177.168   15021:30479/TCP,80:30030/TCP,443:32200/TCP,15012:32297/TCP,15443:30244/TCP   3m35s
    istiod                 ClusterIP      172.200.18.133   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        4m46s
    istiod-asm-1139-10       ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s

OpenShift

Preparazione all'installazione di Anthos Service Mesh

  1. Prima di installare la nuova versione, determina la revisione corrente. Ti serviranno queste informazioni per eliminare il webhook di convalida e il webhook di mutazione dalla tua attuale installazione di Anthos Service Mesh. Utilizza il seguente comando per archiviare la revisione corrente istiod in una variabile di ambiente:
    export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}')
    echo $DELETE_REV

    L'output dovrebbe avere il seguente aspetto: 1.12.9-asm.2

  2. Linux

  3. Concedi la limitazione del contesto di sicurezza anyuid (SCC) a istio-system con il seguente comando OpenShift CLI (oc):
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  4. Scarica il file di installazione di Anthos Service Mesh nella directory di lavoro corrente:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.13.9-asm.10-linux-amd64.tar.gz
  5. Scarica il file della firma e utilizza OpenSSL per verificarla:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.13.9-asm.10-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.13.9-asm.10-linux-amd64.tar.gz.1.sig istio-1.13.9-asm.10.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  6. Estrai i contenuti del file in qualsiasi posizione del file system. Ad esempio, per estrarre i contenuti nella directory di lavoro corrente:
    tar xzf istio-1.13.9-asm.10-linux-amd64.tar.gz

    Il comando crea una directory di installazione nella directory di lavoro corrente denominata istio-1.13.9-asm.10 che contiene:

    • Applicazioni di esempio nella directory samples.
    • Lo strumento a riga di comando istioctl che utilizzi per installare Anthos Service Mesh si trova nella directory bin.
    • I profili di configurazione di Anthos Service Mesh si trovano nella directory manifests/profiles.
  7. Assicurati di essere nella directory principale dell'installazione di Anthos Service Mesh:
    cd istio-1.13.9-asm.10
  8. Per comodità, aggiungi gli strumenti nella directory /bin a PATH:
    export PATH=$PWD/bin:$PATH
  9. Mac OS

  10. Concedi la limitazione del contesto di sicurezza anyuid (SCC) a istio-system con il seguente comando OpenShift CLI (oc):
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  11. Scarica il file di installazione di Anthos Service Mesh nella directory di lavoro corrente:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.13.9-asm.10-osx.tar.gz
  12. Scarica il file della firma e utilizza OpenSSL per verificarla:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.13.9-asm.10-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.13.9-asm.10-osx.tar.gz.1.sig istio-1.13.9-asm.10.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  13. Estrai i contenuti del file in qualsiasi posizione del file system. Ad esempio, per estrarre i contenuti nella directory di lavoro corrente:
    tar xzf istio-1.13.9-asm.10-osx.tar.gz

    Il comando crea una directory di installazione nella directory di lavoro corrente denominata istio-1.13.9-asm.10 che contiene:

    • Applicazioni di esempio nella directory samples.
    • Lo strumento a riga di comando istioctl che utilizzi per installare Anthos Service Mesh si trova nella directory bin.
    • I profili di configurazione di Anthos Service Mesh si trovano nella directory manifests/profiles.
  14. Assicurati di essere nella directory principale dell'installazione di Anthos Service Mesh:
    cd istio-1.13.9-asm.10
  15. Per comodità, aggiungi gli strumenti nella directory /bin a PATH:
    export PATH=$PWD/bin:$PATH
  16. Windows

  17. Concedi la limitazione del contesto di sicurezza anyuid (SCC) a istio-system con il seguente comando OpenShift CLI (oc):
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  18. Scarica il file di installazione di Anthos Service Mesh nella directory di lavoro corrente:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.13.9-asm.10-win.zip
  19. Scarica il file della firma e utilizza OpenSSL per verificarla:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.13.9-asm.10-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.13.9-asm.10-win.zip.1.sig istio-1.13.9-asm.10.win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  20. Estrai i contenuti del file in qualsiasi posizione del file system. Ad esempio, per estrarre i contenuti nella directory di lavoro corrente:
    tar xzf istio-1.13.9-asm.10-win.zip

    Il comando crea una directory di installazione nella directory di lavoro corrente denominata istio-1.13.9-asm.10 che contiene:

    • Applicazioni di esempio nella directory samples.
    • Lo strumento a riga di comando istioctl che utilizzi per installare Anthos Service Mesh si trova nella directory bin.
    • I profili di configurazione di Anthos Service Mesh si trovano nella directory manifests\profiles.
  21. Assicurati di essere nella directory principale dell'installazione di Anthos Service Mesh:
    cd istio-1.13.9-asm.10
  22. Per comodità, aggiungi gli strumenti nella directory \bin al tuo PATH:
    set PATH=%CD%\bin:%PATH%
  23. Ora che Anthos Service Mesh Istio è installato, controlla la versione di istioctl:
    istioctl version
  24. Crea uno spazio dei nomi denominato istio-system per i componenti del piano di controllo:
    kubectl create namespace istio-system

Configura il webhook di convalida

Quando installi Anthos Service Mesh, imposti un'etichetta di revisione su istiod. Devi impostare la stessa revisione sul webhook di convalida.

  1. Crea un file denominato istiod-service.yaml con i seguenti contenuti:
    apiVersion: v1
    kind: Service
    metadata:
      name: istiod
      namespace: istio-system
      labels:
        istio.io/rev: asm-1139-10
        app: istiod
        istio: pilot
        release: istio
    spec:
      ports:
        - port: 15010
          name: grpc-xds # plaintext
          protocol: TCP
        - port: 15012
          name: https-dns # mTLS with k8s-signed cert
          protocol: TCP
        - port: 443
          name: https-webhook # validation and injection
          targetPort: 15017
          protocol: TCP
        - port: 15014
          name: http-monitoring # prometheus stats
          protocol: TCP
      selector:
        app: istiod
        istio.io/rev: asm-1139-10
      meshConfig:
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
  2. Utilizza kubectl per applicare la configurazione dell'webhook di convalida:
    kubectl apply -f istiod-service.yaml
  3. Verifica che la configurazione sia stata applicata:
    kubectl get svc -n istio-system

    La risposta dovrebbe essere simile alla seguente:

    NAME     TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                                 AGE
    istiod   ClusterIP   172.200.18.133   <none>        15010/TCP,15012/TCP,443/TCP,15014/TCP   22s

Installazione di Anthos Service Mesh

  1. Modifica il file overlay.yaml o creane uno nuovo con i seguenti contenuti:
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      meshConfig:
        accessLogFile: /dev/stdout
        enableTracing: true
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
      components:
        ingressGateways:
          - name: istio-ingressgateway
            enabled: true
            k8s:
              service:
                type: LoadBalancer
                ports:
                - name: status-port
                  port: 15021
                  targetPort: 15021
                - name: http2
                  port: 80
                  targetPort: 8080
                - name: https
                  port: 443
                  targetPort: 8443
    
  2. Installa Anthos Service Mesh con istioctl utilizzando il profilo asm-multicloud:
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="asm-1139-10" \
        --filename overlayfile.yaml

    L'output dovrebbe avere il seguente aspetto:

    kubectl get pods -n istio-system
    NAME                                   READY   STATUS    RESTARTS   AGE
    istio-ingressgateway-88b6fd976-flgp2   1/1     Running   0          3m13s
    istio-ingressgateway-88b6fd976-p5dl9   1/1     Running   0          2m57s
    istiod-asm-1139-10-798ffb964-2ls88       1/1     Running   0          3m21s
    istiod-asm-1139-10-798ffb964-fnj8c       1/1     Running   1          3m21s

    L'argomento --set revision aggiunge un'etichetta di revisione nel formato istio.io/rev=1.6.11-asm.1 a istiod. L'etichetta di revisione viene utilizzata dal webhook dell'iniettore di sidecar automatico per associare i sidecar iniettati a una determinata istiod revisione. Per attivare l'iniezione automatica di sidecar per uno spazio dei nomi, devi etichettarlo con una revisione corrispondente all'etichetta in istiod.

  3. Verifica che l'installazione sia stata completata:
    kubectl get svc -n istio-system

    L'output dovrebbe avere il seguente aspetto:

    NAME                   TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)                                                                      AGE
    istio-ingressgateway   LoadBalancer   172.200.48.52    34.74.177.168   15021:30479/TCP,80:30030/TCP,443:32200/TCP,15012:32297/TCP,15443:30244/TCP   3m35s
    istiod                 ClusterIP      172.200.18.133   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        4m46s
    istiod-asm-1139-10       ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s