Stai visualizzando la documentazione di Apigee Edge.
Consulta la
documentazione di Apigee X. info
Aggiungere un plug-in personalizzato
Puoi aggiungere nuove funzionalità e capacità al microgateway scrivendo plug-in personalizzati. I plug-in personalizzati ti consentono di interagire a livello di programmazione con le richieste e le risposte che passano attraverso il microgateway.
Questa sezione spiega come creare pacchetti ed eseguire il deployment dei plug-in in un'istanza di Edge Microgateway in esecuzione nel cluster Kubernetes.
Il resto di questa sezione presuppone che tu abbia familiarità con la scrittura e la configurazione dei plug-in per una configurazione standard di Edge Microgateway. In caso contrario, consulta Sviluppare plug-in personalizzati.
Creare pacchetti dei plug-in
Per creare pacchetti di plug-in personalizzati, segui questi passaggi:
Scrivi e testa il plug-in seguendo le indicazioni riportate in Scrivere un plug-in semplice.
Inserisci il codice del plug-in nella struttura di directory corretta. Le directory dei plug-in devono seguire una struttura impostata. L'esempio seguente mostra la struttura che devi seguire, dove
response-uppercaseerequest-headerssono i nomi delle cartelle contenenti il codice del plug-in personalizzato (questi nomi sono solo esempi, i nomi delle cartelle potrebbero essere diversi):plugin | |-- plugins | |- response-uppercase | |- index.js | |- package.json |- request-headers | | - index.js | - package.jsoncdnella cartellaplugin.Nella cartella
plugin, comprimi l'intera cartellaplugins:zip -r plugins.zip plugins/
Creare un'immagine Docker
- Nella stessa directory in cui si trova il file ZIP, crea un nuovo file denominato
Dockerfile. Aggiungi il seguente codice a
Dockerfilee salva il file: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"]Crea una nuova immagine Docker di Edge Microgateway con i tuoi plug-in ed esegui il push dell'immagine nel registro Docker. Puoi utilizzare il registro che preferisci, ad esempio
docker.ioogcr.io:docker build -t edgemicroplugins .docker tag edgemicroplugins container-registry/your-project/edgemicropluginsdocker push container-registry/your-project/edgemicropluginsAd esempio:
docker build -t edgemicroplugins .docker tag edgemicroplugins gcr.io/my-project/edgemicropluginsdocker push gcr.io/my-project/edgemicroplugins
Aggiornare la configurazione di Edge Microgateway
Aggiungi i plug-in al file di configurazione di Edge Microgateway. Puoi trovare il file di configurazione qui:
$HOME/.edgemicro/org-env-config.yaml
Ad esempio:
$HOME/.edgemicro/myorg-test-config.yaml
Nella seguente configurazione di esempio, è stato aggiunto il plug-in personalizzato response-uppercase.
Il plug-in oauth era già presente per impostazione predefinita.
edgemicro:
...
plugins:
sequence:
- oauth
- response-uppercase
Aggiornare il cluster Kubernetes
Il passaggio finale consiste nell'applicare la modifica della configurazione al cluster Kubernetes. Kubernetes eseguirà il pull della nuova immagine con il codice del plug-in di cui hai eseguito il push nel registro container e la utilizzerà per tutti i pod appena creati.
Se hai eseguito il deployment di Edge Microgateway come servizio
Utilizza il comando edgemicroctl per inserire la configurazione aggiornata di Edge Microgateway:
Aggiorna il deployment di Edge Microgateway con la nuova immagine. Ad esempio:
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)
dove:
your_organization- L'organizzazione Apigee che hai specificato nel comandoedgemicro configure.your_environment- L'ambiente che hai specificato nel comandoedgemicro configure.configuration_key- La chiave restituita dal comandoedgemicro configure.configuration_secret- Il secret restituito dal comandoedgemicro configure.config_file_path- Il percorso del file di configurazione di Edge Micro restituito dal comandoedgemicro configure.container-registry- Il registro Docker in cui hai eseguito il push dell'immagine. Ad esempio,gcr.ioodocker.io.your_project_name- Il nome del progetto per il repository Docker in cui hai eseguito il push dell'immagine Docker.image_name- Il nome dell'immagine Docker di cui hai eseguito il push.
Esempio:
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)
Testa il plug-in. Chiama l'API per verificare se ottieni il comportamento previsto. Ad esempio, per il plug-in "response uppercase", il testo della risposta viene convertito in maiuscolo, come mostrato di seguito:
curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'
Output:
HELLO WORLD
Inserire manualmente la nuova configurazione
L'inserimento manuale è un approccio semplice, in cui inserisci la nuova configurazione dalla riga di comando.
Esegui questo comando:
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)
dove:
your_org- L'organizzazione Apigee che hai specificato nel comandoedgemicro configure.your_env- L'ambiente che hai specificato nel comandoedgemicro configure.your_key- La chiave restituita dal comandoedgemicro configure.your_secret- Il secret restituito dal comandoedgemicro configure.config_file_path- Il percorso del file di configurazione di Edge Micro restituito dal comandoedgemicro configure.container-registry- Il registro Docker in cui hai eseguito il push dell'immagine. Ad esempio,gcr.ioodocker.io.your_project_name- Il nome del progetto per il repository Docker in cui hai eseguito il push dell'immagine Docker.image_name- Il nome dell'immagine Docker di cui hai eseguito il push.service_deployment_file- Il percorso del file di deployment del servizio a cui verranno applicati i plug-in. Ad esempio:samples/helloworld/helloworld.yaml.
Ad esempio:
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)
Testa il plug-in. Chiama l'API del servizio per verificare se ottieni il comportamento previsto. Ad esempio, per il plug-in "response uppercase", il testo della risposta viene convertito in maiuscolo, come mostrato di seguito:
curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'
Output:
HELLO WORLD
Apportare modifiche alla configurazione di Edge Microgateway
In alcuni casi, potrebbe essere necessario modificare la configurazione di Edge Microgateway. Ad esempio, potresti voler aggiungere un nuovo plug-in a Edge Microgateway o modificare un parametro di configurazione. Questa sezione spiega come apportare e applicare modifiche alla configurazione di Edge Microgateway in esecuzione in Kubernetes.
Crea un file di configurazione
secret.yamlcome mostrato di seguito:apiVersion: v1 kind: Secret metadata: name: mgwsecret type: Opaque data: mgorg: EDGEMICRO_ORG mgenv: EDGEMICRO_ENV mgkey: EDGEMICRO_KEY mgsecret: EDGEMICRO_SECRET mgconfig: EDGEMICRO_CONFIGSpecifica il valore con codifica base64 di
EDGEMICRO_ORG,EDGEMICRO_ENV,EDGEMICRO_KEY,EDGEMICRO_SECRET: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'Apporta le modifiche al file di configurazione di Edge Microgateway per la tua organizzazione e il tuo ambiente:
$HOME/.edgemicro/your_org-your_env-config.yaml
Codifica in Base64 due volte i contenuti del file di configurazione:
cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64 | tr -d '\n'
Applica le modifiche a Kubernetes nello spazio dei nomi in cui è in esecuzione il servizio.
kubectl apply -f secret.yaml -n
Queste nuove modifiche non vengono rilevate automaticamente dai pod microgateway esistenti; tuttavia, i nuovi pod riceveranno le modifiche. Puoi eliminare il pod esistente in modo che il deployment crei un nuovo pod che rilevi la modifica.
Esempio di servizio
L'esempio seguente illustra come aggiornare un deployment di servizi con un nuovo
Recupera i pod.
kubectl get pods
Output di esempio:
NAME READY STATUS RESTARTS AGE edge-microgateway-57ccc7776b-g7nrg 1/1 Running 0 19h helloworld-6987878fc4-cltc2 1/1 Running 0 1dElimina il pod
edge-microgateway.kubectl delete pod edge-microgateway-57ccc7776b-g7nrg
Output di esempio:
pod "edge-microgateway-57ccc7776b-g7nrg" deletedRecupera di nuovo i pod. Viene avviato un nuovo pod che riceve le modifiche alla configurazione.
kubectl get pods
Output di esempio:
NAME READY STATUS RESTARTS AGE edge-microgateway-57ccc7776b-7f6tc 1/1 Running 0 5s helloworld-6987878fc4-cltc2 1/1 Running 0 1d
Scalare il deployment
Questa sezione spiega come utilizzare i principi di scalabilità di Kubernetes per scalare i deployment.
Scalare un deployment di servizi
Controlla i deployment:
kubectl get deployments
Output di esempio:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE edge-microgateway 1 1 1 1 18h helloworld 1 1 1 1 1dL'output indica che è stato eseguito il deployment di una replica.
Scala il deployment da 1 a tutte le repliche che vuoi. In questo esempio, viene scalato il servizio
edge-microgateway.kubectl scale deployment edge-microgateway --replicas=2
(Facoltativo) Se vuoi utilizzare la scalabilità automatica, utilizza questo comando:
kubectl autoscale deployment edge-microgateway --cpu-percent=50 --min=1 --max=10
Controlla i deployment per verificare che la scalabilità sia abilitata:
kubectl get deployments
Output di esempio:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE edge-microgateway 2 2 2 2 18h helloworld 1 1 1 1 1dLo stato è stato modificato in modo da includere due repliche.
Controlla i pod:
kubectl get pods
Output di esempio:
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 1dL'output mostra che entrambe le repliche sono in stato di esecuzione.
Utilizzare gli spazi dei nomi per più configurazioni di Edge Microgateway
Puoi eseguire il deployment e configurare più istanze di servizi Edge Microgateway nel cluster Kubernetes. Questo caso d'uso ti consente di configurare ogni istanza di microgateway con il proprio set di plug-in e parametri. Ad esempio:
- Il servizio Edge Microgateway A richiede solo il plug-in di protezione da picchi di traffico.
- Il servizio Edge Microgateway B richiede il plug-in di quota e oauth, ma non la protezione da picchi di traffico.
Per risolvere questo caso d'uso, utilizza gli spazi dei nomi Kubernetes. Ad esempio, puoi eseguire il deployment del servizio Edge Microgateway A nello spazio dei nomi foo e del servizio Edge Microgateway B nello spazio dei nomi bar.
Nell'esempio seguente, Edge Microgateway configurato nell'organizzazione OrgA viene eseguito il deployment come servizio nello spazio dei nomi foo utilizzando l'opzione -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
Analogamente, nell'esempio seguente, Edge Microgateway configurato nell'organizzazione OrgB viene eseguito il deployment come servizio nello spazio dei nomi bar utilizzando l'opzione -n:
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