Kubernetes-Einbindungsaufgaben

<ph type="x-smartling-placeholder"></ph> Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur Apigee X-Dokumentation.
Weitere Informationen

Benutzerdefiniertes Plug-in hinzufügen

Sie können dem Microgateway neue Funktionen hinzufügen, indem Sie custom . Mit benutzerdefinierten Plug-ins können Sie programmatisch mit den Anfragen interagieren. und Antworten, die durch das Microgateway fließen.

In diesem Abschnitt wird erläutert, wie Plug-ins in einem Edge Microgateway verpackt und bereitgestellt werden. die in Ihrem Kubernetes-Cluster ausgeführt wird.

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

Paket für Plug-ins erstellen

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 den Struktur Sie folgen müssen, wobei response-uppercase und request-headers der Parameter Namen von Ordnern mit benutzerdefiniertem Plug-in-Code (diese Namen sind nur Beispiele, Ihre Ordnernamen können abweichen):

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

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

    zip -r plugins.zip plugins/

Docker-Image erstellen

  1. Erstellen Sie im selben Verzeichnis, in dem sich 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 das Image in Ihre Docker-Registry übertragen. Sie können jede beliebige Registry verwenden, z. B. als 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 die Plug-ins zu Ihrer Edge Microgateway-Konfigurationsdatei hinzu. Sie finden die Konfigurationsdatei 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 Plug-in oauth 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 Plug-in-Code ab, den Sie in die Container Registry übertragen haben, und verwendet es für neue erstellte 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 das Edge Microgateway-Deployment 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: Das vom Befehl edgemicro configure zurückgegebene 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.iooder docker.io
    • your_project_name: Der Projektname für das Docker-Repository, in das Sie das Docker-Image übertragen haben.
    • image_name: Der Name des Docker-Images, das Sie übertragen 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 Sie das erwartete Verhalten erhalten. Für Beispiel für „Antwort in Großbuchstaben“ wird der Antworttext in alle wie unten dargestellt:

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

    Ausgabe:

    HELLO WORLD
    
Neue Konfiguration manuell einfügen

Das manuelle Einfügen ist ein einfacher Ansatz, bei dem Sie die neue Konfiguration über die Befehlszeile eingeben.

  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: Das vom Befehl edgemicro configure zurückgegebene 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.iooder docker.io
    • your_project_name: Der Projektname für das Docker-Repository, in das Sie das Docker-Image übertragen haben.
    • image_name: Der Name des Docker-Images, das Sie übertragen haben.
    • service_deployment_file – der Pfad zur Bereitstellungsdatei des Dienstes für für das 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 sehen, ob Sie das erwartete Verhalten erhalten. Beispiel für „Antwort in Großbuchstaben“. Plug-in, wird der Antworttext wie unten gezeigt 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 Ihre Edge Microgateway-Konfiguration ändern. Zum Beispiel haben Sie Möglicherweise möchten Sie ein neues Plug-in zu Edge Microgateway hinzufügen oder einen Konfigurationsparameter ändern. Dieses Abschnitt erläutert, wie Sie Konfigurationsänderungen auf Edge Microgateway vornehmen und anwenden 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 Änderungen an der Edge Microgateway-Konfigurationsdatei für Ihre Organisation vor und Umgebung:

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

    cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64  | tr -d '\n'
  5. Wenden Sie Änderungen an 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. Allerdings erhalten die neuen Pods die Änderungen. Sie können den vorhandenen Pod löschen, Bei der Bereitstellung wird ein neuer Pod erstellt, der die Änderung aufnimmt.

Dienstbeispiel

Das folgende Beispiel zeigt, wie Sie eine Dienstbereitstellung mit einer 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 gestartet und erhält Ihre Konfigurationsänderungen.

    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
    

Bereitstellung skalieren

In diesem Abschnitt wird erläutert, wie Sie mit den Skalierungsprinzipien von Kubernetes um Ihre Bereitstellungen zu skalieren.

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 zeigt an, dass ein Replikat bereitgestellt wurde.

  2. Skalieren Sie das Deployment von 1 auf beliebig viele Replikate. In diesem Beispiel ist der Dienst edge-microgateway skaliert.

    kubectl scale deployment edge-microgateway --replicas=2
  3. (Optional) Wenn Sie Autoscaling verwenden möchten, führen Sie den folgenden Befehl aus:

    kubectl autoscale deployment edge-microgateway --cpu-percent=50 --min=1 --max=10
  4. Prüfen Sie die Bereitstellungen, um zu prüfen, 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 und umfasst nun zwei Replikate.

  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 sich beide Replikate im Status „Wird ausgeführt“ befinden.

Namespaces für mehrere Edge Microgateway-Konfigurationen verwenden

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

  • Für Edge Microgateway Service A ist nur das Spike Arrest-Plug-in erforderlich.
  • Edge Microgateway Service B erfordert das Kontingent und das OAuth-Plug-in, jedoch keinen Spike Arrest.

Verwenden Sie für diesen Anwendungsfall Kubernetes-Namespaces. Sie können beispielsweise Edge Microgateway-Dienst A zu Namespace foo und Edge Microgateway-Dienst B zu Namespace Namespace bar

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

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

Entsprechend wird im folgenden Beispiel Edge Microgateway in der Organisation OrgB konfiguriert wird als Dienst im 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