Questa sezione descrive l'utilizzo di Apigee Connect per la comunicazione tra il piano di gestione ibrido e il servizio MART nel piano di runtime.
Introduzione
Apigee Connect consente al piano di gestione di Apigee hybrid di connettersi in modo sicuro al servizio MART nel piano di runtime senza richiedere l'esposizione dell'endpoint MART su internet. Se utilizzi Apigee Connect, non è necessario configurare il gateway in entrata MART con un alias host e un certificato DNS autorizzato.

Prerequisiti
Apigee hybrid 1.2.0 o versioni successive.
Aggiungi Apigee Connect al runtime ibrido
Apigee Connect è abilitato per impostazione predefinita per le nuove installazioni di Apigee hybrid versione 1.3.0 e successive. Pertanto, è più probabile che tu abbia bisogno di questi passaggi se esegui l'upgrade da una versione precedente.
Quando Apigee Connect è configurato e abilitato, l'ingresso MART viene ignorato: il management plane si connette a MART solo utilizzando Apigee Connect. Tutto il traffico MART tra il piano di runtime ibrido passa attraverso la connessione sicura Apigee Connect.
Segui questi passaggi per attivare e utilizzare Apigee Connect con Apigee hybrid:
- Attiva l'API Apigee Connect nella
libreria API di Google Cloud. Puoi abilitare l'API nella
console Google Cloud o con
gcloud. Per istruzioni su come abilitare le API nella console Google Cloud, vedi Passaggio 3: abilita le API. Per utilizzaregcloudper abilitare l'API:- Imposta il progetto corrente in gcloud sullo stesso progetto Google Cloud per cui
è stato abilitato Apigee ed è stato eseguito il provisioning della tua organizzazione Apigee.
$ gcloud config set project YOUR_GCP_PROJECT_ID
Dove
YOUR_GCP_PROJECT_IDè l'ID progetto. - Controlla se l'API Apigee Connect è già abilitata:
gcloud services list
NAME TITLE apigee.googleapis.com Apigee API apigeeconnect.googleapis.com Apigee Connect API bigquery.googleapis.com BigQuery API ...
- Se i risultati non includono
apigeeconnect.googleapis.com, abilita l'API:$ gcloud services enable apigeeconnect.googleapis.com
- Imposta il progetto corrente in gcloud sullo stesso progetto Google Cloud per cui
è stato abilitato Apigee ed è stato eseguito il provisioning della tua organizzazione Apigee.
- Aggiungi il ruolo Agente Apigee Connect all'account di servizio MART che hai creato
nel passaggio
Crea service account delle istruzioni di installazione di Apigee Hybrid:
- Se necessario, recupera l'indirizzo email del account di servizio MART:
gcloud iam service-accounts list
NAME EMAIL DISABLED apigee-mart apigee-mart@hybrid-example.iam.gserviceaccount.com False ...
- Verifica se al account di servizio MART è già stato assegnato il ruolo:
gcloud projects get-iam-policy YOUR_GCP_PROJECT_ID
... - members: - serviceAccount:apigee-mart@hybrid-example.iam.gserviceaccount.com role: roles/apigeeconnect.Agent ...
- Se i risultati non includono
role: roles/apigeeconnect.Agent, assegna il ruolo:gcloud projects add-iam-policy-binding YOUR_GCP_PROJECT_ID \ --member serviceAccount:YOUR_MART_SERVICE_ACCOUNT_EMAIL --role roles/apigeeconnect.Agent
dove
YOUR_GCP_PROJECT_IDè l'ID del tuo progetto Google Cloud eYOUR_MART_SERVICE_ACCOUNT_EMAILè l'indirizzo email dell'account di servizio MART.
Il ruolo Agente Apigee Connect è predefinito e dispone della seguente autorizzazione assegnata:
Autorizzazione Descrizione apigeeconnect.endpoints.connectQuesta è l'autorizzazione per configurare l'agente Apigee Connect. Per informazioni dettagliate sull'assegnazione delle autorizzazioni di accesso tramite la console Google Cloud o le API, vedi:
- Se necessario, recupera l'indirizzo email del account di servizio MART:
- Assicurati che il file della chiave del account di servizio MART si trovi nella directory
hybrid_files/service_accounts, come spiegato in Creare service account. - Apri il file di override. Se la proprietà
connectAgent:enablednon è impostata su true o è mancante, aggiungi o aggiorna la seguente sezione.La sezione Apigee Connect deve seguire immediatamente la sezione k8sCluster.
La configurazione richiede di fornire il percorso della chiave del account di servizio scaricata. La chiave deve essere per il account di servizio con il ruolo Agente Apigee Connect .
# Apigee Connect Agent connectAgent: enabled: true serviceAccountPath: ./service-accounts/MART_SA_KEYFILE.json# Apigee Connect Agent connectAgent: enabled: true replicaCountMin: 3 serviceAccountPath: ./service-accounts/connect_agent_sa_key.json - Attiva la funzionalità Apigee Connect per la tua organizzazione. Il nome della funzionalità è
features.mart.connect.enabled.- Individua la chiave del account di servizio con il ruolo Amministratore organizzazione Apigee che
hai utilizzato durante l'installazione iniziale di Apigee Hybrid, come descritto nella sezione
Attivare
l'accesso del sincronizzatore. Si tratta del account di servizio
apigee-org-admin . Avrai bisogno di questa chiave per generare un token necessario per effettuare una chiamata API come spiegato di seguito. - Esegui questi due comandi per ottenere un token:
export GOOGLE_APPLICATION_CREDENTIALS=org-admin-service-account-file $ export TOKEN=$(gcloud auth application-default print-access-token)
Dove org-admin-service-account-file è il percorso sul tuo sistema della chiave del account di servizio con il ruolo Amministratore dell'organizzazione Apigee.
- Controlla se Apigee Connect è già abilitato:
curl https://apigee.googleapis.com/v1/organizations/your_org_name \ -H "Authorization: Bearer $TOKEN"
Cerca nei risultati:
"properties": { "property": [ { "name": "features.mart.connect.enabled", "value": "true" }, { "name": "features.hybrid.enabled", "value": "true" } ] }, - Se i risultati non includono
features..mart.connect.enabledimpostato sutrue, chiama la seguente API Apigee per abilitare Apigee Connect per la tua organizzazione:curl -v -X PUT \ https://apigee.googleapis.com/v1/organizations/your_org_name \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ -d '{ "name" : "your_org_name", "properties" : { "property" : [ { "name" : "features.hybrid.enabled", "value" : "true" }, { "name" : "features.mart.connect.enabled", "value" : "true" } ] } }'
- Individua la chiave del account di servizio con il ruolo Amministratore organizzazione Apigee che
hai utilizzato durante l'installazione iniziale di Apigee Hybrid, come descritto nella sezione
Attivare
l'accesso del sincronizzatore. Si tratta del account di servizio
- Avvia l'agente Apigee Connect nel cluster.
Se hai apportato modifiche in uno dei passaggi precedenti, utilizza il seguente comando per avviare Apigee Connect Agent:
$APIGEECTL_HOME/apigeectl apply -f your_overrides_file.yaml --org
- Controlla il log dell'agente Apigee Connect. Se non vengono segnalati errori, l'upgrade è andato a buon fine:
kubectl logs -n namespace apigee-connect-agent-pod-name
L'agente Apigee Connect segnala le seguenti categorie di log:
Per assistenza sulla visualizzazione dei log di controllo in Apigee Hybrid, vedi Informazioni sui log di controllo.Categoria di audit log Operazioni DATA_READ ConnectionService.ListConnectionsDATA_WRITE Tether.Egress - Testa l'installazione.
mart: hostAlias: "mart.apigee-hybrid-docs.net" # ignored when Apigee Connect is enabled. serviceAccountPath: ./service-accounts/example-project-apigee-mart.json sslCertPath: ./certs/fullchain.pem # ignored when Apigee Connect is enabled. sslKeyPath: ./certs/privkey.key # ignored when Apigee Connect is enabled.
Con questo upgrade, il piano di runtime ibrido comunica con il piano di gestione tramite Apigee Connect.
Vedi anche: Rimozione di Apigee Connect.
Verifica l'installazione
- Apri la UI Apigee hybrid.
- Verifica che gli sviluppatori e le app per sviluppatori che hai creato in precedenza siano presenti nell'interfaccia utente. Poiché queste entità vengono interrogate dal server MART, saranno presenti solo se la comunicazione tra i piani di gestione e di runtime è configurata correttamente.
- Per assicurarti che le richieste passino tramite Apigee Connect e non tramite l'ingresso MART, controlla il log del server MART. Dovresti visualizzare le voci per l'agente Apigee Connect denominato
apigee-connect-agent-1.0:kubectl logs -n apigee apigee-mart-orgname-rc101-q72tl --org | grep connect
Ad esempio:
"2020-07-31 04:59:52,321 org: env: target: action: context-id: mode: pool-1-thread-1 INFO. gserviceaccount.com 1576040392317 /v1/organizations/apigee-connect-hybrid-prod/developers/ count=100&expand=true&startKey=4ee9e8f7-12b2-4cde-bf10-32d991469876 200 GET apigee-connect -hybrid-prod 10.40.11.3 10.40.0.5 apigee-connect-agent-1.0 null"
- Aggiorna il token di autorizzazione:
export TOKEN=$(gcloud auth application-default print-access-token)
- Chiama l'API Apigee per visualizzare i flussi disponibili che si connettono all'endpoint
apigee-mart:curl -s https://apigeeconnect.googleapis.com/v1/projects/YOUR_GCP_PROJECT_ID/endpoints/apigee_mart/connections \ -H "Authorization: Bearer $TOKEN"
{ "connections": [ { "endpoint": "projects/865098068308/endpoints/apigee_mart", "cluster": { "name": "apigee-connect-test-cluster2", "region": "australia-southeast1" }, "streamCount": 4 }, { "endpoint": "projects/865098068308/endpoints/apigee_mart", "cluster": { "name": "apigee-connect-test-cluster", "region": "us-central1" }, "streamCount": 2 } ] }
- Controlla i log dell'agente Apigee Connect:
kubectl logs -n namespace apigee-connect-agent-YOUR_GCP_PROJECT_ID-<....>
I seguenti log indicano che l'agente Apigee Connect è stato avviato e comunica correttamente:
I0719 11.66:10.765526 2314949 main.go:47] Agent's flag values below I0719 11.66:10.765928 2314949 main.go:50] "alsologtostderr" : false I0719 11.66:10.765940 2314949 main.go:50] "cluster_name" : testABC I0719 11.66:10.765947 2314949 main.go:50] "cluster_region" : us-west2 I0719 11.66:10.765953 2314949 main.go:50] "cpu_profile_enabled" : false I0719 11.66:10.765959 2314949 main.go:50] "http_client_timeout" : 2m0s I0719 11.66:10.765966 2314949 main.go:50] "http_port" : 7070 I0719 11.66:10.765972 2314949 main.go:50] "http_server" : false I0719 11.66:10.765978 2314949 main.go:50] "insecure_ssl" : false I0719 11.66:10.765984 2314949 main.go:50] "local_cert" : I0719 11.66:10.765990 2314949 main.go:50] "log_backtrace_at" : :0 I0719 11.66:10.766001 2314949 main.go:50] "log_dir" : I0719 11.66:10.766007 2314949 main.go:50] "logtostderr" : true I0719 11.66:10.766012 2314949 main.go:50] "mem_profile_enabled" : false I0719 11.66:10.766018 2314949 main.go:50] "project" : projects/apigee-connect-hybrid-prod I0719 11.66:10.766025 2314949 main.go:50] "resource_id" : I0719 11.66:10.766031 2314949 main.go:50] "server_addr" : apigeeconnect.googleapis.com:443 I0719 11.66:10.766036 2314949 main.go:50] "server_cert" : ./server.crt I0719 11.66:10.766042 2314949 main.go:50] "server_key" : ./server.key I0719 11.66:10.766047 2314949 main.go:50] "stderrthreshold" : 2 I0719 11.66:10.766054 2314949 main.go:50] "target_server" : http://127.0.0.1/ I0719 11.66:10.766059 2314949 main.go:50] "tether_endpoint" : APIGEE_MART I0719 11.66:10.766065 2314949 main.go:50] "v" : 0 I0719 11.66:10.766072 2314949 main.go:50] "vmodule" : I0719 11.66:10.845441 2314949 agent.go:400] successfully initiated http client I0719 11.66:10.845772 2314949 agent.go:728] starting metrics http server at ":7070" I0719 11.66:11.231.69 2314949 agent.go:245] listening on tether 6407043920806543360 I0719 11.68:11.346544 2314949 agent.go:245] listening on tether 2101602677040349184 I0719 12:00:11.461084 2314949 agent.go:245] listening on tether 9109203697228840960 I0719 12:02:11.683743 2314949 agent.go:245] listening on tether 8978599308035096576 I0719 12:02:40.325633 2314949 agent.go:255] tether id 6407043920806543360 is closed ...
- Nell'interfaccia utente ibrida, crea un prodotto API, uno sviluppatore e un'app sviluppatore. Quindi effettua diverse
chiamate API a un proxy.
I log di Connect Agent generati durante l'elaborazione delle richieste saranno utili per visualizzare lo stato o gli errori:
kubectl logs -n namespace apigee-connect-agent-YOUR_GCP_PROJECT_ID-<....>
INFO: 2020/04/13 03:29:08 "961ff385-600a-427a-8864-ba066ff42330": received response from target "apigee-mart-apigee-connect-hybrid-prod.apigee.svc.cluster.local:8843", status code: 200 INFO: 2020/04/13 03:29:08 Attempting to send response 961ff385-600a-427a-8864-ba066ff42330 on tether 16734438331890270208 INFO: 2020/04/13 03:29:09 "e2fc0492-6e78-4c58-972b-7de8258b9e86": received response from target "apigee-mart-apigee-connect-hybrid-prod.apigee.svc.cluster.local:8843", status code: 200 INFO: 2020/04/13 03:29:09 Attempting to send response e2fc0492-6e78-4c58-972b-7de8258b9e86 on tether 12483040283652521984 INFO: 2020/04/13 03:29:10 "1ab3023b-b763-4b91-bf4f-ca8c02f62e50": received response from target "apigee-mart-apigee-connect-hybrid-prod.apigee.svc.cluster.local:8843", status code: 200 INFO: 2020/04/13 03:29:10 Attempting to send response 1ab3023b-b763-4b91-bf4f-ca8c02f62e50 on tether 12483040283652521984 INFO: 2020/04/13 03:29:12 "1fa3e3c3-a36e-4ff1-b2d3-5cf14f2f8fdd": received response from target "apigee-mart-apigee-connect-hybrid-prod.apigee.svc.cluster.local:8843", status code: 200 INFO: 2020/04/13 03:29:12 Attempting to send response 1fa3e3c3-a36e-4ff1-b2d3-5cf14f2f8fdd on tether 16734438331890270208 INFO: 2020/04/13 03:29:13 "09b7ef9d-f53d-466a-a174-e88fc7e5286d": received response from target "apigee-mart-apigee-connect-hybrid-prod.apigee.svc.cluster.local:8843", status code: 200 INFO: 2020/04/13 03:29:13 Attempting to send response 09b7ef9d-f53d-466a-a174-e88fc7e5286d on tether 16734438331890270208 INFO: 2020/04/13 03:29:14 "c2ce8b73-8faf-4a05-88d9-24fb2bf45552": received response from target "apigee-mart-apigee-connect-hybrid-prod.apigee.svc.cluster.local:8843", status code: 200 INFO: 2020/04/13 03:29:14 Attempting to send response c2ce8b73-8faf-4a05-88d9-24fb2bf45552 on tether 12483040283652521984 INFO: 2020/04/13 03:29:15 "fdc3bac5-2b83-4b57-a28d-d8b455dae71e": received response from target "apigee-mart-apigee-connect-hybrid-prod.apigee.svc.cluster.local:8843", status code: 200 INFO: 2020/04/13 03:29:15 Attempting to send response fdc3bac5-2b83-4b57-a28d-d8b455dae71e on tether 12483040283652521984 INFO: 2020/04/13 03:29:16 "260026a9-f578-4447-a1d2-d8e49cf181d8": received response from target "apigee-mart-apigee-connect-hybrid-prod.apigee.svc.cluster.local:8843", status code: 200 INFO: 2020/04/13 03:29:16 Attempting to send response 260026a9-f578-4447-a1d2-d8e49cf181d8 on tether 12483040283652521984 INFO: 2020/04/13 03:29:17 "bf3d74a1-94ae-4041-892f-56f1ed9c9cff": received response from target "apigee-mart-apigee-connect-hybrid-prod.apigee.svc.cluster.local:8843", status code: 200 INFO: 2020/04/13 03:29:17 Attempting to send response bf3d74a1-94ae-4041-892f-56f1ed9c9cff on tether 16734438331890270208 INFO: 2020/04/13 03:29:18 "6d017278-3b7a-40fb-9c63-7c34320e7df1": received response from target "apigee-mart-apigee-connect-hybrid-prod.apigee.svc.cluster.local:8843", status code: 200
Log causati dall'errore di Connect Agent a causa dell'errore di autorizzazione negata IAM, che ha causato l'arresto anomalo dell'agente:
F0719 12:34:33.128565 2326128 tether.go:29] failed to register stream with Apigee Connect, got 'PermissionDenied': rpc error: code = PermissionDenied desc = Permission denied on resource '// apigeeconnect.googleapis.com/projects/apigee-connect-hybrid-prod/endpoints/APIGEE_MART' (or it may not exist).
F0719 12:34:33.128565 2326128 tether.go:29] failed to register stream with Apigee Connect, got 'PermissionDenied': rpc error: code = PermissionDenied desc = Permission denied on resource pro ject apigee-connect-hybrid-prod.
Rimozione di Apigee Connect
Se elimini il deployment di Apigee Connect, lo stato del pod può rimanere in stato "Terminating" (Terminazione) per un massimo di sette minuti. Questo periodo di tempo è previsto. Gli agenti Apigee Connect attendono la scadenza delle connessioni esistenti anziché interromperle improvvisamente. Il ritardo garantisce che le richieste in corso non vengano perse.