Kubernetes-Einbindungsaufgaben

Sie sehen sich die Dokumentation zu Apigee Edge an.
Sehen Sie sich die Apigee X-Dokumentation an.
info

Benutzerdefiniertes Plug-in hinzufügen

Sie können dem Microgateway neue 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 Microgateway geleitet werden.

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

Im Rest dieses Abschnitts wird davon ausgegangen, dass Sie mit dem Erstellen und Konfigurieren von Plug-ins für eine standardmäßige Edge Microgateway-Einrichtung vertraut sind. Falls nicht, lesen Sie den Hilfeartikel Benutzerdefinierte Plug-ins entwickeln.

Plug-ins verpacken

So verpacken Sie benutzerdefinierte Plug-ins:

  1. Erstellen und testen Sie Ihr Plug-in gemäß der Anleitung unter Ein einfaches Plug-in schreiben.

  2. Platzieren Sie den Plug-in-Code in der richtigen Verzeichnisstruktur. Plug-in-Verzeichnisse müssen einer festgelegten Struktur folgen. Im folgenden Beispiel ist die Struktur zu sehen, die Sie einhalten müssen. Dabei sind response-uppercase und request-headers die Namen von Ordnern mit benutzerdefiniertem Plug-in-Code. Diese Namen sind nur Beispiele und können sich von Ihren Ordnernamen unterscheiden:

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

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

    zip -r plugins.zip plugins/

Docker-Image erstellen

  1. Erstellen Sie im selben Verzeichnis wie die ZIP-Datei 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 ein neues Docker-Image für das Edge-Microgateway mit Ihren Plugins und übertragen Sie das Image in Ihre 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 die Plug-ins der Edge Microgateway-Konfigurationsdatei 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 Plug-in-Code ab, den Sie in die Container Registry gepusht haben, und verwendet es 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 einzuschleusen:

  1. Aktualisieren Sie die Bereitstellung des Edge Microgateways 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 Schlüssel, der vom Befehl edgemicro configure zurückgegeben wird.
    • configuration_secret: Das Secret, das vom Befehl edgemicro configure zurückgegeben wurde.
    • config_file_path: Der Pfad zur Edge Micro-Konfigurationsdatei, die vom Befehl edgemicro configure zurückgegeben wird.
    • container-registry: Die Docker-Registry, in die Sie das Image gepusht haben. Beispiel: gcr.iooder docker.io
    • your_project_name: Der Projektname des Docker-Repositories, in das Sie das Docker-Image gepusht haben.
    • image_name: Der Name des Docker-Images, das Sie gepusht 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. Beim Plug-in „response uppercase“ wird der Antworttext beispielsweise in Großbuchstaben umgewandelt, wie unten dargestellt:

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

    Ausgabe:

    HELLO WORLD
    
Neue Konfiguration manuell einschleusen

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

  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 Schlüssel, der vom Befehl edgemicro configure zurückgegeben wird.
    • your_secret: Das Secret, das vom Befehl edgemicro configure zurückgegeben wurde.
    • config_file_path: Der Pfad zur Edge Micro-Konfigurationsdatei, die vom Befehl edgemicro configure zurückgegeben wird.
    • container-registry: Die Docker-Registry, in die Sie das Image gepusht haben. Beispiel: gcr.iooder docker.io
    • your_project_name: Der Projektname des Docker-Repositories, in das Sie das Docker-Image gepusht haben.
    • image_name: Der Name des Docker-Images, das Sie gepusht haben.
    • service_deployment_file: Der Pfad zur Bereitstellungsdatei des Dienstes, auf den die Plug-ins angewendet werden. 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. Beim Plug-in „response uppercase“ wird der Antworttext beispielsweise in Großbuchstaben konvertiert, wie unten dargestellt:

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

    Ausgabe:

    HELLO WORLD
    

Edge Microgateway-Konfiguration ändern

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

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

    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 oder 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. Codieren Sie den Inhalt der Konfigurationsdatei zweimal mit Base64:

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

    kubectl apply -f secret.yaml -n 

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

Beispiel für einen Dienst

Im folgenden Beispiel wird gezeigt, wie 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 edge-microgateway-Pod.

    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 Ihre Bereitstellungen mithilfe der Kubernetes-Skalierungsprinzipien 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 ist.

  2. Skalieren Sie die Bereitstellung von einem auf beliebig viele Replikate. In diesem Beispiel wird der Dienst edge-microgateway skaliert.

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

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

  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 „Ausführend“ befinden.

Namespaces für mehrere Edge Microgateway-Konfigurationen verwenden

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

  • Für Edge Microgateway-Dienst A ist nur das Spike-Arrest-Plug-in erforderlich.
  • Für Edge Microgateway-Dienst B sind das Kontingent- und das OAuth-Plug-in erforderlich, aber keine Spitzerbekämpfung.

Verwenden Sie für diesen Anwendungsfall Kubernetes-Namespaces. Sie können beispielsweise den Edge Microgateway-Dienst A im Namespace foo und den 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

Im folgenden Beispiel wird Edge Microgateway, das in der Organisation OrgB konfiguriert ist, mit der Option -n als Dienst im Namespace bar 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