Kubernetes-Einbindungsaufgaben

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

Benutzerdefiniertes Plug-in hinzufügen

Sie können dem Microgateway neue Features und Funktionen hinzufügen, indem Sie benutzerdefinierte Plug-ins schreiben. Mit benutzerdefinierten Plug-ins können Sie programmatisch mit den Anfragen und Antworten interagieren, die über das Mikrogateway gesendet werden.

In diesem Abschnitt wird erläutert, wie Sie Plug-ins für eine Edge Microgateway-Instanz verpacken und bereitstellen, die in Ihrem Kubernetes-Cluster ausgeführt wird.

Im weiteren Verlauf dieses Abschnitts wird davon ausgegangen, dass Sie mit dem Schreiben und Konfigurieren von Plug-ins für eine standardmäßige Edge Microgateway-Einrichtung vertraut sind. Ist dies nicht der Fall, lesen Sie den Abschnitt Benutzerdefinierte Plug-ins entwickeln.

Plug-ins verpacken

So verpacken Sie benutzerdefinierte Plug-ins:

  1. Schreiben und testen Sie das Plug-in gemäß der Anleitung unter Einfaches Plug-in schreiben.

  2. Platzieren Sie den Plug-in-Code in der richtigen Verzeichnisstruktur. Plug-in-Verzeichnisse müssen einer festgelegten Struktur folgen. Das folgende Beispiel zeigt die Struktur, die Sie befolgen müssen, wobei response-uppercase und request-headers die Namen von Ordnern sind, die benutzerdefinierten Plug-in-Code enthalten. Diese Namen sind nur Beispiele, die Ordnernamen können abweichen:

    plugin
      |
      |-- plugins
        |
        |- response-uppercase
        |     |- index.js
        |     |- package.json
        |- request-headers
        |     | - index.js
              | - package.json
    
  3. cd zum Ordner plugin.

  4. Komprimieren Sie im Ordner plugin den gesamten Ordner plugins:

    zip -r plugins.zip plugins/

Docker-Image erstellen

  1. Erstellen Sie in dem Verzeichnis, in dem sich auch die ZIP-Datei befindet, eine neue Datei mit dem Namen Dockerfile.
  2. Fügen Sie Dockerfile den folgenden Code hinzu und speichern Sie die Datei:

    FROM gcr.io/apigee-microgateway/edgemicro:latest
    RUN apt-get install unzip
    COPY plugins.zip /opt/apigee/
    RUN chown apigee:apigee /opt/apigee/plugins.zip
    RUN su - apigee -c "unzip /opt/apigee/plugins.zip -d /opt/apigee"
    EXPOSE 8000
    EXPOSE 8443
    ENTRYPOINT ["entrypoint"]
    
  3. Erstellen Sie mit Ihren Plug-ins ein neues Edge Microgateway-Docker-Image und übertragen Sie es in die Docker-Registry. Sie können eine beliebige Registry verwenden, z. B. docker.io oder gcr.io:

    docker build -t edgemicroplugins .
    docker tag edgemicroplugins container-registry/your-project/edgemicroplugins
    docker push container-registry/your-project/edgemicroplugins
    

    Beispiel:

    docker build -t edgemicroplugins .
    docker tag edgemicroplugins gcr.io/my-project/edgemicroplugins
    docker push   gcr.io/my-project/edgemicroplugins
    

Edge Microgateway-Konfiguration aktualisieren

  1. Fügen Sie der Konfigurationsdatei von Edge Microgateway die Plug-ins hinzu. Die Konfigurationsdatei finden Sie hier:

    $HOME/.edgemicro/org-env-config.yaml
    

    Beispiel:

    $HOME/.edgemicro/myorg-test-config.yaml

In der folgenden Beispielkonfiguration wurde das benutzerdefinierte Plug-in response-uppercase hinzugefügt. Das oauth-Plug-in war bereits standardmäßig vorhanden.

  edgemicro:
    ...
    plugins:
      sequence:
        - oauth
        - response-uppercase

Kubernetes-Cluster aktualisieren

Im letzten Schritt wenden Sie die Konfigurationsänderung auf Ihren Kubernetes-Cluster an. Kubernetes ruft das neue Image mit dem in die Container Registry übertragenen Plug-in-Code ab und verwendet ihn für alle neu erstellten Pods.

Wenn Sie Edge Microgateway als Dienst bereitgestellt haben

Verwenden Sie den Befehl edgemicroctl, um die aktualisierte Edge Microgateway-Konfiguration einzufügen:

  1. Aktualisieren Sie die Edge Microgateway-Bereitstellung mit dem neuen Image. Beispiel:

    kubectl apply -f <(edgemicroctl -org=your_organization -env=your_environment -key=configuration_key -sec=configuration_secret -conf=config_file_path -img=container-registry/your_project_name/image_name:latest)

    Dabei gilt:

    • your_organization: Die Apigee-Organisation, die Sie im Befehl edgemicro configure angegeben haben.
    • your_environment: Die Umgebung, die Sie im Befehl edgemicro configure angegeben haben.
    • configuration_key: Der vom Befehl edgemicro configure zurückgegebene Schlüssel.
    • configuration_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.
    • container-registry: Die Docker-Registry, in die Sie das Image hochgeladen haben. Beispiel: gcr.io oder docker.io
    • your_project_name: Der Projektname für das Docker-Repository, in das Sie das Docker-Image hochgeladen haben.
    • image_name: Der Name des Docker-Images, das Sie hochgeladen haben.

    Beispiel:

    kubectl apply -f <(edgemicroctl -org=jdoe -env=test -key=f2d2eaa52b758493d00cec656e574ac947bee1d701c5c5f3295e5eaa39a3b -sec=0c38cda3fac6c59152f15657052ba1728f8003c1a763cf08da2a -conf=/Users/jdoe/.edgemicro/apigeesearch-test-config.yaml -img=gcr.io/jdoe-project/edgemicroplugins:latest)
  2. Testen Sie das Plug-in. Rufen Sie die API auf, um zu sehen, ob das erwartete Verhalten auftritt. Für das Plug-in "Antwort in Großbuchstaben" wird der Antworttext beispielsweise wie unten dargestellt in Großbuchstaben konvertiert:

    curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'

    Ausgabe:

    HELLO WORLD
    
Neue Konfiguration manuell einfügen

Die manuelle Injektion ist ein direkter Ansatz, bei dem Sie die neue Konfiguration über die Befehlszeile injizieren.

  1. Führen Sie folgenden Befehl aus:

    kubectl apply -f <(edgemicroctl -org=your_org -env=your_env -key=your_key -sec=your_secret -conf=config_file_path -img=container-registry/your_project_name/image_name:latest -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.
    • container-registry: Die Docker-Registry, in die Sie das Image hochgeladen haben. Beispiel: gcr.io oder docker.io
    • your_project_name: Der Projektname für das Docker-Repository, in das Sie das Docker-Image hochgeladen haben.
    • image_name: Der Name des Docker-Images, das Sie hochgeladen haben.
    • service_deployment_file: Der Pfad zur Bereitstellungsdatei des Dienstes, für den die Plug-ins gelten. 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 -img=gcr.io/myproject/edgemicroplugins:latest -svc=samples/helloworld/helloworld.yaml)
  2. Testen Sie das Plug-in. Rufen Sie die Dienst-API auf, um zu prüfen, ob das erwartete Verhalten auftritt. Für das Plug-in "Antwort in Großbuchstaben" wird der Antworttext beispielsweise wie unten dargestellt in Großbuchstaben konvertiert:

    curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'

    Ausgabe:

    HELLO WORLD
    

Edge Microgateway-Konfigurationsänderungen vornehmen

In einigen Fällen müssen Sie möglicherweise die Edge Microgateway-Konfiguration ändern. Sie können z. B. ein neues Plug-in zu Edge Microgateway hinzufügen oder einen Konfigurationsparameter ändern. In diesem Abschnitt wird erläutert, wie Sie Konfigurationsänderungen an Edge Microgateway vornehmen und anwenden, das in Kubernetes ausgeführt wird.

  1. Erstellen Sie wie unten gezeigt eine Konfigurationsdatei secret.yaml:

    apiVersion: v1
    kind: Secret
    metadata:
      name: mgwsecret
    type: Opaque
    data:
      mgorg: EDGEMICRO_ORG
      mgenv: EDGEMICRO_ENV
      mgkey: EDGEMICRO_KEY
      mgsecret: EDGEMICRO_SECRET
      mgconfig: EDGEMICRO_CONFIG
    
  2. Geben Sie den base64-codierten Wert von EDGEMICRO_ORG, EDGEMICRO_ENV, EDGEMICRO_KEY, EDGEMICRO_SECRET an:

    echo -n "your-org" | base64 | tr -d '\n'
    echo -n "your-org-env" | base64 | tr -d '\n'
    echo -n "your-mg-key" | base64 | tr -d '\n'
    echo -n "your-mg-secret" | base64 | tr -d '\n'
    
  3. Nehmen Sie die Änderungen an der Edge Microgateway-Konfigurationsdatei für Ihre Organisation und Umgebung vor:

    $HOME/.edgemicro/your_org-your_env-config.yaml
  4. Die Base64-Codierung ist doppelt so hoch wie der Inhalt der Konfigurationsdatei:

    cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64  | tr -d '\n'
  5. Wenden Sie Änderungen auf Kubernetes in dem Namespace an, in dem Ihr Dienst ausgeführt wird.

    kubectl apply -f secret.yaml -n 

Diese neuen Änderungen werden nicht automatisch von vorhandenen Microgateway-Pods übernommen. Die neuen Pods erhalten die Änderungen jedoch. Sie können den vorhandenen Pod löschen, sodass bei der Bereitstellung ein neuer Pod erstellt wird, der die Änderung aufnimmt.

Dienstbeispiel

Das folgende Beispiel zeigt, wie Sie eine Dienstbereitstellung mit einem neuen

  1. Rufen Sie die Pods ab.

    kubectl get pods

    Beispielausgabe:

    NAME                                 READY     STATUS    RESTARTS   AGE
    edge-microgateway-57ccc7776b-g7nrg   1/1       Running   0          19h
    helloworld-6987878fc4-cltc2          1/1       Running   0          1d
    
  2. Löschen Sie den Pod edge-microgateway.

    kubectl delete pod edge-microgateway-57ccc7776b-g7nrg

    Beispielausgabe:

    pod "edge-microgateway-57ccc7776b-g7nrg" deleted
    
  3. Rufen Sie die Pods noch einmal ab. Ein neuer Pod wird erstellt und Ihre Konfigurationsänderungen werden abgerufen.

    kubectl get pods

    Beispielausgabe:

    NAME                                 READY     STATUS    RESTARTS   AGE
    edge-microgateway-57ccc7776b-7f6tc   1/1       Running   0          5s
    helloworld-6987878fc4-cltc2          1/1       Running   0          1d
    

Deployment skalieren

In diesem Abschnitt wird erläutert, wie Sie mithilfe der Kubernetes-Skalierungsprinzipien Ihre Deployments skalieren können.

Dienstbereitstellung skalieren

  1. Prüfen Sie die Bereitstellungen:

    kubectl get deployments

    Beispielausgabe:

    NAME                DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    edge-microgateway   1         1         1            1           18h
    helloworld          1         1         1            1           1d
    

    Die Ausgabe gibt an, dass ein Replikat bereitgestellt wurde.

  2. Skalieren Sie die Bereitstellung von 1 auf so viele Replikate, wie Sie möchten. In diesem Beispiel wird der Dienst edge-microgateway skaliert.

    kubectl scale deployment edge-microgateway --replicas=2
  3. (Optional) Wenn Sie Autoscaling verwenden möchten, verwenden Sie diesen Befehl:

    kubectl autoscale deployment edge-microgateway --cpu-percent=50 --min=1 --max=10
  4. Prüfen Sie in den Bereitstellungen, ob die Skalierung aktiviert ist:

    kubectl get deployments

    Beispielausgabe:

    NAME                DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    edge-microgateway   2         2         2            2           18h
    helloworld          1         1         1            1           1d
    

    Der Status wurde geändert, sodass er zwei Replikate enthält.

  5. Prüfen Sie die Pods:

    kubectl get pods

    Beispielausgabe:

    NAME                                 READY     STATUS    RESTARTS   AGE
    edge-microgateway-57ccc7776b-g7nrg   1/1       Running   0          18h
    edge-microgateway-57ccc7776b-rvfz4   1/1       Running   0          41s
    helloworld-6987878fc4-cltc2          1/1       Running   0          1d
    

    Die Ausgabe zeigt, dass beide Replikate ausgeführt werden.

Namespaces für mehrere Edge Microgateway-Konfigurationen verwenden

Sie können mehrere Instanzen von Edge Microgateway-Diensten in Ihrem Kubernetes-Cluster bereitstellen und konfigurieren. In diesem Anwendungsfall können Sie jede Mikrogateway-Instanz mit eigenen Plug-ins und Parametern konfigurieren. Beispiel:

  • Edge Microgateway-Dienst A erfordert nur das Spike Arrest-Plug-in.
  • Edge Microgateway Service B benötigt das Kontingent und das OAuth-Plug-in, aber keinen Spike Arrest.

Verwenden Sie Kubernetes-Namespaces, um diesen Anwendungsfall zu bewältigen. Sie können z. B. Edge Microgateway-Dienst A im Namespace foo und Edge Microgateway-Dienst B im Namespace bar bereitstellen.

Im folgenden Beispiel wird das in der Organisation OrgA konfigurierte Edge Microgateway mit der Option -n als Dienst im Namespace foo bereitgestellt:

kubectl apply -f <(edgemicroctl -org=myorgA -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/joed/.edgemicro/orgA-test-config.yaml -svc=samples/helloworld/helloworld.yaml) -n foo

Analog wird im folgenden Beispiel das in der Organisation OrgB konfigurierte Edge Microgateway als Dienst für den Namespace bar mit der Option -n bereitgestellt:

kubectl apply -f <(edgemicroctl -org=myorgB -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/joed/.edgemicro/orgB-test-config.yaml -svc=samples/helloworld/helloworld.yaml) -n bar