<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:
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 den Struktur Sie folgen müssen, wobei
response-uppercase
undrequest-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
cd
in den Ordnerplugin
.Komprimieren Sie im Ordner
plugin
den gesamten Ordnerplugins
:zip -r plugins.zip plugins/
Docker-Image erstellen
- Erstellen Sie im selben Verzeichnis, in dem sich 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 das Image in Ihre Docker-Registry übertragen. Sie können jede beliebige Registry verwenden, z. B. als
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 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:
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 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
: Das vom Befehledgemicro configure
zurückgegebene 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 ü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)
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.
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
: Das vom Befehledgemicro configure
zurückgegebene 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 ü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)
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.
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 Änderungen an der Edge Microgateway-Konfigurationsdatei für Ihre Organisation vor und Umgebung:
$HOME/.edgemicro/your_org-your_env-config.yaml
Die Base64-Codierung ist doppelt Inhalt der Konfigurationsdatei:
cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64 | tr -d '\n'
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
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 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
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.
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
(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
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.
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