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:
Schreiben und testen Sie das Plug-in gemäß der Anleitung unter Einfaches Plug-in schreiben.
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
undrequest-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
cd
zum Ordnerplugin
.Komprimieren Sie im Ordner
plugin
den gesamten Ordnerplugins
:zip -r plugins.zip plugins/
Docker-Image erstellen
- Erstellen Sie in dem Verzeichnis, in dem sich auch die ZIP-Datei befindet, eine neue Datei mit dem Namen
Dockerfile
. 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"]
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
odergcr.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
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:
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 Befehledgemicro configure
angegeben haben.your_environment
: Die Umgebung, die Sie im Befehledgemicro configure
angegeben haben.configuration_key
: Der vom Befehledgemicro configure
zurückgegebene Schlüssel.configuration_secret
: vom Befehledgemicro configure
zurückgegebenes Secret.config_file_path
: Der Pfad zur Edge Micro-Konfigurationsdatei, die vom Befehledgemicro configure
zurückgegeben wurde.container-registry
: Die Docker-Registry, in die Sie das Image hochgeladen haben. Beispiel:gcr.io
oderdocker.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)
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.
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 Befehledgemicro configure
angegeben haben.your_env
: Die Umgebung, die Sie im Befehledgemicro configure
angegeben haben.your_key
: Der vom Befehledgemicro configure
zurückgegebene Schlüssel.your_secret
: vom Befehledgemicro configure
zurückgegebenes Secret.config_file_path
: Der Pfad zur Edge Micro-Konfigurationsdatei, die vom Befehledgemicro configure
zurückgegeben wurde.container-registry
: Die Docker-Registry, in die Sie das Image hochgeladen haben. Beispiel:gcr.io
oderdocker.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)
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.
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
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'
Nehmen Sie die Änderungen an der Edge Microgateway-Konfigurationsdatei für Ihre Organisation und Umgebung vor:
$HOME/.edgemicro/your_org-your_env-config.yaml
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'
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
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
Löschen Sie den Pod
edge-microgateway
.kubectl delete pod edge-microgateway-57ccc7776b-g7nrg
Beispielausgabe:
pod "edge-microgateway-57ccc7776b-g7nrg" deleted
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
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.
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
(Optional) Wenn Sie Autoscaling verwenden möchten, verwenden Sie diesen Befehl:
kubectl autoscale deployment edge-microgateway --cpu-percent=50 --min=1 --max=10
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.
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