Edge Microgateway als Sidecar-Proxy bereitstellen

Sie sehen die Dokumentation zu Apigee Edge.
Zur Apigee X-Dokumentation
weitere Informationen

Einführung

In diesem Thema wird erläutert, wie Sie Edge Microgateway in einem Kubernetes-Cluster als Sidecar-Proxy ausführen. Sie haben zwei Möglichkeiten für die Sidecar-Bereitstellung: manuelle und automatische Injektion. In diesem Thema werden beide Optionen beschrieben.

Weitere Informationen finden Sie unter Einführung in Edge Microgateway in Kubernetes.

Hinweis

Führen Sie die unter Voraussetzungen beschriebenen Schritte aus.

Testdienst bereitstellen

Stellen Sie einen einfachen „hello“-Dienst bereit und prüfen Sie die Bereitstellung:

  1. Beispiel bereitstellen

    kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default
  2. Prüfen Sie, ob der Dienst ausgeführt wird. Möglicherweise müssen Sie einige Sekunden warten, bis der Pod in den Status „Wird ausgeführt“ wechselt:

    kubectl get pods --namespace=default

    Beispielausgabe:

    NAME                          READY     STATUS    RESTARTS   AGE
    helloworld-569d6565f9-lwrrv   1/1       Running   0          17m
    
  3. Löschen Sie die Testdienstbereitstellung. Sie werden es später neu installieren, nachdem Sie die Sidecar-Injektion aktiviert haben:

     kubectl delete -f samples/helloworld/helloworld.yaml --namespace=default

Manuelle Sidecar-Injektion verwenden

Von den beiden Optionen für die Sidecar-Einfügung ist die manuelle Sidecar-Einfügung der einfachere und direktere Ansatz und kann mit einem einzigen kubectl-Befehl durchgeführt werden.

Edge Microgateway konfigurieren

Mit dem folgenden Befehl wird Edge Microgateway für Ihre Apigee-Organisation konfiguriert und der Proxy edgemicro-auth bereitgestellt.

  1. Führen Sie folgenden Befehl aus:

    edgemicro configure -o [org] -e [env] -u [username]

    Wobei:

    • org: Name Ihrer Edge-Organisation (Sie müssen ein Organisationsadministrator sein).

    • env: Eine Umgebung in Ihrer Organisation, z. B. „test“ oder „prod“.

    • username: Die mit Ihrem Apigee-Konto verknüpfte E-Mail-Adresse.

    Beispiel

    edgemicro configure -o myorg -e test -u jdoe@example.com

    Die Ausgabe (siehe Beispiel unten) wird in der Datei gespeichert:

    $HOME/.edgemicro/org_name-env_name-config.yaml
    .

    current nodejs version is v6.9.1
    current edgemicro version is 2.5.25
    password:
    file doesn't exist, setting up
    Give me a minute or two... this can take a while...
    App edgemicro-auth deployed.
    checking org for existing KVM
    KVM already exists in your org
    configuring host edgemicroservices.apigee.net for region us-west1
    
    saving configuration information to: /Users/jdoe/.edgemicro/myorg-test-config.yaml
    
    vault info:
     -----BEGIN CERTIFICATE-----
    MIICpDCCAYwCCQCV9eBcO9a5WzANBgkqhkiG9w0BAQsFADAUMRIwEAYDVQQDDAls
    b2NhbGhvc3QwHhcNMagwODA5MDAzMDEzWhcNMTgwODEwMDAzMDEzWjAUMRIwEAYD
    VQQDDBlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDh
    nAHT7JHX/WvWHRFb8FLm53SPIDld5LyPOUfINdEyhSIEeXoOUKg4EPweJPVSC9Vm
    Hw4ZMtEqWJM/XsQWvLe8ylRJa5wgmzmFCqAsuzs9+rmc9KvJqjpOh2uRTUf7KKfT
    iXL2UEseprcI5g8zNyqKyEf/ecWIwz3AkkPAZebVTsrdDfIDHvkyhhvlAHZAB9kn
    GtqP3N8kOlv4KQto9Gr7GYUGUIDugt7gM1F611+RBS+fYRi32GUAq/UQDkhYL8cp
    oIJiF7UYkk2+9t9CdOCDuIUCvJioHJQd0xvDpkC9f6LvwjwnCwku+4F2Q63+av5I
    mJoZJQPvW5aP53Qkk+kHAgMBAAEwDKYJKoZIhvcNAQELBQADggEBALyUBolXUFN8
    1bf268nR+gS8MOFDTxO1bUz+bKuT/g3K1PuNUJTueT+0L1H2OiZUzazAqwn2sqzN
    lQuvLg6LjxjlNkqTJGiJvGDcYVq45dv7UyxAZxhqxTxhlQ+Yu5R9pbQnzujezHpH
    6gtCoCkSt/QqiJ3YsmsVu5is+HpIJepMt0CyMh5tK9j87hl46QhHklaVfQ3ycMVm
    /wNPR/pjizg1FDUeq4nj/7DBVbMf9net/BDaZLeSW1HJ1vcsCXIcSZfQd4QymGFn
    8ADrND7ydVjwO/s23soPDTy0g4yLIZvky2tpT8d7YahNqSv2n7sXsLxruzcyCoQ4
    w+e3Z3F7IKI=
    -----END CERTIFICATE-----
    
    The following credentials are required to start edge micro
      key: 1a3b2754c7f20614817b86e09895825ecc252d34df6c4be21ae24356f09e6eb4
      secret: 16ad2431de73f07f57a6d44048f08d93b63f783bf1f2ac4221182aa7289c7cef
    
    edgemicro configuration complete!
    

Edge Microgateway als Sidecar einfügen

Führen Sie diesen Befehl aus, um Edge Microgateway manuell als Sidecar-Proxy in einen Dienst-Pod einzufügen:

kubectl apply -f <(edgemicroctl -org=your_org -env=your_env -key=your_key -sec=your_secret -conf=config_file_path -svc=service_deployment_file)

Dabei gilt:

  • your_org: Die Apigee-Organisation, die Sie im Befehl edgemicro configure angegeben haben.
  • your_env: Die Umgebung, die Sie im Befehl edgemicro configure angegeben haben.
  • your_key: Der vom Befehl edgemicro configure zurückgegebene Schlüssel.
  • your_secret: vom Befehl edgemicro configure zurückgegebenes Secret.
  • config_file_path: Der Pfad zur Edge Micro-Konfigurationsdatei, die vom Befehl edgemicro configure zurückgegeben wurde.
  • service_deployment_file: Der Pfad zur Bereitstellungsdatei des Dienstes, dessen Pod den Companion-Sidecar-Dienst abruft. Beispiel: samples/helloworld/helloworld.yaml

Beispiel:

kubectl apply -f <(edgemicroctl -org=myorg -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/jdoe/.edgemicro/myorg-test-config.yaml -svc=samples/helloworld/helloworld.yaml)

Konfiguration testen

  1. Prüfen Sie die Dienstbereitstellungen:

    kubectl get services -n default

    Beispielausgabe:

    NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
    helloworld   NodePort    10.15.254.163   <none>        8081:32401/TCP   56s
    kubernetes   ClusterIP   10.15.240.1     <none>        443/TCP          41m
    
  2. Jetzt können Sie die Sidecar-Bereitstellung von Edge Microgateway testen. Eine ausführliche Anleitung finden Sie unter Proxy testen.

Automatische Sidecar-Injektion verwenden

Mit den folgenden Schritten konfigurieren Sie die automatische Sidecar-Einfügung für Ihren Kubernetes-Cluster. Durch diese Konfiguration kann Edge Microgateway als Sidecar-Proxy in Kubernetes eingefügt werden.

Sidecar-Injektor installieren

  1. Installieren Sie die ConfigMap, mit der die Sidecar-Injektion von Edge Microgateway aktiviert wird:

    kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-configmap-release.yaml
  2. Führen Sie das folgende Skript aus, um den Webhook-Dienst zu installieren. Der Webhook-Dienst ist für die automatische Sidecar-Einfügung erforderlich:

    ./install/kubernetes/webhook-create-signed-cert.sh \
        --service edgemicro-sidecar-injector \
        --namespace edgemicro-system \
        --secret sidecar-injector-certs
    
  3. Fügen Sie das CA-Bundle in die Webhook-Installationsdatei ein. Der Kubernetes-API-Server verwendet diese Datei zum Aufrufen des Webhooks:

    cat install/kubernetes/edgemicro-sidecar-injector.yaml | \
         ./install/kubernetes/webhook-patch-ca-bundle.sh > \
         install/kubernetes/edgemicro-sidecar-injector-with-ca-bundle.yaml
    
  4. Installieren Sie den Edge Microgateway-Sidecar-Injektor-Webhook:

    kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-with-ca-bundle.yaml
    

    Beispielausgabe:

    service "edgemicro-sidecar-injector" created
    serviceaccount "edgemicro-sidecar-injector-service-account" created
    deployment "edgemicro-sidecar-injector" created
    mutatingwebhookconfiguration "edgemicro-sidecar-injector" created
    
  5. Prüfen Sie, ob der Edge Microgateway-Sidecar-Injektor-Webhook ausgeführt wird:

    kubectl -n edgemicro-system get deployment -ledgemicro=sidecar-injector
    

    Beispielausgabe:

    NAME                         DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    edgemicro-sidecar-injector   1         1         1            1           12m
    
  6. Prüfen Sie, ob der Sidecar-Injection-Pod in Ihrem Cluster ausgeführt wird. Im Namespace edgemicro-system sind die Systemdienste installiert, einschließlich des Ingress-Controllers, des Standard-HTTP-Back-Ends und des Sidecar-Injektors:

    kubectl get pods -n edgemicro-system

    Beispielausgabe:

    NAME                                            READY     STATUS    RESTARTS   AGE
    default-http-backend-55c6c69b88-gfnfd           1/1       Running   0          1h
    edgemicro-ingress-controller-64444469bf-jhn8b   1/1       Running   3          1h
    edgemicro-sidecar-injector-7d95698fbf-cq84q     1/1       Running   0          3m
    

Edge Microgateway konfigurieren und einfügen

Im nächsten Schritt führen Sie ein interaktives Skript aus, um eine Edge Microgateway-Konfiguration zu erstellen, die mit einem Kubernetes-Namespace verknüpft ist. Anschließend fügen Sie die Konfiguration in Ihren Kubernetes-Cluster ein.

  1. Führen Sie das folgende interaktive Skript aus und geben Sie die angeforderten Parameter an. Der Befehl generiert ein Konfigurationsprofil, das Sie im nächsten Schritt verwenden.

    ./install/kubernetes/webhook-edgemicro-patch.sh

    Weitere Informationen zu den Eingabeparametern finden Sie unter Referenz.

    Beispieleingaben:

    1. Namespace to deploy application [default]:

      Drücken Sie die Eingabetaste.

    2. Authenticate with OAuth Token ("n","Y") [N/y]

      Geben Sie n ein.

    3. Apigee username [required]:

      Geben Sie Ihren Apigee-Nutzernamen (E-Mail-Adresse) ein. Beispiel: jdoe@google.com.

    4. Apigee password [required]:

      Geben Sie Ihr Apigee-Passwort ein.

    5. Apigee organization [required]:

      Geben Sie den Namen Ihrer Apigee-Organisation ein.

    6. Apigee environment [required]:

      Geben Sie einen Umgebungsnamen für Ihre Organisation ein. Beispiel: „test“.

    7. Virtual Host [default]:

      Drücken Sie die Eingabetaste.

    8. Is this Private Cloud ("n","y") [N/y]:

      Geben Sie n ein, wenn Sie sich in einer öffentlichen Cloud befinden.

    9. Edgemicro Key. Press Enter to generate:

      Drücken Sie die Eingabetaste.

    10. Edgemicro Secret. Press Enter to generate:

      Drücken Sie die Eingabetaste.

    11. Edgemicro org-env-config.yaml. Press Enter to generate:

      Drücken Sie die Eingabetaste.

      Beispielausgabe:

      current nodejs version is v6.9.1
      current edgemicro version is 2.5.25
      config initialized to /Users/jdoe/.edgemicro/default.yaml
      Configure for Cloud
      ******************************************************************************************
      Config file is Generated in /Users/jdoe/Work/GITHUB/microgateway_2.5.25_Darwin_x86_64/config directory.
      
      Please make changes as desired.
      *****************************************************************************************
      
    12. Do you agree to proceed("n","y") [N/y]:

      Geben Sie y ein.

      Beispielausgabe:

      Configuring Microgateway with
      
      key:daacf75dd660d160b801c9117fb1ec0935896615479e39dbbae88be81a2d84
      secret:a60fd57c1db9f3a06648173fb541cb9c59188d3b6037a76f490ebf7a6584b0
      config:~/.edgemicro/jdoe-test-config.yaml
      
      ********************************************************************************************************
      kubectl apply -f install/kubernetes/edgemicro-config-namespace-bundle.yaml
      ********************************************************************************************************
      
  2. Führen Sie den Befehl aus, der in der letzten Zeile der Ausgabe angegeben ist. Mit diesem kubectl-Befehl wird das generierte Edge Microgateway-Konfigurationsprofil in Kubernetes eingefügt:

    kubectl apply -f install/kubernetes/edgemicro-config-namespace-bundle.yaml
  3. Sehen Sie sich den Status der Webhook-Einschleusung an. Diese Funktion ist derzeit nicht aktiviert:

    kubectl get namespace -L edgemicro-injection

    Beispielausgabe:

    NAME               STATUS    AGE       EDGEMICRO-INJECTION
    default            Active    1d
    edgemicro-system   Active    1d
    kube-public        Active    1d
    kube-system        Active    1d
    
  4. Führen Sie den folgenden Befehl aus, um die Webhook-Einschleusung für den Webhook zu aktivieren:

    kubectl label namespace default edgemicro-injection=enabled
  5. Rufen Sie den Status der Webhook-Einschleusung noch einmal auf. Jetzt ist sie aktiviert:

    kubectl get namespace -L edgemicro-injection

    Beispielausgabe:

    NAME               STATUS    AGE       EDGEMICRO-INJECTION
    default            Active    1d        enabled
    edgemicro-system   Active    1d
    kube-public        Active    1d
    kube-system        Active    1d
    

Testdienst bereitstellen

Stellen Sie den Testdienst jetzt noch einmal bereit. Edge Microgateway wird automatisch in den Pod des Dienstes eingefügt.

kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default

Prüfen Sie, ob Edge Microgateway zusammen mit dem Testdienst in den Pod eingeschleust wurde:

kubectl get pods --namespace=default --watch

Beispielausgabe:

NAME                          READY     STATUS            RESTARTS   AGE
helloworld-6987878fc4-pkw8h   0/2       PodInitializing   0          12s
helloworld-6987878fc4-pkw8h   2/2       Running           0         26s

Wenn sich der Status in Running ändert, drücken Sie ctrl-c, um den Befehl zu beenden.

Jetzt können Sie die automatische Sidecar-Bereitstellung von Edge Microgateway testen. Eine ausführliche Anleitung finden Sie unter Proxy testen.

Proxy testen

Bei der Sidecar-Bereitstellung wird automatisch ein API-Proxy für Ihren Dienst für Sie erstellt. Sie müssen keinen Edge Microgateway-fähigen Proxy erstellen.

Ingress-IP-Adresse abrufen

Mit der externen IP-Adresse für das Ingress-Objekt können Sie den Dienst von außerhalb des Clusters aufrufen.

  1. Rufen Sie die externe IP-Adresse des Ingress-Controllers ab:

    kubectl get ing -o wide

    Beispielausgabe:

    NAME      HOSTS     ADDRESS        PORTS     AGE
    gateway   *         35.238.13.54   80        1m
    
  2. Kopieren Sie den Wert EXTERNAL-IP für das Ingress-Objekt und exportieren Sie ihn in eine Variable. Sie können die Variable manuell festlegen:

    export GATEWAY_IP=external_ip

    Beispiel:

    export GATEWAY_IP=35.238.249.62

    Alternativ können Sie den folgenden Befehl verwenden, um sie für Sie festzulegen:

    export GATEWAY_IP=$(kubectl describe ing gateway --namespace default | grep "Address" | cut -d ':' -f2 | tr -d "[:space:]")
  3. Prüfen Sie, ob die Variable exportiert wurde. Beispiel:

    echo $GATEWAY_IP

    Beispielausgabe:

    35.238.249.62
    
  4. Rufen Sie den Dienst auf:

    curl $GATEWAY_IP

    Ausgabe:

    {"error":"missing_authorization","error_description":"Missing Authorization header"}
    

    Als Nächstes beheben Sie den fehlenden Autorisierungsfehler, indem Sie ein API-Produkt und eine Entwickler-App in Edge konfigurieren, damit Sie einen gültigen API-Schlüssel erhalten. Wenn Sie den Schlüssel einem Autorisierungsheader für den API-Aufruf hinzufügen, ist der Aufruf erfolgreich und dieser Fehler wird nicht angezeigt.

Komponenten in Apigee Edge erstellen

Erstellen Sie als Nächstes ein API-Produkt und eine Entwickler-App auf Apigee Edge.

API-Produkt erstellen

  1. Melden Sie sich bei Apigee Edge an.
  2. Wählen Sie im seitlichen Navigationsmenü Veröffentlichen > API-Produkte aus.
  3. Klicken Sie auf + API Product. Die Produktseite wird angezeigt.
  4. Füllen Sie die Produktseite so aus. Für Felder, die unten nicht aufgeführt sind, können Sie die Standardwerte verwenden. Speichern Sie erst, wenn Sie dazu aufgefordert werden.

    Name hello-world-product
    Display Name Edge Micro hello product
    Environment test

  5. Klicken Sie im Abschnitt „Pfad“ auf + Benutzerdefinierte Ressource.

  6. Fügen Sie den Pfad / hinzu.

  7. Klicken Sie noch einmal auf + Benutzerdefinierte Ressource und fügen Sie den Pfad /** hinzu

  8. Klicken Sie im Bereich „API-Proxys“ auf + API-Proxy und fügen Sie edgemicro-auth hinzu.

  9. Speichern Sie das API-Produkt.

Entwickler-App erstellen

  1. Wählen Sie im seitlichen Navigationsmenü Apps aus.
  2. Klicken Sie auf + App. Die Seite mit den Entwickler-App-Details wird angezeigt.
  3. Füllen Sie die Seite „Entwickler-App“ wie unten beschrieben aus. Speichern Sie sie erst, wenn Sie dazu aufgefordert werden.

    Name hello-world-app
    Display Name Edge Micro hello app
    Developer Wählen Sie im Drop-down-Menü einen Entwickler aus.
  4. Klicken Sie im Bereich „Anmeldedaten“ auf + Produkt und wählen Sie das gerade erstellte hello-world-product aus.

  5. Klicken Sie auf Speichern.

  6. Du bist wieder auf der Seite, auf der alle Entwickler-Apps aufgelistet sind.

  7. Wählen Sie die eben erstellte App hello-world-app aus.

  8. Klicken Sie neben Consumer Key (Consumer-Key) auf Show (Anzeigen).

  9. Kopieren Sie den Wert des Consumer-Keys. Dieser Wert ist der API-Schlüssel, mit dem Sie sichere API-Aufrufe an den Dienst helloworld senden.

  10. Warten Sie ein paar Minuten. Es dauert einige Minuten, bis die Änderungen, die Sie in Apigee Edge vorgenommen haben, mit der im Cluster bereitgestellten Edge Microgateway-Instanz synchronisiert werden.

API aufrufen

Nachdem die Konfigurationsänderungen in das Mikrogateway geladen wurden, können Sie die folgenden Tests ausführen.

  1. Rufen Sie die API ohne API-Schlüssel auf. Sie erhalten dann eine Fehlermeldung wie die folgende:

    curl $GATEWAY_IP

    Erwartete Ausgabe:

    {"error":"missing_authorization","error_description":"Missing Authorization
    header"}
    

    Für erfolgreiche API-Aufrufe benötigen Sie den API-Schlüssel.

  2. Rufen Sie den Consumer-Key aus der von Ihnen erstellten Entwickler-App ab. Dieser Wert ist der API-Schlüssel, den Sie zum Aufrufen des Test-Proxys benötigen:

    curl -H 'x-api-key:your-edge-api-key'  $GATEWAY_IP

    Beispiel:

    curl -H "x-api-key:DeX2eEesYAdRJ5Gdbo77nT9uUfJZql19" $GATEWAY_IP

    Ausgabe:

    Hello world
    

    Die Antwort "Hello World" wird vom Dienst helloworld zurückgegeben, der für den Pod bereitgestellt wurde. Der Aufruf dieses Dienstes wurde zuerst über Edge Microgateway weitergeleitet, wo die Authentifizierung ausgeführt wurde. Wenn Sie die Antwort „Hello World“ sehen, haben Sie Edge Microgateway erfolgreich so konfiguriert, dass es als Sidecar-Proxy im Dienst-Pod helloworld funktioniert.

Nächste Schritte

Im Abschnitt Aufgaben finden Sie Informationen zum Hinzufügen benutzerdefinierter Plug-ins, zum Skalieren der Bereitstellung, zum Vornehmen von Konfigurationsänderungen und zu anderen Aufgaben, die Sie ausführen können.