Schritt 2: Cert-Manager und ASM installieren

In diesem Schritt wird erläutert, wie Sie cert-manager und Anthos Service Mesh (ASM) herunterladen und installieren, das für die Verwendung von Apigee hybrid erforderlich ist.

Cert-manager installieren

Verwenden Sie einen der folgenden beiden Befehle, um cert-manager v0.14.2 auf GitHub zu installieren. Verwenden Sie den Befehl kubectl version, um die Kubernetes-Version zu ermitteln.

  • Wenn Sie Kubernetes 1.15 oder höher haben:
    kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v0.14.2/cert-manager.yaml
  • Kubernetes-Versionen vor 1.15:
    kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v0.14.2/cert-manager-legacy.yaml

In einer Antwort sollte angezeigt werden, dass der Namespace "cert-manager" und mehrere cert-manager-Ressourcen erstellt wurden.

ASM installieren

Apigee hybrid verwendet die mit Anthos Service Mesh (ASM) bereitgestellte Istio-Distribution. Führen Sie die folgenden Schritte aus, um ASM in Ihrem Cluster zu installieren.

Unterstützte ASM-Versionen

Für neue Installationen von Hybrid-Umgebungen installieren Sie ASM 1.6.x in Ihrem Cluster. Wenn Sie ein Upgrade von der Hybrid-Version 1.2.x durchführen, installieren Sie die ASM Version 1.5.x in Ihrem Cluster.

Einrichtungs- und Konfigurationsschritte für ASM ausführen

Um die ASM-Installation abzuschließen, müssen Sie zuerst die ASM-spezifischen Einrichtungs- und Konfigurationsschritte in der ASM-Dokumentation befolgen. Anschließend müssen Sie hierher zurückkehren, um die Hybrid-Konfiguration abzuschließen, bevor Sie die Konfiguration auf den Cluster anwenden.

  1. Folgen Sie den Schritten zur Einrichtung und Konfiguration von ASM:
  2. Nachdem Sie die Einrichtungs- und Konfigurationsschritte für ASM abgeschlossen haben, fahren Sie mit dem nächsten Abschnitt fort, um die Schritte zur Hybridkonfiguration und ASM-Installation abzuschließen.

Abschließende Hybridkonfiguration ausführen und ASM installieren

Fügen Sie der istio-operator.yaml-Datei anschließend Hybrid-spezifische Konfigurationen hinzu und installieren Sie ASM.

  1. Achten Sie darauf, dass Sie sich im Stammverzeichnis der ASM-Installation befinden. Beispiel: 1.6.11-asm.1.
  2. Öffnen Sie die Datei ./asm/cluster/istio-operator.yaml in einem Editor.
  3. Fügen Sie unter spec.meshConfig: die folgenden Zeilen hinzu:

    Zu kopierender Text

        # This disables Istio from configuring workloads for mTLS if TLSSettings are not specified. 1.4 defaulted to false.
        enableAutoMtls: false
        accessLogFile: "/dev/stdout"
        accessLogEncoding: 1
        # This is Apigee's custom access log format. Changes should not be made to this
        # unless first working with the Data and AX teams as they parse these logs for
        # SLOs.
        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)%"}'

    Beispiel für eine Platzierung

    Zeilenumbrüche wurden zur besseren Lesbarkeit eingefügt

    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    metadata:
      clusterName: "hybrid-example/us-central1/example-cluster" # {"$ref":"#/definitions/io.k8s.cli.substitutions.cluster-name"}
    spec:
      profile: asm
      hub: gcr.io/gke-release/asm # {"$ref":"#/definitions/io.k8s.cli.setters.anthos.servicemesh.hub"}
      tag: 1.5.7-asm.0 # {"$ref":"#/definitions/io.k8s.cli.setters.anthos.servicemesh.tag"}
      meshConfig:
        # This disables Istio from configuring workloads for mTLS if TLSSettings are not specified.
        # 1.4 defaulted to false.
        enableAutoMtls: false
        accessLogFile: "/dev/stdout"
        accessLogEncoding: 1
        # This is Apigee's custom access log format. Changes should not be made to this
        # unless first working with the Data and AX teams as they parse these logs for
        # SLOs.
        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":"%RE
          SPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIV
          ED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response
          _flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_serv
          ice_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_S
          ERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
        defaultConfig:
          proxyMetadata:
            GCP_METADATA: "hybrid-example|123456789123|example-cluster|us-central1" #
              {"$ref":"#/definitions/io.k8s.cli.substitutions.gke-metadata"}
  4. Fügen Sie die spec:components-Stanza in der Datei istio-operator.yaml unterhalb des Abschnitts meshConfig: und unmittelbar über values: hinzu bzw. aktualisieren Sie sie. Dabei ist reserved_static_ip die von Ihnen reservierte IP-Adresse für den Laufzeit-Ingress-Gateway in Projekt- und Organisationseinrichtung – Schritt 5: Cloud DNS konfigurieren.

    Zu kopierender Text

        ingressGateways:
        - name: istio-ingressgateway
          enabled: true
          k8s:
            service:
              type: LoadBalancer
              loadBalancerIP: reserved_static_ip
              ports:
              - name: status-port
                port: 15020
                targetPort: 15020
              - name: http2
                port: 80
                targetPort: 80
              - name: https
                port: 443
              - name: prometheus
                port: 15030
                targetPort: 15030
              - name: tcp
                port: 31400
                targetPort: 31400
              - name: tls
                port: 15443
                targetPort: 15443
    

    Beispiel für eine Platzierung

    Zeilenumbrüche wurden zur besseren Lesbarkeit eingefügt

    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    metadata:
      clusterName: "hybrid-example/us-central1/example-cluster" # {"$ref":"#/definitions/io.k8s.cli.substitutions.cluster-name"}
    spec:
      profile: asm
      hub: gcr.io/gke-release/asm # {"$ref":"#/definitions/io.k8s.cli.setters.anthos.servicemesh.hub"}
      tag: 1.5.7-asm.0 # {"$ref":"#/definitions/io.k8s.cli.setters.anthos.servicemesh.tag"}
      meshConfig:
        # This disables Istio from configuring workloads for mTLS if TLSSettings are not specified.
        # 1.4 defaulted to false.
        enableAutoMtls: false
        accessLogFile: "/dev/stdout"
        accessLogEncoding: 1
        # This is Apigee's custom access log format. Changes should not be made to this
        # unless first working with the Data and AX teams as they parse these logs for
        # SLOs.
        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":"%RE
          SPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIV
          ED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response
          _flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_serv
          ice_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_S
          ERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
        defaultConfig:
          proxyMetadata:
            GCP_METADATA: "hybrid-example|123456789123|example-cluster|us-central1" #
              {"$ref":"#/definitions/io.k8s.cli.substitutions.gke-metadata"}
    
      components:
        pilot:
          k8s:
            hpaSpec:
              maxReplicas: 2
        ingressGateways:
        - name: istio-ingressgateway
          enabled: true
          k8s:
            service:
              type: LoadBalancer
              loadBalancerIP: 123.234.56.78
              ports:
              - name: status-port
                port: 15020
                targetPort: 15020
              - name: http2
                port: 80
                targetPort: 80
              - name: https
                port: 443
              - name: prometheus
                port: 15030
                targetPort: 15030
              - name: tcp
                port: 31400
                targetPort: 31400
              - name: tls
                port: 15443
                targetPort: 15443
            hpaSpec:
              maxReplicas: 2
      values:
        .
        .
        .
  5. Kehren Sie zu der zuvor verwendeten ASM-Dokumentation zurück und schließen Sie die ASM-Installation ab. Installieren oder wenden Sie die Datei istio-operator.yaml auf den Cluster an. Wenn Sie eine Auswahl haben, wählen Sie PERMISSIVE mTLS aus.

Zusammenfassung

Sie haben nun cert-manager und ASM installiert und können jetzt das Apigee Hybrid-Befehlszeilentool auf Ihrem lokalen Computer installieren.

1 2 (WEITER) Schritt 3: Apigeectl installieren 4 5