Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione
Documentazione di Apigee X. Informazioni
Aggiunta di un plug-in personalizzato
È possibile aggiungere nuove caratteristiche e capacità al microgateway scrivendo dati o plug-in. I plug-in personalizzati consentono di interagire in modo programmatico con le richieste e risposte che fluiscono attraverso il microgateway.
Questa sezione spiega come pacchettizzare ed eseguire il deployment dei plug-in in un Microgateway Edge in esecuzione nel tuo cluster Kubernetes.
Il resto di questa sezione presuppone che hai familiarità con la scrittura e la configurazione plug-in per una configurazione Edge Microgateway standard. In caso contrario, consulta la sezione Sviluppare plug-in personalizzati.
Pacchettizzazione dei plug-in
Per creare un pacchetto di plug-in personalizzati, procedi nel seguente modo:
Scrivi e testa il plug-in, seguendo le istruzioni riportate in Scrivere un plug-in semplice.
Inserisci il codice del plug-in nella struttura della directory adeguata. Le directory dei plug-in devono seguire una struttura prestabilita. L'esempio seguente mostra che devi seguire, dove
response-uppercase
erequest-headers
sono i nomi delle cartelle contenenti il codice 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.json
cd
alla cartellaplugin
.Nella cartella
plugin
, comprimi l'intera cartellaplugins
:zip -r plugins.zip plugins/
crea un'immagine Docker
- Nella stessa directory in cui si trova il file ZIP, crea un nuovo file denominato
Dockerfile
. Aggiungi il seguente codice a
Dockerfile
e 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 Edge Microgateway con i tuoi plug-in ed esegui il push l'immagine nel registro Docker. Puoi utilizzare il registry che preferisci, ad esempio come
docker.io
ogcr.io
:docker build -t edgemicroplugins .
docker tag edgemicroplugins container-registry/your-project/edgemicroplugins
docker push container-registry/your-project/edgemicroplugins
Ad esempio:
docker build -t edgemicroplugins .
docker tag edgemicroplugins gcr.io/my-project/edgemicroplugins
docker push gcr.io/my-project/edgemicroplugins
Aggiorna la configurazione di Edge Microgateway
Aggiungi i plug-in al file di configurazione di Edge Microgateway. Puoi trovare di configurazione del deployment:
$HOME/.edgemicro/org-env-config.yaml
Ad esempio:
$HOME/.edgemicro/myorg-test-config.yaml
Nella configurazione di esempio seguente è stato aggiunto il plug-in personalizzato response-uppercase
.
Il plug-in oauth
era già presente per impostazione predefinita.
edgemicro:
...
plugins:
sequence:
- oauth
- response-uppercase
Aggiorna il cluster Kubernetes
Il passaggio finale consiste nell'applicare la modifica alla configurazione al cluster Kubernetes. Kubernetes estrae la nuova immagine con il codice plug-in di cui hai eseguito il push al Container Registry e la utilizzerà per qualsiasi i pod creati.
Se hai eseguito il deployment di Edge Microgateway as a Service
Utilizza il comando edgemicroctl
per inserire la configurazione del gateway Edge Microgateway aggiornata:
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 specificata nel comandoedgemicro configure
.your_environment
: l'ambiente 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.io
odocker.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 vedere se ottieni il comportamento previsto. Per Ad esempio, per "risposta maiuscola" il plug-in, il testo della risposta viene convertito in maiuscolo, come mostrato di seguito:
curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'
Output:
HELLO WORLD
Inserimento manuale della nuova configurazione
L'inserimento manuale è un approccio semplice, che consiste nell'inserire 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 specificata nel comandoedgemicro configure
.your_env
: l'ambiente 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.io
odocker.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 per 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 per vedere se ottieni il comportamento previsto. Ad esempio, per "risposta maiuscola" un plug-in, il testo della risposta viene convertito in lettere maiuscole, come mostrato di seguito:
curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'
Output:
HELLO WORLD
Modifiche alla configurazione di Edge Microgateway
In alcuni casi, potrebbe essere necessario modificare la configurazione del Microgateway Edge. Ad esempio, potresti voler aggiungere un nuovo plug-in a Edge Microgateway o modificare un parametro di configurazione. Questo che spiega come apportare e applicare modifiche alla configurazione a Edge Microgateway in esecuzione in Kubernetes.
Crea un file di configurazione
secret.yaml
come 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_CONFIG
Specifica il valore codificato in 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 questo ambiente:
$HOME/.edgemicro/your_org-your_env-config.yaml
Base64 Codifica il doppio contenuto 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 tuo servizio.
kubectl apply -f secret.yaml -n
Queste nuove modifiche non vengono rilevate automaticamente dai pod del microgateway esistenti, ma i nuovi pod riceveranno le modifiche. Puoi eliminare il pod esistente in modo che il deployment crea un nuovo pod che prende la modifica.
Esempio di servizio
L'esempio seguente illustra come aggiornare un deployment di servizio 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 1d
Elimina il pod
edge-microgateway
.kubectl delete pod edge-microgateway-57ccc7776b-g7nrg
Output di esempio:
pod "edge-microgateway-57ccc7776b-g7nrg" deleted
Recupera 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
Scalabilità del deployment
Questa sezione spiega come utilizzare i principi di scalabilità di Kubernetes e scalare i tuoi deployment.
Scalabilità del deployment di un servizio
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 1d
L'output indica che è stato eseguito il deployment di una replica.
Scala il deployment da 1 al numero di repliche che vuoi. In questo esempio, il servizio
edge-microgateway
è stato scalato.kubectl scale deployment edge-microgateway --replicas=2
(Facoltativo) Per utilizzare la scalabilità automatica, usa 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 1d
Lo stato è stato modificato per 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 1d
L'output mostra che entrambe le repliche sono in esecuzione.
Utilizza gli spazi dei nomi per più configurazioni Edge Microgateway
Puoi eseguire il deployment di più istanze dei servizi Edge Microgateway e configurarle nel tuo in un cluster Kubernetes. Questo caso d'uso ti consente di configurare ogni istanza del microgateway con il proprio set di plug-in e parametri. Ad esempio:
- Il servizio Edge Microgateway A richiede solo il plug-in di arresto dei picchi.
- Il servizio Edge Microgateway B richiede la quota e il plug-in OAuth, ma non l'arresto dei picchi.
Per affrontare questo caso d'uso, utilizza gli spazi dei nomi Kubernetes. Ad esempio, puoi eseguire il deployment
dal servizio Edge Microgateway A allo spazio dei nomi foo
e dal servizio Edge Microgateway B allo spazio dei nomi foo
spazio dei nomi bar
.
Nell'esempio seguente, il deployment di Edge Microgateway configurato nell'organizzazione OrgA
viene eseguito 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
il deployment as a Service nello spazio dei nomi bar
viene eseguito 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