Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di Apigee X. info
Introduzione
Questo argomento spiega come eseguire Edge Microgateway in un cluster Kubernetes come proxy sidecar. Esistono due opzioni per il deployment di sidecar: inserimento manuale e automatico. Questo argomento descrive entrambe le opzioni.
Per ulteriori informazioni, consulta Introduzione a Edge Microgateway su Kubernetes.
Prima di iniziare
Completa i passaggi descritti nella sezione Prerequisiti.
Esegui il deployment di un servizio di test
Esegui il deployment di un semplice servizio "hello" e verifica il deployment:
Esegui il deployment del sample:
kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default
Verifica che il servizio sia in esecuzione. Potresti dover attendere qualche istante prima che il pod venga avviato nello stato di esecuzione:
kubectl get pods --namespace=default
Output di esempio:
NAME READY STATUS RESTARTS AGE helloworld-569d6565f9-lwrrv 1/1 Running 0 17m
Elimina l'implementazione del servizio di test. La reinstallerai in un secondo momento, dopo aver attivato l'iniezione sidecar:
kubectl delete -f samples/helloworld/helloworld.yaml --namespace=default
Utilizzo dell'iniezione sidecar manuale
Delle due opzioni di inserimento di sidecar, l'inserimento manuale di sidecar è l'approccio più semplice e diretto e può essere eseguito con un singolo comando kubectl
.
Configurare Edge Microgateway
Il seguente comando configura Edge Microgateway per la tua organizzazione Apigee
e esegue il deployment del proxy edgemicro-auth
.
Esegui questo comando:
edgemicro configure -o [org] -e [env] -u [username]
Dove:
org
: il nome della tua organizzazione Edge (devi essere un amministratore dell'organizzazione).env
: un ambiente nella tua organizzazione (ad esempio test o produzione).username
: l'indirizzo email associato al tuo account Apigee.
Esempio
edgemicro configure -o myorg -e test -u jdoe@example.com
L'output (esempio mostrato di seguito) viene salvato nel file:
$HOME/.edgemicro/org_name-env_name-config.yaml
.current nodejs version is v6.9.1 current edgemicro version is 2.5.25 password: file doesn't exist, setting up Give me a minute or two... this can take a while... App edgemicro-auth deployed. checking org for existing KVM KVM already exists in your org configuring host edgemicroservices.apigee.net for region us-west1 saving configuration information to: /Users/jdoe/.edgemicro/myorg-test-config.yaml vault info: -----BEGIN CERTIFICATE----- MIICpDCCAYwCCQCV9eBcO9a5WzANBgkqhkiG9w0BAQsFADAUMRIwEAYDVQQDDAls b2NhbGhvc3QwHhcNMagwODA5MDAzMDEzWhcNMTgwODEwMDAzMDEzWjAUMRIwEAYD VQQDDBlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDh nAHT7JHX/WvWHRFb8FLm53SPIDld5LyPOUfINdEyhSIEeXoOUKg4EPweJPVSC9Vm Hw4ZMtEqWJM/XsQWvLe8ylRJa5wgmzmFCqAsuzs9+rmc9KvJqjpOh2uRTUf7KKfT iXL2UEseprcI5g8zNyqKyEf/ecWIwz3AkkPAZebVTsrdDfIDHvkyhhvlAHZAB9kn GtqP3N8kOlv4KQto9Gr7GYUGUIDugt7gM1F611+RBS+fYRi32GUAq/UQDkhYL8cp oIJiF7UYkk2+9t9CdOCDuIUCvJioHJQd0xvDpkC9f6LvwjwnCwku+4F2Q63+av5I mJoZJQPvW5aP53Qkk+kHAgMBAAEwDKYJKoZIhvcNAQELBQADggEBALyUBolXUFN8 1bf268nR+gS8MOFDTxO1bUz+bKuT/g3K1PuNUJTueT+0L1H2OiZUzazAqwn2sqzN lQuvLg6LjxjlNkqTJGiJvGDcYVq45dv7UyxAZxhqxTxhlQ+Yu5R9pbQnzujezHpH 6gtCoCkSt/QqiJ3YsmsVu5is+HpIJepMt0CyMh5tK9j87hl46QhHklaVfQ3ycMVm /wNPR/pjizg1FDUeq4nj/7DBVbMf9net/BDaZLeSW1HJ1vcsCXIcSZfQd4QymGFn 8ADrND7ydVjwO/s23soPDTy0g4yLIZvky2tpT8d7YahNqSv2n7sXsLxruzcyCoQ4 w+e3Z3F7IKI= -----END CERTIFICATE----- The following credentials are required to start edge micro key: 1a3b2754c7f20614817b86e09895825ecc252d34df6c4be21ae24356f09e6eb4 secret: 16ad2431de73f07f57a6d44048f08d93b63f783bf1f2ac4221182aa7289c7cef edgemicro configuration complete!
Inserisci Edge Microgateway come sidecar
Per iniettare manualmente Edge Microgateway in un pod di servizio come proxy sidecar, esegui questo comando:
kubectl apply -f <(edgemicroctl -org=your_org -env=your_env -key=your_key -sec=your_secret -conf=config_file_path -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
.service_deployment_file
: il percorso al file di deployment del servizio il cui pod riceverà il servizio sidecar complementare. 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 -svc=samples/helloworld/helloworld.yaml)
Testa la configurazione
Controlla i deployment dei servizi:
kubectl get services -n default
Output di esempio:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE helloworld NodePort 10.15.254.163 <none> 8081:32401/TCP 56s kubernetes ClusterIP 10.15.240.1 <none> 443/TCP 41m
Ora puoi testare il deployment sidecar di Edge Microgateway. Per la procedura dettagliata, vai a Testare il proxy.
Utilizzo dell'iniezione automatica di sidecar
Nei passaggi che seguono, configurerai l'iniezione automatica di sidecar per il tuo cluster Kubernetes. Questa configurazione consente di iniettare Edge Microgateway come proxy sidecar in Kubernetes.
Installa l'iniettore sidecar
Installa il ConfigMap che consente l'iniezione sidecar di Edge Microgateway:
kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-configmap-release.yaml
Esegui il seguente script per installare il servizio webhook. Il servizio webhook è obbligatorio per l'iniezione automatica di sidecar:
./install/kubernetes/webhook-create-signed-cert.sh \ --service edgemicro-sidecar-injector \ --namespace edgemicro-system \ --secret sidecar-injector-certs
Aggiungi il bundle CA al file di installazione del webhook. Il servizio API Kubernetes utilizza questo file per richiamare l'webhook:
cat install/kubernetes/edgemicro-sidecar-injector.yaml | \ ./install/kubernetes/webhook-patch-ca-bundle.sh > \ install/kubernetes/edgemicro-sidecar-injector-with-ca-bundle.yaml
Installa il webhook dell'iniettore sidecar di Edge Microgateway:
kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-with-ca-bundle.yaml
Output di esempio:
service "edgemicro-sidecar-injector" created serviceaccount "edgemicro-sidecar-injector-service-account" created deployment "edgemicro-sidecar-injector" created mutatingwebhookconfiguration "edgemicro-sidecar-injector" created
Verifica che l'webhook dell'iniettore sidecar di Edge Microgateway sia in esecuzione:
kubectl -n edgemicro-system get deployment -ledgemicro=sidecar-injector
Output di esempio:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE edgemicro-sidecar-injector 1 1 1 1 12m
Verifica che il pod di inserimento del sidecar sia in esecuzione nel cluster. Il nome di spazio
edgemicro-system
è il luogo in cui sono installati i servizi di sistema, tra cui il controller Ingress, il backend HTTP predefinito e l'iniettore sidecar:kubectl get pods -n edgemicro-system
Output di esempio:
NAME READY STATUS RESTARTS AGE default-http-backend-55c6c69b88-gfnfd 1/1 Running 0 1h edgemicro-ingress-controller-64444469bf-jhn8b 1/1 Running 3 1h edgemicro-sidecar-injector-7d95698fbf-cq84q 1/1 Running 0 3m
Configura e inserisci il microgateway Edge
Nel passaggio successivo, eseguirai uno script interattivo per creare una configurazione di Edge Microgateway associata a uno spazio dei nomi Kubernetes. Poi, inietterai la configurazione nel cluster Kubernetes.
Esegui il seguente script interattivo e fornisci i parametri richiesti. Il comando genera un profilo di configurazione che verrà utilizzato nel passaggio successivo.
./install/kubernetes/webhook-edgemicro-patch.sh
Per informazioni sui parametri di input, consulta la sezione Documentazione di riferimento.
Input di esempio:
Namespace to deploy application [default]:
Premi Invio.
Authenticate with OAuth Token ("n","Y") [N/y]
Inserisci n.
Apigee username [required]:
Inserisci il tuo nome utente (indirizzo email) Apigee. Ad esempio:
jdoe@google.com
.Apigee password [required]:
Inserisci la password di Apigee.
Apigee organization [required]:
Inserisci il nome della tua organizzazione Apigee.
Apigee environment [required]:
Inserisci un nome per l'ambiente della tua organizzazione. Ad esempio "test".
Virtual Host [default]:
Premi Invio.
Is this Private Cloud ("n","y") [N/y]:
Inserisci n se utilizzi il cloud pubblico.
Edgemicro Key. Press Enter to generate:
Premi Invio.
Edgemicro Secret. Press Enter to generate:
Premi Invio.
Edgemicro org-env-config.yaml. Press Enter to generate:
Premi Invio.
Output di esempio:
current nodejs version is v6.9.1 current edgemicro version is 2.5.25 config initialized to /Users/jdoe/.edgemicro/default.yaml Configure for Cloud ****************************************************************************************** Config file is Generated in /Users/jdoe/Work/GITHUB/microgateway_2.5.25_Darwin_x86_64/config directory. Please make changes as desired. *****************************************************************************************
Do you agree to proceed("n","y") [N/y]:
Inserisci y.
Output di esempio:
Configuring Microgateway with key:daacf75dd660d160b801c9117fb1ec0935896615479e39dbbae88be81a2d84 secret:a60fd57c1db9f3a06648173fb541cb9c59188d3b6037a76f490ebf7a6584b0 config:~/.edgemicro/jdoe-test-config.yaml ******************************************************************************************************** kubectl apply -f install/kubernetes/edgemicro-config-namespace-bundle.yaml ********************************************************************************************************
Esegui il comando indicato nell'ultima riga dell'output. Questo comando
kubectl
inserisce il profilo di configurazione di Edge Microgateway generato in Kubernetes:kubectl apply -f install/kubernetes/edgemicro-config-namespace-bundle.yaml
Visualizza lo stato dell'iniezione di webhook. Tieni presente che al momento non è attiva:
kubectl get namespace -L edgemicro-injection
Output di esempio:
NAME STATUS AGE EDGEMICRO-INJECTION default Active 1d edgemicro-system Active 1d kube-public Active 1d kube-system Active 1d
Esegui questo comando per attivare l'iniezione di webhook per il webhook:
kubectl label namespace default edgemicro-injection=enabled
Visualizza di nuovo lo stato dell'iniezione di webhook. Tieni presente che ora è attiva:
kubectl get namespace -L edgemicro-injection
Output di esempio:
NAME STATUS AGE EDGEMICRO-INJECTION default Active 1d enabled edgemicro-system Active 1d kube-public Active 1d kube-system Active 1d
Esegui il deployment del servizio di test
Ora esegui nuovamente il deployment del servizio di test. Edge Microgateway verrà inserito automaticamente nel pod del servizio.
kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default
Verifica che Edge Microgateway sia stato inserito nel pod insieme al servizio di test:
kubectl get pods --namespace=default --watch
Output di esempio:
NAME READY STATUS RESTARTS AGE
helloworld-6987878fc4-pkw8h 0/2 PodInitializing 0 12s
helloworld-6987878fc4-pkw8h 2/2 Running 0 26s
Quando lo stato diventa Running
, premi ctrl-c
per uscire dal comando.
Ora puoi testare il deployment automatico del sidecar di Edge Microgateway. Per la procedura dettagliata, vai a Testare il proxy.
Testa il proxy
Con il deployment sidecar, viene creato automaticamente un proxy API per il servizio. Non è necessario creare un proxy "compatibile con Edge Microgateway".
Ottieni l'indirizzo IP di Ingress
Con l'IP esterno per l'Ingress, puoi chiamare il servizio dall'esterno del cluster.
Ottieni l'indirizzo IP esterno del controller Ingress:
kubectl get ing -o wide
Output di esempio:
NAME HOSTS ADDRESS PORTS AGE gateway * 35.238.13.54 80 1m
Copia il valore
EXTERNAL-IP
per l'Ingress e esportalo in una variabile. Puoi impostare la variabile manualmente:export GATEWAY_IP=external_ip
Ad esempio:
export GATEWAY_IP=35.238.249.62
In alternativa, utilizza questo comando per impostarlo automaticamente:
export GATEWAY_IP=$(kubectl describe ing gateway --namespace default | grep "Address" | cut -d ':' -f2 | tr -d "[:space:]")
Verifica che la variabile sia stata esportata. Ad esempio:
echo $GATEWAY_IP
Output di esempio:
35.238.249.62
Chiama il servizio:
curl $GATEWAY_IP
Output:
{"error":"missing_authorization","error_description":"Missing Authorization header"}
A questo punto, dovrai risolvere l'errore di autorizzazione mancante configurando un prodotto API e un'app per sviluppatori su Edge in modo da ottenere una chiave API valida. Se aggiungi la chiave a un 'intestazione di autorizzazione per la chiamata all'API, la chiamata andrà a buon fine e non vedrai questo errore.
Creare componenti su Apigee Edge
Successivamente, crea un prodotto API e un'app sviluppatore su Apigee Edge.
Creare un prodotto API
- Accedi ad Apigee Edge.
- Seleziona Pubblica > Prodotti API nel menu di navigazione laterale.
- Fai clic su + Prodotto API. Viene visualizzata la pagina del prodotto.
Compila la pagina del prodotto come segue. Per i campi non menzionati di seguito, puoi utilizzare i valori predefiniti. Non salvare finché non ti viene chiesto di farlo.
Nome hello-world-product
Nome visualizzato Edge Micro hello product
Ambiente test
Nella sezione Percorso, fai clic su + Risorsa personalizzata.
Aggiungi il percorso
/
.Fai di nuovo clic su + Risorsa personalizzata e aggiungi il percorso
/**
Nella sezione Proxy API, fai clic su + Proxy API e aggiungi edgemicro-auth.
Salva il prodotto API.
Creazione di un'app sviluppatore
- Seleziona App nel menu di navigazione laterale.
- Fai clic su + App. Viene visualizzata la pagina Dettagli app sviluppatore.
Compila la pagina dell'app per sviluppatori come segue. Non salvare finché non ti viene chiesto di farlo.
Nome hello-world-app
Nome visualizzato Edge Micro hello app
Developer Seleziona uno sviluppatore dal menu a discesa. Nella sezione Credenziali, fai clic su + Prodotto e seleziona il
hello-world-product
appena creato.Fai clic su Salva.
Tornerai alla pagina che elenca tutte le app per sviluppatori.
Seleziona l'app che hai appena creato,
hello-world-app
.Fai clic su Mostra accanto alla chiave consumer.
Copia il valore della Consumer Key. Questo valore è la chiave API che utilizzerai per effettuare chiamate API sicure al servizio
helloworld
.Attendi qualche minuto. Le modifiche apportate su Apigee Edge richiedono alcuni minuti per essere sincronizzate con l'istanza di Edge Microgateway di cui è stato eseguito il deployment nel cluster.
Chiama l'API
Dopo che le modifiche alla configurazione sono state importate nel microgateway, puoi eseguire i seguenti test.
Chiama l'API senza una chiave API. Viene visualizzato un messaggio di errore, come mostrato di seguito:
curl $GATEWAY_IP
Risultato previsto:
{"error":"missing_authorization","error_description":"Missing Authorization header"}
Per effettuare chiamate API riuscite, devi disporre della chiave API.
Recupera la chiave utente dall'app per sviluppatori che hai creato. Questo valore è la chiave API necessaria per chiamare il proxy di test:
curl -H 'x-api-key:your-edge-api-key' $GATEWAY_IP
Ad esempio:
curl -H "x-api-key:DeX2eEesYAdRJ5Gdbo77nT9uUfJZql19" $GATEWAY_IP
Output:
Hello world
La risposta "Hello world" viene restituita dal servizio helloworld di cui è stato eseguito il deployment nel pod. La chiamata a questo servizio è passata prima per Edge Microgateway, dove è stata eseguita l'autenticazione. Se vedi la risposta "Hello world", significa che hai configurato correttamente Edge Microgateway in modo che funzioni come proxy sidecar nel pod di servizio helloworld.
Passaggi successivi
Consulta la sezione Attività per informazioni su come aggiungere plug-in personalizzati, eseguire il ridimensionamento del deployment, apportare modifiche alla configurazione e altre attività che potresti voler eseguire.