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:
Erstellen und testen Sie Ihr Plug-in gemäß der Anleitung unter Ein einfaches Plug-in schreiben.
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
undrequest-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
cd
in den Ordnerplugin
.Archivieren Sie im Ordner
plugin
den gesamten Ordnerplugins
:zip -r plugins.zip plugins/
Docker-Image erstellen
- Erstellen Sie im selben Verzeichnis wie die ZIP-Datei 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 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
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 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:
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 Befehledgemicro configure
angegeben haben.your_environment
: Die Umgebung, die Sie im Befehledgemicro configure
angegeben haben.configuration_key
: Der Schlüssel, der vom Befehledgemicro configure
zurückgegeben wird.configuration_secret
: Das Secret, das vom Befehledgemicro configure
zurückgegeben wurde.config_file_path
: Der Pfad zur Edge Micro-Konfigurationsdatei, die vom Befehledgemicro configure
zurückgegeben wird.container-registry
: Die Docker-Registry, in die Sie das Image gepusht haben. Beispiel:gcr.io
oderdocker.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)
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.
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 Schlüssel, der vom Befehledgemicro configure
zurückgegeben wird.your_secret
: Das Secret, das vom Befehledgemicro configure
zurückgegeben wurde.config_file_path
: Der Pfad zur Edge Micro-Konfigurationsdatei, die vom Befehledgemicro configure
zurückgegeben wird.container-registry
: Die Docker-Registry, in die Sie das Image gepusht haben. Beispiel:gcr.io
oderdocker.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)
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.
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
Geben Sie den base64-codierten Wert von
EDGEMICRO_ORG
,EDGEMICRO_ENV
,EDGEMICRO_KEY
oderEDGEMICRO_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
Codieren Sie den Inhalt der Konfigurationsdatei zweimal mit Base64:
cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64 | tr -d '\n'
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
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
edge-microgateway
-Pod.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 Ihre Bereitstellungen mithilfe der Kubernetes-Skalierungsprinzipien 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 ist.
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
Optional: Wenn Sie das Autoscaling verwenden möchten, verwenden Sie diesen Befehl:
kubectl autoscale deployment edge-microgateway --cpu-percent=50 --min=1 --max=10
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.
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