Questa pagina si applica ad Apigee, ma non ad Apigee hybrid.
Visualizza la documentazione di Apigee Edge.
Questo documento descrive come installare e configurare Apigee dalla riga di comando senza il peering VPC. Questi passaggi si applicano ai modelli di prezzo di abbonamento e a consumo per le organizzazioni a pagamento con o senza residenza dei dati abilitata.
Consulta anche le opzioni di provisioning.Limitazioni
L'opzione di installazione del peering non VPC descritta in questo documento presenta alcune limitazioni:
- I Controlli di servizio VPC non sono supportati.
- Il peering DNS privato non è supportato.
Per un elenco completo delle funzionalità e degli approcci di rete supportati e non supportati per il peering non VPC, consulta Come scegliere un'opzione di rete.
Riepilogo della procedura
I passaggi per il provisioning sono i seguenti:
- Passaggio 1: definisci le variabili di ambiente:
Configura
gcloud
e definisci le variabili di ambiente. L'interfaccia a riga di comando Google Cloud gestisce l'autenticazione, la configurazione locale, il flusso di lavoro degli sviluppatori e le interazioni con le API di Google Cloud. - Passaggio 2: abilita le API: Apigee richiede l'abilitazione di diverse API Google Cloud.
- Passaggio 3: crea l'identità di servizio Apigee: questo account di servizio viene utilizzato dalle librerie client Google Cloud per l'autenticazione con le API Google Cloud.
- Passaggio 4: crea un'organizzazione: un'organizzazione Apigee (a volte indicata come org) è il contenitore di primo livello in Apigee. Sono inclusi tutti gli ambienti e i gruppi di ambienti, gli utenti, i proxy API e le risorse correlate.
- Passaggio 5: crea un'istanza di runtime: un'istanza o un runtime è il luogo in cui vengono archiviati il progetto e i servizi correlati. Fornisce l'endpoint rivolto agli utenti per i servizi.
- Passaggio 6: crea un ambiente: un proxy API deve essere eseguito in un ambiente e aggiunto a un gruppo di ambienti prima che le API esposte siano accessibili tramite la rete.
- Passaggio 7: configura il routing: consenti l'accesso esterno o solo interno alla tua API.
- Passaggio 8: esegui il deployment di un proxy di esempio: testa il provisioning eseguendo il deployment e chiamando un proxy API.
Passaggio 1: definizione delle variabili di ambiente
Configura gcloud
e definisci le variabili di ambiente da utilizzare nei passaggi successivi:
- Assicurati di aver completato i requisiti di configurazione elencati in Prima di iniziare.
- Devi avere installato Cloud SDK. Se devi installarlo, consulta Installazione di Cloud SDK.
- Inizializza Cloud SDK come descritto in Inizializza l'interfaccia a riga di comando gcloud oppure assicurati che il progetto Google Cloud creato in Prerequisiti sia il progetto predefinito per
gcloud
. - Definisci le seguenti variabili di ambiente nel terminale dei comandi.
Seleziona la scheda corrispondente al tipo di organizzazione di cui hai bisogno:
Nessuna residenza dei dati o con
Residenza dei dati:
Nessuna residenza dei dati
AUTH="$(gcloud auth print-access-token)"
PROJECT_ID="YOUR_PROJECT_ID"
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
RUNTIME_LOCATION="YOUR_RUNTIME_LOCATION"
ANALYTICS_REGION="YOUR_ANALYTICS_REGION"
BILLING_TYPE="YOUR_BILLING_TYPE"
Dove:
-
AUTH definisce l'intestazione
Authentication
con un token di accesso. Utilizzerai questo header quando chiami le API Apigee. Tieni presente che il token scade dopo un determinato periodo di tempo e, a quel punto, puoi semplicemente rigenerarlo utilizzando lo stesso comando. Per ulteriori informazioni, consulta la pagina di riferimento del comando print-access-token. - PROJECT_ID è l'ID progetto Cloud che hai creato nell'ambito dei prerequisiti.
- PROJECT_NUMBER è il numero del progetto Cloud che hai creato nell'ambito dei prerequisiti.
-
RUNTIME_LOCATION è la posizione fisica in cui si trova l'istanza Apigee che creerai in un secondo momento. Per un elenco delle località di runtime disponibili, consulta Località di Apigee.
-
ANALYTICS_REGION è la posizione fisica in cui verranno archiviati i dati di analisi di Apigee. Per un elenco delle regioni di Apigee API Analytics disponibili, consulta Località Apigee.
Sia RUNTIME_LOCATION che ANALYTICS_REGION possono essere la stessa regione, ma non è obbligatorio.
-
BILLING_TYPE è il tipo di fatturazione per l'organizzazione che crei. I valori validi sono:
PAYG
per le organizzazioni con Pay-as-you-go.SUBSCRIPTION
per le organizzazioni Abbonamento.
Residenza dei dati
AUTH="$(gcloud auth print-access-token)"
PROJECT_ID="YOUR_PROJECT_ID"
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
RUNTIME_LOCATION="YOUR_RUNTIME_LOCATION"
CONTROL_PLANE_LOCATION="YOUR_CONTROL_PLANE_LOCATION"
CONSUMER_DATA_REGION="YOUR_CONSUMER_DATA_REGION"
BILLING_TYPE="YOUR_BILLING_TYPE"
Dove:
-
AUTH definisce l'intestazione
Authentication
con un token di accesso. Utilizzerai questo header quando chiami le API Apigee. Tieni presente che il token scade dopo un determinato periodo di tempo e, a quel punto, puoi semplicemente rigenerarlo utilizzando lo stesso comando. Per ulteriori informazioni, consulta la pagina di riferimento del comando print-access-token. - PROJECT_ID è l'ID progetto Cloud che hai creato nell'ambito dei prerequisiti.
- PROJECT_NUMBER è il numero del progetto Cloud che hai creato nell'ambito dei prerequisiti.
-
RUNTIME_LOCATION è la posizione fisica in cui si trova l'istanza Apigee che creerai in un secondo momento. Per un elenco delle località di runtime disponibili, consulta Località di Apigee.
La posizione di runtime deve trovarsi all'interno della posizione del control plane. - CONTROL_PLANE_LOCATION è la posizione fisica in cui verranno archiviati i dati del piano di controllo Apigee. Per un elenco delle località del piano di controllo disponibili, consulta Località di Apigee.
- CONSUMER_DATA_REGION è una sottoregione della regione del piano di controllo. Devi specificare sia CONTROL_PLANE_LOCATION sia CONSUMER_DATA_REGION. Per un elenco delle regioni di dati dei consumatori disponibili, consulta Località Apigee.
-
BILLING_TYPE è il tipo di fatturazione per l'organizzazione che crei. I valori validi sono:
PAYG
per le organizzazioni con Pay-as-you-go.SUBSCRIPTION
per le organizzazioni Abbonamento.
-
AUTH definisce l'intestazione
- (Facoltativo) Controlla il tuo lavoro eseguendo l'echo dei valori appena impostati. Tieni presente che quando vuoi
utilizzare una variabile nei comandi, devi precedere il nome della variabile con il segno di dollaro
($).
Nessuna residenza dei dati
echo $AUTH
echo $PROJECT_ID
echo $PROJECT_NUMBER
echo $RUNTIME_LOCATION
echo $ANALYTICS_REGION
echo $BILLING_TYPE
Le risposte ai comandi
echo
dovrebbero essere simili alle seguenti:YOUR_TOKEN my-cloud-project 1234567890 us-west1 us-west1 SUBSCRIPTION
Residenza dei dati
echo $AUTH
echo $PROJECT_ID
echo $PROJECT_NUMBER
echo $RUNTIME_LOCATION
echo $CONTROL_PLANE_LOCATION
echo $CONSUMER_DATA_REGION
echo $BILLING_TYPE
Le risposte ai comandi
echo
dovrebbero essere simili alle seguenti:YOUR_TOKEN my-cloud-project 1234567890 us-west1 us us-west1 SUBSCRIPTION
Passaggio 2: attivazione delle API
-
Apigee richiede l'abilitazione di diverse API Google Cloud. Abilitali eseguendo il seguente comando
services enable
:gcloud services enable apigee.googleapis.com \ compute.googleapis.com \ cloudkms.googleapis.com --project=$PROJECT_ID
(Facoltativo) Per controllare il tuo lavoro, usa il comando
services list
per mostrare tutte le API attivate:gcloud services list
La risposta mostra tutti i servizi abilitati, incluse le API appena abilitate.
Passaggio 3: crea l'identità del servizio Apigee
-
Crea l'identità di servizio Apigee:
gcloud beta services identity create --service=apigee.googleapis.com \ --project=$PROJECT_ID
Verifica che l'agente sia stato creato correttamente. La risposta deve mostrare il nome dell'agente nel seguente formato:
service-PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com
. ad esempio:Service identity created: service-1234567890@gcp-sa-apigee.iam.gserviceaccount.com
Passaggio 4: creazione di un'organizzazione
Prima di poter creare un'organizzazione, devi creare un anello di chiavi di crittografia e una chiave per il database di runtime (vedi passaggio 1) e, se utilizzi la residenza dei dati, anelli di chiavi di crittografia e chiavi per il piano di controllo (vedi passaggio 2). Queste chiavi Cloud KMS criptano i dati archiviati e replicati nelle località del piano di controllo e di runtime. Apigee utilizza queste entità per criptare i dati dell'applicazione, come KVM, cache e secret client, che vengono poi archiviati nel database. Per ulteriori informazioni, consulta Informazioni sulle chiavi di crittografia Apigee.
-
Crea una chiave automatizzata e una chiave di crittografia del database di runtime.
-
Definisci una variabile di ambiente per la posizione dell'anello e della chiave di crittografia del database di runtime. In questo modo puoi garantire la coerenza durante la creazione e seguire più facilmente la documentazione.
Il valore è la posizione fisica in cui sono archiviati il tuo anello di chiavi di crittografia del database di runtime e la chiave.
Regione singola
Configurazioni per una singola regione (in cui hai una sola istanza in una regione): scegli tra le località regionali KMS supportate.
Ad esempio:
RUNTIMEDBKEY_LOCATION="us-west1"
Il valore può essere uguale a $RUNTIME_LOCATION (anche una regione), ma non è obbligatorio. Tuttavia, se sono uguali, potrebbe esserci un vantaggio in termini di rendimento.
Più regioni
Configurazioni multi-regione: scegli tra le località multiregionali supportate (ad es.
us
oeurope
) o le località a due regioni.Ad esempio:
RUNTIMEDBKEY_LOCATION="us"
Se hai una configurazione per più regioni negli Stati Uniti, ti consigliamo di utilizzare
us
per la tua località, se possibile. In caso contrario, utilizzanam4
. - Definisci le variabili di ambiente per i keyring e i nomi delle chiavi del database.
Il nome del portachiavi deve essere univoco per la tua organizzazione. Se crei una seconda regione o una successiva, il nome non può essere uguale a quello di altri mazzi di chiavi.
RUNTIMEDB_KEY_RING_NAME=YOUR_DB_KEY_RING_NAME
RUNTIMEDB_KEY_NAME=YOUR_DB_KEY_NAME
- (Facoltativo) Controlla il tuo lavoro eseguendo l'echo dei valori appena impostati. Ricorda che quando vuoi
utilizzare una variabile nei comandi, devi precedere il nome della variabile con il segno di dollaro
($).
echo $RUNTIMEDBKEY_LOCATION
echo $RUNTIMEDB_KEY_RING_NAME
echo $RUNTIMEDB_KEY_NAME
- Crea un nuovo keyring:
gcloud kms keyrings create $RUNTIMEDB_KEY_RING_NAME \ --location $RUNTIMEDBKEY_LOCATION --project $PROJECT_ID
La posizione della chiave di crittografia del database di runtime Apigee supporta tutte le località Cloud KMS che supportano Cloud HSM e Cloud EKM.
Crea una chiave:
gcloud kms keys create $RUNTIMEDB_KEY_NAME \ --keyring $RUNTIMEDB_KEY_RING_NAME \ --location $RUNTIMEDBKEY_LOCATION \ --purpose "encryption" \ --project $PROJECT_ID
Questo comando crea la chiave e la aggiunge al mazzo di chiavi.
Recupera l'ID chiave:
gcloud kms keys list \ --location=$RUNTIMEDBKEY_LOCATION \ --keyring=$RUNTIMEDB_KEY_RING_NAME \ --project=$PROJECT_ID
L'ID chiave ha la seguente sintassi (simile a un percorso file):
projects/PROJECT_ID/locations/RUNTIMEDBKEY_LOCATION/keyRings/RUNTIMEDB_KEY_RING_NAME/cryptoKeys/RUNTIMEDB_KEY_NAME
Inserisci l'ID chiave in una variabile di ambiente. Utilizzerai questa variabile in un comando successivo:
RUNTIMEDB_KEY_ID=YOUR_RUNTIMEDB_KEY_ID
Concedi all'agente di servizio Apigee l'accesso per utilizzare la nuova chiave:
gcloud kms keys add-iam-policy-binding $RUNTIMEDB_KEY_NAME \ --location $RUNTIMEDBKEY_LOCATION \ --keyring $RUNTIMEDB_KEY_RING_NAME \ --member serviceAccount:service-$PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project $PROJECT_ID
Questo comando associa la chiave all'agente di servizio Apigee.
Al termine della richiesta,
gcloud
risponde con un messaggio simile al seguente:Updated IAM policy for key [runtime]. bindings: - members: - serviceAccount:service-1234567890@gcp-sa-apigee.iam.gserviceaccount.com role: roles/cloudkms.cryptoKeyEncrypterDecrypter etag: BwWqgEuCuwk= version: 1
Se ricevi un errore simile al seguente:
INVALID_ARGUMENT: Role roles/cloudkms.cryptokms.cryptoKeyEncrypterDecrypter is not supported for this resource.
Assicurati di aver utilizzato il numero del progetto e non il nome del progetto nell'indirizzo email dell'account di servizio.
-
- Se utilizzi la residenza dei dati, crea un mazzo di chiavi di crittografia del piano di controllo e una chiave. Se non utilizzi la residenza dei dati, vai al passaggio 3.
- Definisci una variabile di ambiente per la posizione della chiave e dell'anello di crittografia del database del piano di controllo:
CONTROL_PLANE_LOCATION=YOUR_CONTROL_PLANE_LOCATION
CONSUMER_DATA_REGION=YOUR_CONSUMER_DATA_REGION
Dove:
- CONTROL_PLANE_LOCATION è la posizione fisica in cui verranno archiviati i dati del piano di controllo Apigee. Per un elenco delle località del piano di controllo disponibili, consulta Località di Apigee.
- CONSUMER_DATA_REGION è una sottoregione della regione del piano di controllo. Devi specificare sia CONTROL_PLANE_LOCATION sia CONSUMER_DATA_REGION. Per un elenco delle regioni di dati dei consumatori disponibili, consulta Località Apigee.
Definisci le variabili di ambiente per i mazzi di chiavi e i nomi delle chiavi del database del piano di controllo.
Il nome del portachiavi deve essere univoco per la tua organizzazione.
CONTROL_PLANE_KEY_RING_NAME=YOUR_CONTROL_PLANE_KEY_RING_NAME
CONTROL_PLANE_KEY_NAME=YOUR_CONTROL_PLANE_KEY_NAME
CONSUMER_DATA_KEY_RING_NAME=YOUR_CONSUMER_DATA_KEY_RING_NAME
CONSUMER_DATA_KEY_NAME=YOUR_CONSUMER_DATA_REGION_KEY_NAME
Dove:
- CONTROL_PLANE_KEY_RING_NAME è il nome del mazzo di chiavi di crittografia del control plane che utilizzerai per identificarlo.
- CONTROL_PLANE_KEY_NAME è il nome della chiave che utilizzerai per identificare la chiave di crittografia del control plane.
- CONSUMER_DATA_KEY_RING_NAME è il nome del set di chiavi che utilizzerai per identificare il set di chiavi di crittografia della regione dei dati dei consumatori.
- CONSUMER_DATA_KEY_NAME è il nome della chiave che utilizzerai per identificare la chiave di crittografia della regione dei dati dei consumatori.
- Crea un nuovo keyring:
gcloud kms keyrings create $CONTROL_PLANE_KEY_RING_NAME \ --location $CONTROL_PLANE_LOCATION \ --project $PROJECT_ID
gcloud kms keyrings create $CONSUMER_DATA_KEY_RING_NAME \ --location $CONSUMER_DATA_REGION \ --project $PROJECT_ID
- Crea una chiave:
gcloud kms keys create $CONTROL_PLANE_KEY_NAME \ --keyring $CONTROL_PLANE_KEY_RING_NAME \ --location $CONTROL_PLANE_LOCATION \ --purpose "encryption" \ --project $PROJECT_ID
gcloud kms keys create $CONSUMER_DATA_KEY_NAME \ --keyring $CONSUMER_DATA_KEY_RING_NAME \ --location $CONSUMER_DATA_REGION \ --purpose "encryption" \ --project $PROJECT_ID
Questo comando crea la chiave e la aggiunge al mazzo di chiavi.
Recupera l'ID chiave:
gcloud kms keys list \ --location=$CONTROL_PLANE_LOCATION \ --keyring=$CONTROL_PLANE_KEY_RING_NAME \ --project=$PROJECT_ID
gcloud kms keys list \ --location=$CONSUMER_DATA_REGION \ --keyring=$CONSUMER_DATA_KEY_RING_NAME \ --project=$PROJECT_ID
L'ID chiave ha la seguente sintassi (simile a un percorso file):
projects/PROJECT_ID/locations/CONTROL_PLANE_LOCATION/keyRings/CONTROL_PLANE_KEY_RING_NAME/cryptoKeys/CONTROL_PLANE_KEY_NAME
projects/PROJECT_ID/locations/CONSUMER_DATA_REGION/keyRings/CONSUMER_DATA_KEY_RING_NAME/cryptoKeys/CONSUMER_DATA_KEY_NAME
- Inserisci l'ID chiave in una variabile di ambiente. Utilizzerai questa variabile in un comando successivo:
CONTROL_PLANE_KEY_ID=YOUR_CONTROL_PLANE_KEY_ID
CONSUMER_DATA_KEY_ID=YOUR_CONSUMER_DATA_KEY_ID
- Concedi all'agente di servizio Apigee l'accesso per utilizzare la nuova chiave:
gcloud kms keys add-iam-policy-binding $CONTROL_PLANE_KEY_NAME \ --location $CONTROL_PLANE_LOCATION \ --keyring $CONTROL_PLANE_KEY_RING_NAME \ --member "serviceAccount:service-$PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com" \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project $PROJECT_ID
gcloud kms keys add-iam-policy-binding $CONSUMER_DATA_KEY_NAME \ --location $CONSUMER_DATA_REGION \ --keyring $CONSUMER_DATA_KEY_RING_NAME \ --member "serviceAccount:service-$PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com" \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project $PROJECT_ID
Questo comando associa la chiave all'agente di servizio Apigee. Al termine corretto di questa richiesta, gcloud risponde con qualcosa di simile al seguente:
Updated IAM policy for key [runtime]. bindings: - members: - serviceAccount:service-1234567890@gcp-sa-apigee.iam.gserviceaccount.com role: roles/cloudkms.cryptoKeyEncrypterDecrypter etag: BwWqgEuCuwk= version: 1
Se ricevi un errore simile al seguente:
INVALID_ARGUMENT: Role roles/cloudkms.cryptokms.cryptoKeyEncrypterDecrypter is not supported for this resource.
Assicurati di aver utilizzato il numero di progetto e non il nome del progetto nell'indirizzo email dell'account di servizio.
-
Crea l'organizzazione inviando la seguente richiesta all'API organizations di Apigee:
Nessuna residenza dei dati
curl "https://apigee.googleapis.com/v1/organizations?parent=projects/$PROJECT_ID" \ -H "Authorization: Bearer $AUTH" \ -X POST \ -H "Content-Type:application/json" \ -d '{ "name":"'"$PROJECT_ID"'", "analyticsRegion":"'"$ANALYTICS_REGION"'", "runtimeType":"CLOUD", "billingType":"'"$BILLING_TYPE"'", "disableVpcPeering":"true", "runtimeDatabaseEncryptionKeyName":"'"$RUNTIMEDB_KEY_ID"'" }'
Dove:
-d
definisce il payload di dati per la richiesta. Questo payload deve includere quanto segue:name
: identifica la nuova organizzazione. Deve avere lo stesso nome dell'ID progetto.analyticsRegion
: specifica la posizione fisica in cui verranno archiviati i dati di analisi.runtimeType
: imposta questo valore suCLOUD
.billingType
: specifica il tipo di fatturazione dell'organizzazione creata.disableVpcPeering
: impostato sutrue
se non vuoi utilizzare il peering VPC. Valore predefinito:false
runtimeDatabaseEncryptionKeyName
: l'ID della chiave di crittografia dell'applicazione che hai creato nel passaggio precedente. Ricorda che l'ID è strutturato come un percorso file. Ad esempio:projects/my-project/locations/us-west1/keyRings/my-key-ring/cryptoKeys/my-key
Residenza dei dati
Crea un'organizzazione utilizzando l'API:
curl "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations?parent=projects/$PROJECT_ID" \ -H "Authorization: Bearer $AUTH" \ -X POST \ -H "Content-Type:application/json" \ -d '{ "name":"'"$PROJECT_ID"'", "runtimeType":"CLOUD", "billingType":"'"$BILLING_TYPE"'", "controlPlaneEncryptionKeyName":"'"$CONTROL_PLANE_KEY_ID"'", "apiConsumerDataLocation":"'"$CONSUMER_DATA_REGION"'", "apiConsumerDataEncryptionKeyName":"'"$CONSUMER_DATA_KEY_ID"'", "disableVpcPeering":"true", "runtimeDatabaseEncryptionKeyName":"'"$RUNTIMEDB_KEY_ID"'" }'
Dove:
-d
definisce il payload di dati per la richiesta. Questo payload deve includere quanto segue:name
: identifica la nuova organizzazione. Deve avere lo stesso nome dell'ID progetto.runtimeType
: imposta questo valore suCLOUD
.billingType
: specifica il tipo di fatturazione dell'organizzazione creata.controlPlaneEncryptionKeyName
: è l'ID chiave del piano di controllo.apiConsumerDataLocation
: devi anche specificare una sottoregione da utilizzare per le risorse interne. Consulta Regioni di residenza dei dati per i valori supportati.apiConsumerDataEncryptionKeyName
: è l'ID chiave della regione dei dati dei consumatori.disableVpcPeering
: impostato sutrue
se non vuoi utilizzare il peering VPC. Valore predefinito:false
runtimeDatabaseEncryptionKeyName
: l'ID della chiave di crittografia dell'applicazione che hai creato nel passaggio precedente. Ricorda che l'ID è strutturato come un percorso file. Ad esempio:
projects/my-project/locations/us-west1/keyRings/my-key-ring/cryptoKeys/my-key
Dopo aver eseguito questo comando, Apigee avvia un'operazione a lungo termine, che può richiedere alcuni minuti.
Se ricevi un errore, controlla l'utilizzo delle virgolette intorno ai valori delle variabili nel payload dei dati. Assicurati di avere virgolette doppie, singole e doppie intorno alla variabile $PROJECT_ID, come mostrato nell'esempio seguente:
"'"$PROJECT_ID"'"
Se utilizzi stringhe normali (non variabili di ambiente) per i valori della richiesta, puoi inserirle tra virgolette doppie all'interno della stringa del payload tra virgolette singole, come mostrato nell'esempio seguente:
'{ "name":"my-gcp-project", ... }'
- Attendi qualche minuto.
- Per controllare lo stato della richiesta di creazione, puoi inviare una richiesta
GET
all'API List organizations di Apigee, come mostrato nell'esempio seguente:Nessuna residenza dei dati
curl -H "Authorization: Bearer $AUTH" "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID"
Residenza dei dati
curl -H "Authorization: Bearer $AUTH" "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID"
Se visualizzi questa risposta, significa che la creazione dell'organizzazione non è ancora stata completata:
{ "error": { "code": 403, "message": "Permission denied on resource \"organizations/apigee-docs-m\" (or it may not exist)", "status": "PERMISSION_DENIED" } }
In caso di esito positivo, l'oggetto risposta indicherà
"state": "ACTIVE"
e potrai passare al passaggio successivo.Se Apigee restituisce una risposta di errore HTTP, consulta Creazione di un'organizzazione Apigee.
Esegui i passaggi che seguono per creare una chiave e un mazzo di chiavi di crittografia del piano di controllo.
Vedi anche: Risoluzione dei problemi relativi a CMEK.
Passaggio 5: creazione di un'istanza di runtime
Un'istanza di runtime è il luogo in cui vengono archiviati il progetto Apigee e i servizi correlati; fornisce l'endpoint rivolto agli utenti per i tuoi servizi. Per creare una nuova istanza di runtime:
-
Verifica che Apigee abbia completato la creazione della tua organizzazione. Hai inviato una richiesta per creare una nuova organizzazione in Creare un'organizzazione Apigee, ma devi assicurarti che sia stata completata prima di continuare.
A tale scopo, invia la seguente richiesta all'API organizations:
Nessuna residenza dei dati
curl -i -H "Authorization: Bearer $AUTH" \ "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID"
Residenza dei dati
curl -i -H "Authorization: Bearer $AUTH" \ "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID"
Se l'organizzazione esiste (e disponi delle autorizzazioni appropriate per visualizzarla), Apigee risponde fornendo i dettagli. Se Apigee risponde con un errore, attendi un paio di minuti e invia di nuovo la richiesta.
- Come nell'attività precedente in cui hai creato una chiave di crittografia per il database,
ora devi creare una chiave
Cloud KMS utilizzata per criptare i dati lato server.
Per iniziare, definisci le seguenti variabili di ambiente:
INSTANCE_NAME=YOUR_INSTANCE_NAME
RUNTIME_LOCATION=YOUR_RUNTIME_LOCATION
DISK_KEY_RING_NAME=YOUR_DISK_KEY_RING_NAME
DISK_KEY_NAME=YOUR_DISK_KEY_NAME
- INSTANCE_NAME: il nome della nuova istanza. Ad esempio,
my-runtime-instance
. Il nome deve iniziare con una lettera minuscola, può avere una lunghezza massima di 32 caratteri e può includere solo lettere minuscole, numeri e trattini. Non può iniziare o terminare con un trattino e deve contenere almeno due caratteri. - RUNTIME_LOCATION è il luogo fisico in cui è ospitato il cluster.
I valori validi sono qualsiasi posizione consentita da Compute Engine. (consulta
Regioni e zone disponibili.) Questo esempio utilizza
us-west1
. - DISK_KEY_RING_NAME è il nome del set di chiavi di crittografia del disco.
- DISK_KEY_NAME è il nome della chiave di crittografia del disco.
- Crea una chiave di crittografia del disco:
- Crea un nuovo keyring di dischi:
gcloud kms keyrings create $DISK_KEY_RING_NAME \ --location $RUNTIME_LOCATION \ --project $PROJECT_ID
Il keyring del disco deve essere impostato sulla stessa posizione dell'istanza. Ogni istanza e ogni keyring deve avere una propria posizione.
- Crea una nuova chiave del disco:
gcloud kms keys create $DISK_KEY_NAME \ --keyring $DISK_KEY_RING_NAME \ --location $RUNTIME_LOCATION \ --purpose "encryption" \ --project $PROJECT_ID
È possibile fare riferimento alla chiave tramite il relativo percorso della chiave. Puoi ottenere il percorso della chiave con il seguente comando:
gcloud kms keys list \ --location=$RUNTIME_LOCATION \ --keyring=$DISK_KEY_RING_NAME \ --project=$PROJECT_ID
Il percorso della chiave ha il seguente aspetto:
projects/PROJECT_ID/locations/RUNTIME_LOCATION/keyRings/my-disk-key-ring/cryptoKeys/my-disk-key
Inserisci il percorso della chiave in una variabile di ambiente. Utilizzerai questa variabile in un comando successivo:
DISK_KEY_ID=YOUR_DISK_KEY_ID
Ad esempio:
DISK_KEY_ID=projects/my-project/locations/us-west1/keyRings/my-key-ring/cryptoKeys/my-key
Concedi all'agente di servizio Apigee l'accesso per utilizzare la nuova chiave:
gcloud kms keys add-iam-policy-binding $DISK_KEY_NAME \ --location $RUNTIME_LOCATION \ --keyring $DISK_KEY_RING_NAME \ --member serviceAccount:service-$PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project $PROJECT_ID
Questo comando associa la chiave all'agente di servizio Apigee.
Per ulteriori informazioni, consulta Informazioni sulle chiavi di crittografia di Apigee.
- Crea un nuovo keyring di dischi:
- Crea una nuova istanza di runtime per il tuo progetto inviando una richiesta
POST
all'API Instances di Apigee:Nessuna residenza dei dati
curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances" \ -X POST -H "Authorization: Bearer $AUTH" \ -H "Content-Type:application/json" \ -d '{ "name":"'"$INSTANCE_NAME"'", "location":"'"$RUNTIME_LOCATION"'", "diskEncryptionKeyName":"'"$DISK_KEY_ID"'", "consumerAcceptList":["'"$PROJECT_ID"'"] }'
Residenza dei dati
curl "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances" \ -X POST -H "Authorization: Bearer $AUTH" \ -H "Content-Type:application/json" \ -d '{ "name":"'"$INSTANCE_NAME"'", "location":"'"$RUNTIME_LOCATION"'", "diskEncryptionKeyName":"'"$DISK_KEY_ID"'", "consumerAcceptList":["'"$PROJECT_ID"'"] }'
Dove:
consumerAcceptList
(Facoltativo) Specifica un elenco di ID progetto Google Cloud che possono connettersi in privato all' allegato del servizio del VPC Apigee. Il collegamento di servizio è un'entità utilizzata con Google Cloud Private Service Connect per consentire ai produttori di servizi (in questo caso Apigee) di esporre i servizi ai consumatori (in questo caso uno o più progetti Cloud di tua proprietà). Per impostazione predefinita, utilizziamo il progetto Cloud già associato alla tua organizzazione Apigee. Ad esempio:"consumerAcceptList": ["project1", "project2", "project3"]
Tieni presente che puoi anche impostare e modificare l'elenco dei progetti accettati nell'interfaccia utente dell'istanza. Per maggiori dettagli, consulta Gestione delle istanze.
Il completamento di questa richiesta può richiedere fino a 20 minuti perché Apigee deve creare e avviare un nuovo cluster Kubernetes, installare le risorse Apigee sul cluster e configurare il bilanciamento del carico.
Se Apigee restituisce un errore, consulta Creazione di una nuova istanza.
Per controllare lo stato della richiesta di creazione dell'istanza di runtime, esegui il seguente comando. Quando lo stato è ACTIVE, puoi andare al passaggio successivo.
Nessuna residenza dei dati
curl -i -X GET -H "Authorization: Bearer $AUTH" \ "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances/$INSTANCE_NAME"
Residenza dei dati
curl -i -X GET -H "Authorization: Bearer $AUTH" \ "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances/$INSTANCE_NAME"
Dove:
Passaggio 6: creazione di un ambiente
Per creare un ambiente e collegarlo al runtime sulla riga di comando:
- Definisci le variabili di ambiente da utilizzare in questa sezione. Le variabili di ambiente specifiche che crei dependono dal fatto che tu stia creando un ambiente per un'organizzazione con abbonamento o Pay-as-you-go.
Abbonamento
Per un ambiente di abbonamento, crea queste variabili:
ENVIRONMENT_NAME="YOUR_ENV_NAME"
ENV_GROUP_NAME="YOUR_ENV_GROUP_NAME"
ENV_GROUP_HOSTNAME="YOUR_ENV_GROUP_HOSTNAME"
Dove:
ENVIRONMENT_NAME
è un nome di stringa. Ad esempio:test
ENV_GROUP_NAME
è un nome di stringa. Ad esempio:test-group
ENV_GROUP_HOSTNAME
è un nome host di dominio valido. Ad esempio:foo.example.com
Pagamento a consumo
Per un ambiente Pay-as-you-go, crea queste variabili:
ENVIRONMENT_NAME="YOUR_ENV_NAME"
ENVIRONMENT_TYPE="YOUR_ENV_TYPE"
ENV_GROUP_NAME="YOUR_ENV_GROUP_NAME"
ENV_GROUP_HOSTNAME="YOUR_ENV_GROUP_HOSTNAME"
Dove:
ENVIRONMENT_NAME
è un nome di stringa. Ad esempio:test
ENVIRONMENT_TYPE
è il tipo di ambiente per questo ambiente ed è applicabile solo agli utenti Pay-as-you-go, che devono specificare uno di questi valori:BASE
,INTERMEDIATE
oCOMPREHENSIVE
. Gli altri utenti devono omettere il tipo di ambiente.ENV_GROUP_NAME
è un nome di stringa. Ad esempio:test-group
ENV_GROUP_HOSTNAME
è un nome host di dominio valido. Ad esempio:foo.example.com
- Crea un nuovo ambiente con l'API Environments. I comandi specifici che utilizzi dependono dal fatto che tu stia creando un ambiente per un'organizzazione con abbonamento o a pagamento per utilizzo.
Abbonamento
Per un nuovo ambiente di abbonamento, utilizza il seguente comando:
Nessuna residenza dei dati
curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments" \ -H "Authorization: Bearer $AUTH" \ -X POST \ -H "Content-Type:application/json" \ -d '{ "name":"'"$ENVIRONMENT_NAME"'" }'
Residenza dei dati
curl "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments" \ -H "Authorization: Bearer $AUTH" \ -X POST \ -H "Content-Type:application/json" \ -d '{ "name":"'"$ENVIRONMENT_NAME"'" }'
Apigee crea un nuovo ambiente.
Pagamento a consumo
Per un nuovo ambiente Pay-as-you-go, utilizza il seguente comando:
Nessuna residenza dei dati
curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments" \ -H "Authorization: Bearer $AUTH" \ -X POST \ -H "Content-Type:application/json" \ -d '{ "name":"'"$ENVIRONMENT_NAME"'", "type":"'"$ENVIRONMENT_TYPE"'" }'
Residenza dei dati
curl "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments" \ -H "Authorization: Bearer $AUTH" \ -X POST \ -H "Content-Type:application/json" \ -d '{ "name":"'"$ENVIRONMENT_NAME"'", "type":"'"$ENVIRONMENT_TYPE"'" }'
Apigee crea un nuovo ambiente.
- Prima di continuare, verifica che Apigee abbia completato la creazione del nuovo ambiente chiamando l'API Environments:
Nessuna residenza dei dati
curl -i -H "Authorization: Bearer $AUTH" \ "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments"
Residenza dei dati
curl -i -H "Authorization: Bearer $AUTH" \ "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments"
Apigee risponde con un elenco di ambienti disponibili. Ad esempio, se il nome dell'ambiente è
test
, Apigee risponde con quanto segue:[ "test" ]
- Collega il nuovo ambiente all'istanza di runtime:
Nessuna residenza dei dati
curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances/$INSTANCE_NAME/attachments" \ -X POST -H "Authorization: Bearer $AUTH" \ -H "content-type:application/json" \ -d '{ "environment":"'"$ENVIRONMENT_NAME"'" }'
Residenza dei dati
curl "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances/$INSTANCE_NAME/attachments" \ -X POST -H "Authorization: Bearer $AUTH" \ -H "content-type:application/json" \ -d '{ "environment":"'"$ENVIRONMENT_NAME"'" }'
L'operazione potrebbe richiedere diversi minuti. Per verificare se l'aggancio è stato completato, esegui questo comando:
Nessuna residenza dei dati
curl -i -H "Authorization: Bearer $AUTH" \ "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances/$INSTANCE_NAME/attachments"
Residenza dei dati
curl -i -H "Authorization: Bearer $AUTH" \ "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances/$INSTANCE_NAME/attachments"
Quando viene visualizzato un output simile al seguente, puoi andare al passaggio successivo:
{ "attachments": [ { "name": "ed628782-c893-4095-b71c-f4731805290a", "environment": "test", "createdAt": "1641604447542" } ] }
- Crea un nuovo gruppo di ambienti utilizzando il seguente comando. Per saperne di più, consulta
Informazioni su ambienti e gruppi di ambienti:
Nessuna residenza dei dati
curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups" \ -H "Authorization: Bearer $AUTH" \ -X POST \ -H "Content-Type:application/json" \ -d '{ "name": "'"$ENV_GROUP_NAME"'", "hostnames":["'"$ENV_GROUP_HOSTNAME"'"] }'
Residenza dei dati
curl "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups" \ -H "Authorization: Bearer $AUTH" \ -X POST \ -H "Content-Type:application/json" \ -d '{ "name": "'"$ENV_GROUP_NAME"'", "hostnames":["'"$ENV_GROUP_HOSTNAME"'"] }'
- Attendi il completamento dell'operazione. Puoi controllare lo stato del nuovo gruppo utilizzando una
richiesta come la seguente:
Nessuna residenza dei dati
curl -i -H "Authorization: Bearer $AUTH" \ "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/$ENV_GROUP_NAME"
Residenza dei dati
curl -i -H "Authorization: Bearer $AUTH" \ "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/$ENV_GROUP_NAME"
- Collega il nuovo ambiente al nuovo gruppo di ambienti con il seguente comando:
Nessuna residenza dei dati
curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/$ENV_GROUP_NAME/attachments" \ -X POST \ -H "Authorization: Bearer $AUTH" \ -H "content-type:application/json" \ -d '{ "environment":"'"$ENVIRONMENT_NAME"'" }'
Residenza dei dati
curl "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/$ENV_GROUP_NAME/attachments" \ -X POST \ -H "Authorization: Bearer $AUTH" \ -H "content-type:application/json" \ -d '{ "environment":"'"$ENVIRONMENT_NAME"'" }'
- Per controllare lo stato dell'operazione, chiama questa API:
Nessuna residenza dei dati
curl -H "Authorization: Bearer $AUTH" \ "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/$ENV_GROUP_NAME/attachments"
Residenza dei dati
curl -H "Authorization: Bearer $AUTH" \ "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/$ENV_GROUP_NAME/attachments"
Passaggio 7: configurazione del routing
In questo passaggio, configuri il modo in cui le applicazioni client comunicano con Apigee. Il traffico dal client ad Apigee è chiamato anche traffico "in uscita". Le opzioni di configurazione in uscita sono le seguenti. Vai all'opzione di configurazione che vuoi utilizzare ed esegui i passaggi relativi:
Tipo di accesso | Descrizione della procedura di configurazione e di deployment |
---|---|
Interna con PSC (novità) |
Consenti solo l'accesso interno ai proxy API da qualsiasi progetto Google Cloud utilizzando Private Service Connect (PSC). PSC consente la connessione privata tra un producer di servizi (Apigee) e un consumer di servizi (il progetto VPC in peering e/o uno o più altri progetti Cloud sotto il tuo controllo). Con questo metodo, le richieste passano tramite un endpoint di servizio o un bilanciatore del carico interno regionale a un singolo punto di attacco, chiamato attacco del servizio. Questa configurazione consente ai client interni di inviare richieste proxy API Apigee da qualsiasi computer con accesso alla rete. |
Esterno con PSC (novità) |
Consenti l'accesso esterno ai proxy API utilizzando Private Service Connect (PSC). Utilizza Private Service Connect (PSC) per abilitare la connessione privata tra un producer di servizi (Apigee) e un consumer di servizi (il progetto VPC congiunto e/o uno o più altri progetti cloud che controlli). Con questo metodo, le richieste passano tramite un bilanciatore del carico esterno globale o un bilanciatore del carico esterno regionale a un singolo punto di attacco, chiamato attacco del servizio. Questa configurazione ti consente di inviare richieste di proxy API Apigee da qualsiasi computer con accesso alla rete. |
Ciascuno di questi approcci di routing è presentato nelle istruzioni riportate di seguito.
Routing interno (PSC)
Questa sezione spiega come consentire solo l'accesso interno ai proxy API da qualsiasi progetto Google Cloud utilizzando Private Service Connect (PSC).
Hai due opzioni per configurare l'accesso interno con PSC:
- Endpoint di servizio: le richieste passano attraverso un endpoint di servizio a un singolo punto di collegamento, chiamato collegamento al servizio.
- Bilanciatore del carico regionale interno: le richieste passano attraverso un bilanciatore del carico HTTP(S) interno regionale. Consulta anche Bilanciamento del carico globale e a livello di regione.
Seleziona la scheda di seguito per la configurazione scelta e segui i passaggi:
Endpoint di servizio
Crea un endpoint del servizio PSC per il collegamento del servizio
- Recupera l'allegato del servizio dall'istanza creata in precedenza:
Nessuna residenza dei dati
curl -i -X GET -H "Authorization: Bearer $AUTH" \ "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances"
Residenza dei dati
curl -i -X GET -H "Authorization: Bearer $AUTH" \ "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances"
Nell'output di esempio riportato di seguito, il valore
serviceAttachment
è mostrato in grassetto:{ "instances": [ { "name": "us-west1", "location": "us-west1", "createdAt": "1645731488019", "lastModifiedAt": "1646504754219", "diskEncryptionKeyName": "projects/my-project/locations/us-west1/keyRings/us-west1/cryptoKeys/dek", "state": "ACTIVE", "runtimeVersion": "1-7-0-20220228-190814", "consumerAcceptList": [ "my-project" ], "serviceAttachment": "projects/bfac74a67a320c43a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw1" } ] }
- Crea un endpoint di servizio PSC che punti al collegamento al servizio ottenuto dal corpo della risposta dell'istanza nel passaggio precedente, come spiegato in Creare un endpoint Private Service Connect.
- Il provisioning di Apigee è stato completato. Vai a Esegui il deployment di un proxy di esempio.
Bilanciatore del carico regionale interno
Passaggio 8a: configura le variabili di ambiente
Le istruzioni in questa sezione utilizzano le variabili di ambiente per fare riferimento a stringhe utilizzate ripetutamente. Assicurati di aver impostato le variabili in Definire le variabili di ambiente.
Inoltre, imposta le seguenti variabili di ambiente:
NEG_NAME=YOUR_NEG_NAME"TARGET_SERVICE=YOUR_TARGET_SERVICE"
NETWORK_NAME=YOUR_NETWORK_NAME"
SUBNET_NAME=YOUR_SUBNET_NAME"
Dove:
- NEG_NAME: un nome per il gruppo di endpoint di rete.
- TARGET_SERVICE: l'attacco del servizio a cui vuoi collegarti. Ad esempio:
projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7
- NETWORK_NAME: (Facoltativo) Nome della rete in cui viene creato il NEG. Se ometti questo parametro, viene utilizzata la rete del progetto
default
. - SUBNET_NAME: il nome della subnet utilizzata per la connettività privata al producer. La dimensione della subnet può essere ridotta: il NEG PSC richiede un solo IP della subnet. Per Apigee è necessario un solo NEG PSC per regione. La subnet può essere condivisa e utilizzata da VM o altre entità. Se non viene specificata una subnet, gli endpoint di rete possono appartenere a qualsiasi subnet nella regione in cui viene creato il gruppo di endpoint di rete.
Passaggio 8b: crea una subnet solo proxy
gcloud compute networks subnets create testproxyonlysubnet \ --purpose=REGIONAL_MANAGED_PROXY --role=ACTIVE --region=$RUNTIME_REGION --network=$NETWORK_NAME \ --range=100.0.0.0/24 --project=$PROJECT_ID
Passaggio 8c: crea un gruppo di endpoint di rete (NEG)
- Recupera l'allegato del servizio dall'istanza creata in precedenza:
Nessuna residenza dei dati
curl -i -X GET -H "Authorization: Bearer $AUTH" \ "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances"
Residenza dei dati
curl -i -X GET -H "Authorization: Bearer $AUTH" \ "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances"
Nell'output di esempio seguente, il valore
serviceAttachment
è mostrato in grassetto:{ "instances": [ { "name": "us-west1", "location": "us-west1", "createdAt": "1645731488019", "lastModifiedAt": "1646504754219", "diskEncryptionKeyName": "projects/my-project/locations/us-west1/keyRings/us-west1/cryptoKeys/dek", "state": "ACTIVE", "runtimeVersion": "1-7-0-20220228-190814", "consumerAcceptList": [ "my-project" ], "serviceAttachment": "projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7" } ] }
Crea un NEG Private Service Connect che punti al collegamento di servizio ottenuto dal corpo della risposta dell'istanza nel passaggio precedente.
gcloud compute network-endpoint-groups create $NEG_NAME \ --network-endpoint-type=private-service-connect \ --psc-target-service=$TARGET_SERVICE \ --region=$RUNTIME_LOCATION \ --project=$PROJECT_ID
dove $PROJECT_ID può essere il progetto Cloud già associato alla tua organizzazione Apigee o un progetto Cloud incluso nel
consumerAcceptlist
quando è stata creata l'istanza di runtime Apigee.
Passaggio 8d: configura il bilanciatore del carico interno a livello di regione
- Prenota un indirizzo IPv4 interno per il bilanciatore del carico.
gcloud compute addresses create ADDRESS_NAME \ --ip-version=IPV4 --subnet=$SUBNET_NAME \ --region=$RUNTIME_LOCATION --project=$PROJECT_ID
Sostituisci ADDRESS_NAME con un nome per la risorsa indirizzo IP.
Esegui questo comando per visualizzare l'indirizzo IP riservato:
gcloud compute addresses describe ADDRESS_NAME \ --format="get(address)" --region=$RUNTIME_LOCATION --project=$PROJECT_ID
- Crea un servizio di backend per il gruppo di negozi NEG.
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTPS \ --region=$RUNTIME_REGION \ --project=$PROJECT_ID
- Aggiungi il NEG al servizio di backend:
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --network-endpoint-group=$NEG_NAME \ --region=$RUNTIME_LOCATION \ --project=$PROJECT_ID
Sostituisci quanto segue:
- NEG_NAME: il nome del gruppo di endpoint di rete.
- BACKEND_SERVICE_NAME con il nome del servizio di backend.
-
Per creare un bilanciatore del carico HTTPS, devi disporre di una risorsa certificato SSL da utilizzare nel proxy di destinazione HTTPS.
Utilizza questo comando per creare una risorsa del certificato SSL autogestita. Per creare un certificato SSL autogestito, devi disporre di un file della chiave privata locale e di un file del certificato locale. Se devi creare questi file, consulta il passaggio 1 sull'utilizzo dei certificati SSL autogestiti.
gcloud compute ssl-certificates create CERTIFICATE \ --certificate LB_CERT \ --private-key LB_PRIVATE_KEY --region=$RUNTIME_LOCATION --project=$PROJECT_ID
Sostituisci quanto segue:
- CERTIFICATE: un nome per il certificato.
- LB_CERT: il percorso del file del certificato in formato PEM per il certificato autogestito.
- LB_PRIVATE_KEY: il percorso del file della chiave privata in formato PEM per il certificato autogestito.
-
Crea una mappa URL per il bilanciatore del carico.
Una mappa URL deve fare riferimento a un servizio di backend predefinito. Imposta il servizio di backend appena creato come predefinito.
gcloud compute url-maps create URL_MAP_NAME \ --default-service=DEFAULT_BACKEND_SERVICE_NAME \ --region=$RUNTIME_REGION \ --project=$PROJECT_ID
Sostituisci quanto segue:
- URL_MAP_NAME: un nome per la mappa degli URL.
- DEFAULT_BACKEND_SERVICE_NAME: il nome del servizio di backend predefinito del bilanciatore del carico. Il valore predefinito viene utilizzato quando nessuna regola host corrisponde al nome host richiesto.
-
Utilizza la risorsa del certificato SSL per creare un proxy HTTPS di destinazione.
gcloud compute target-https-proxies create PROXY_NAME \ --url-map=URL_MAP_NAME \ --ssl-certificates=CERTIFICATE \ --region=$RUNTIME_LOCATION --project=$PROJECT_ID
Sostituisci quanto segue:
- PROXY_NAME: un nome per il proxy HTTPS di destinazione.
- URL_MAP_NAME: il nome della mappa di URL.
- CERTIFICATE: il nome della risorsa del certificato.
- Crea la regola di forwarding.
gcloud compute forwarding-rules create FWD_RULE \ --load-balancing-scheme=INTERNAL_MANAGED \ --address=ADDRESS_NAME \ --target-https-proxy=PROXY_NAME \ --ports=443 \ --target-https-proxy-region=$RUNTIME_REGION \ --region=$RUNTIME_REGION \ --project=$PROJECT_ID \ --network=$NETWORK_NAME \ --subnet=$SUBNET_NAME
Sostituisci quanto segue:
- FWD_RULE: un nome per la regola di forwarding.
- ADDRESS_NAME: la risorsa indirizzo IP che hai riservato per l'utilizzo per la regola di forwarding.
- PROXY_NAME: il nome del proxy HTTPS di destinazione.
- NETWORK_NAME: (Facoltativo) Nome della rete in cui viene creato il NEG. Se ometti questo parametro, viene utilizzata la rete del progetto
default
. - SUBNET_NAME: il nome della subnet utilizzata per la connettività privata al producer.
- Il provisioning di Apigee è stato completato. Vai a Eseguire il deployment di un proxy di esempio.
Sostituisci BACKEND_SERVICE_NAME con il nome del servizio di backend.
Routing esterno (PSC)
Questa sezione descrive come configurare il routing esterno utilizzando Private Service Connect (PSC) per consentire la comunicazione tra Apigee e i VPC che controlli. Devi eseguire questa operazione prima di poter inviare una richiesta da un client esterno all'istanza di runtime Apigee.
Passaggio 8b: crea un NEG e configura il bilanciatore del carico
Puoi creare un bilanciatore del carico globale o regionale.
Bilanciatore del carico esterno globale
Configura un bilanciatore del carico HTTP(S) esterno globale (schema di bilanciamento del carico impostato su EXTERNAL_MANAGED
).
Sebbene il NEG Private Service Connect sia regionale, tutti gli altri componenti di bilanciamento del carico in questa configurazione sono globali.
- Assicurati di aver impostato le variabili di ambiente in Definire le variabili di ambiente.
- Recupera l'allegato del servizio dall'istanza creata in precedenza:
Nessuna residenza dei dati
curl -i -X GET -H "Authorization: Bearer $AUTH" \ "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances"
Residenza dei dati
curl -i -X GET -H "Authorization: Bearer $AUTH" \ "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances"
Nell'output di esempio seguente, il valore
serviceAttachment
è mostrato in grassetto:{ "instances": [ { "name": "us-west1", "location": "us-west1", "host": "10.82.192.2", "port": "443", "createdAt": "1645731488019", "lastModifiedAt": "1646504754219", "diskEncryptionKeyName": "projects/my-project/locations/us-west1/keyRings/us-west1/cryptoKeys/dek", "state": "ACTIVE", "peeringCidrRange": "SLASH_22", "runtimeVersion": "1-7-0-20220228-190814", "ipRange": "10.82.192.0/22,10.82.196.0/28", "consumerAcceptList": [ "875609189304" ], "serviceAttachment": "projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7" } ] }
Crea un NEG Private Service Connect che punti al collegamento di servizio ottenuto dal corpo della risposta dell'istanza nel passaggio precedente.
gcloud compute network-endpoint-groups create NEG_NAME \ --network-endpoint-type=private-service-connect \ --psc-target-service=TARGET_SERVICE \ --region=$RUNTIME_LOCATION \ --network=NETWORK_NAME \ --subnet=SUBNET_NAME \ --project=$PROJECT_ID
Sostituisci quanto segue:
- NEG_NAME: un nome per il gruppo di endpoint di rete.
- TARGET_SERVICE: l'attacco del servizio a cui vuoi collegarti. Utilizza il valore dell'attacco del servizio restituito dal
comando precedente. Ad esempio:
projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7
- NETWORK_NAME: (Facoltativo) Nome della rete in cui viene creato il NEG. Se ometti questo parametro, viene utilizzata la rete del progetto
default
. - SUBNET_NAME: il nome della subnet utilizzata per la connettività privata con il produttore. La dimensione della subnet può essere ridotta: il NEG PSC richiede un solo IP della subnet. Per Apigee è necessario un solo NEG PSC per regione. La subnet può essere condivisa e utilizzata da VM o altre entità. Se non viene specificata una subnet, gli endpoint di rete possono appartenere a qualsiasi subnet nella regione in cui viene creato il gruppo di endpoint di rete.
- $PROJECT_ID Il progetto Cloud già associato alla tua organizzazione Apigee o un progetto Cloud incluso nel
consumerAcceptlist
quando è stata creata l'istanza di runtime Apigee. Se non l'hai ancora fatto, crea una variabile di ambiente per contenere l'ID progetto, poiché viene utilizzata nella maggior parte dei comandi che seguono.
- Prenota un indirizzo IPv4 esterno globale per il bilanciatore del carico.
gcloud compute addresses create ADDRESS_NAME \ --ip-version=IPV4 --global --project=$PROJECT_ID
Sostituisci ADDRESS_NAME con un nome per la risorsa indirizzo IP.
Esegui questo comando per visualizzare l'indirizzo IP riservato:
gcloud compute addresses describe ADDRESS_NAME \ --format="get(address)" --global --project=$PROJECT_ID
- Crea un servizio di backend per il gruppo di negozi NEG.
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTPS \ --global --project=$PROJECT_ID
- Aggiungi il NEG al servizio di backend.
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --network-endpoint-group=NEG_NAME \ --network-endpoint-group-region=REGION \ --global --project=$PROJECT_ID
Sostituisci quanto segue:
- BACKEND_SERVICE_NAME: il nome del servizio di backend.
- NEG_NAME: il nome del gruppo di endpoint di rete.
- REGION: la regione del gruppo di endpoint di rete.
Crea una mappa URL per il bilanciatore del carico.
Una mappa URL deve fare riferimento a un servizio di backend predefinito. Imposta il servizio di backend appena creato come predefinito.
gcloud compute url-maps create URL_MAP_NAME \ --default-service=DEFAULT_BACKEND_SERVICE_NAME \ --global --project=$PROJECT_ID
Sostituisci quanto segue:
- URL_MAP_NAME: un nome per la mappa degli URL.
- DEFAULT_BACKEND_SERVICE_NAME: il nome del servizio di backend predefinito del bilanciatore del carico. Il valore predefinito viene utilizzato quando nessuna regola host corrisponde al nome host richiesto.
Crea il proxy HTTPS di destinazione.
Per creare un bilanciatore del carico HTTPS, devi disporre di una risorsa certificato SSL da utilizzare nel proxy di destinazione HTTPS. Puoi creare una risorsa del certificato SSL utilizzando un certificato SSL gestito da Google o un certificato SSL autogestito. Ti consigliamo di utilizzare i certificati gestiti da Google perché Google Cloud li ottiene, li gestisce e li rinnova automaticamente.
Per creare un certificato gestito da Google, devi avere un dominio.
Utilizza questo comando per creare una risorsa del certificato SSL gestita da Google:
gcloud compute ssl-certificates create CERTIFICATE \ --domains DOMAIN --project=$PROJECT_ID
Sostituisci quanto segue:
- CERTIFICATE: un nome per il certificato.
- DOMAIN: il nome di dominio del bilanciatore del carico.
Utilizza questo comando per creare una risorsa del certificato SSL autogestita. Per creare un certificato SSL autogestito, devi disporre di un file della chiave privata locale e di un file del certificato locale. Se devi creare questi file, consulta il passaggio 1 sull'utilizzo dei certificati SSL autogestiti.
gcloud compute ssl-certificates create CERTIFICATE \ --certificate LB_CERT \ --private-key LB_PRIVATE_KEY --project=$PROJECT_ID
Sostituisci quanto segue:
- CERTIFICATE: un nome per il certificato.
- LB_CERT: il percorso del file del certificato in formato PEM per il certificato autogestito.
- LB_PRIVATE_KEY: il percorso del file della chiave privata in formato PEM per il certificato autogestito.
Utilizza la risorsa del certificato SSL per creare un proxy HTTPS di destinazione.
gcloud compute target-https-proxies create PROXY_NAME \ --url-map=URL_MAP_NAME \ --ssl-certificates=CERTIFICATE --project=$PROJECT_ID
Sostituisci quanto segue:
- PROXY_NAME: un nome per il proxy HTTPS di destinazione.
- URL_MAP_NAME: il nome della mappa di URL.
- CERTIFICATE: il nome della risorsa del certificato.
- Crea la regola di forwarding.
gcloud compute forwarding-rules create FWD_RULE \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=ADDRESS_NAME \ --target-https-proxy=PROXY_NAME \ --ports=443 \ --global --project=$PROJECT_ID
Sostituisci quanto segue:
- FWD_RULE: un nome per la regola di forwarding.
- ADDRESS_NAME: la risorsa indirizzo IP che hai riservato per l'utilizzo per la regola di forwarding.
- PROXY_NAME: il nome del proxy HTTPS di destinazione.
Sostituisci BACKEND_SERVICE_NAME con il nome del servizio di backend.
Bilanciatore del carico esterno regionale
Configura un bilanciatore del carico HTTP(S) esterno a livello di area geografica. Consulta anche Panoramica del bilanciatore del carico HTTP(S) esterno.
- Assicurati di aver impostato le variabili in Definire le variabili di ambiente.
- Crea una subnet solo proxy:
gcloud compute networks subnets create SUBNET_NAME \ --purpose=REGIONAL_MANAGED_PROXY --role=ACTIVE \ --region=$RUNTIME_LOCATION --network=NETWORK_NAME \ --range=100.0.0.0/24 --project=$PROJECT_ID
Sostituisci quanto segue:
- SUBNET_NAME: il nome della subnet.
- (Facoltativo) NETWORK_NAME: il nome della rete in cui viene creata la subnet. Se ometti questo parametro, viene utilizzata la rete del progetto predefinita.
- Recupera l'allegato del servizio dall'istanza creata in precedenza:
Nessuna residenza dei dati
curl -i -X GET -H "Authorization: Bearer $AUTH" \ "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances"
Residenza dei dati
curl -i -X GET -H "Authorization: Bearer $AUTH" \ "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances"
Nell'output di esempio seguente, il valore
serviceAttachment
è mostrato in grassetto:{ "instances": [ { "name": "us-west1", "location": "us-west1", "host": "10.82.192.2", "port": "443", "createdAt": "1645731488019", "lastModifiedAt": "1646504754219", "diskEncryptionKeyName": "projects/my-project/locations/us-west1/keyRings/us-west1/cryptoKeys/dek", "state": "ACTIVE", "peeringCidrRange": "SLASH_22", "runtimeVersion": "1-7-0-20220228-190814", "ipRange": "10.82.192.0/22,10.82.196.0/28", "consumerAcceptList": [ "875609189304" ], "serviceAttachment": "projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7" } ] }
- Crea un gruppo di endpoint di rete.
gcloud compute network-endpoint-groups create NEG_NAME \ --network-endpoint-type=private-service-connect \ --psc-target-service=TARGET_SERVICE \ --region=$RUNTIME_LOCATION --project=$PROJECT_ID
Sostituisci quanto segue:
- NEG_NAME: il nome del gruppo di endpoint di rete.
- TARGET_SERVICE: il nome dell'allegato del servizio a cui vuoi connetterti.
Ad esempio:
projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7
- Crea un servizio di backend per il gruppo di negozi NEG.
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTPS \ --region=$RUNTIME_LOCATION \ --project=$PROJECT_ID
- Aggiungi il NEG al servizio di backend.
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --network-endpoint-group=NEG_NAME \ --region=$RUNTIME_LOCATION \ --project=$PROJECT_ID
Sostituisci quanto segue:
- BACKEND_SERVICE_NAME: il nome del servizio di backend.
- NEG_NAME: il nome del gruppo di endpoint di rete.
Crea una mappa URL per il bilanciatore del carico.
Una mappa URL deve fare riferimento a un servizio di backend predefinito. Imposta il servizio di backend appena creato come predefinito.
gcloud compute url-maps create URL_MAP_NAME \ --default-service=DEFAULT_BACKEND_SERVICE_NAME \ --region=$RUNTIME_LOCATION \ --project=$PROJECT_ID
Sostituisci quanto segue:
- URL_MAP_NAME: un nome per la mappa degli URL.
- DEFAULT_BACKEND_SERVICE_NAME: il nome del servizio di backend predefinito del bilanciatore del carico. Il valore predefinito viene utilizzato quando nessuna regola host corrisponde al nome host richiesto.
Crea il proxy HTTPS di destinazione.
Per creare un bilanciatore del carico HTTPS, devi disporre di una risorsa certificato SSL da utilizzare nel proxy di destinazione HTTPS.
Utilizza questo comando per creare una risorsa del certificato SSL autogestita. Per creare un certificato SSL autogestito, devi disporre di un file della chiave privata locale e di un file del certificato locale. Se devi creare questi file, consulta il passaggio 1 sull'utilizzo dei certificati SSL autogestiti.
gcloud compute ssl-certificates create CERTIFICATE \ --certificate LB_CERT \ --private-key LB_PRIVATE_KEY --region=$RUNTIME_LOCATION \ --project=$PROJECT_ID
Sostituisci quanto segue:
- CERTIFICATE: un nome per il certificato.
- LB_CERT: il percorso del file del certificato in formato PEM per il certificato autogestito.
- LB_PRIVATE_KEY: il percorso del file della chiave privata in formato PEM per il certificato autogestito.
Utilizza la risorsa del certificato SSL per creare un proxy HTTPS di destinazione.
gcloud compute target-https-proxies create PROXY_NAME \ --url-map=URL_MAP_NAME --region=$RUNTIME_LOCATION \ --ssl-certificates=CERTIFICATE --project=$PROJECT_ID
Sostituisci quanto segue:
- PROXY_NAME: un nome per il proxy HTTPS di destinazione.
- URL_MAP_NAME: il nome della mappa di URL.
- CERTIFICATE: il nome della risorsa del certificato.
- Prenota un indirizzo esterno regionale per il bilanciatore del carico. Tieni presente che il livello di rete deve essere impostato su
STANDARD
.gcloud compute addresses create ADDRESS_NAME \ --region=$RUNTIME_LOCATION --network-tier=STANDARD \ --project=$PROJECT_ID
Sostituisci ADDRESS_NAME con un nome per la risorsa indirizzo IP.
Esegui questo comando per visualizzare l'indirizzo IP riservato:
gcloud compute addresses describe ADDRESS_NAME \ --format="get(address)" --region=$RUNTIME_LOCATION \ --project=$PROJECT_ID
- Crea la regola di forwarding.
gcloud compute forwarding-rules create FWD_RULE \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=STANDARD \ --address=ADDRESS_NAME \ --target-https-proxy=PROXY_NAME \ --ports=443 --region=$RUNTIME_LOCATION \ --target-https-proxy-region=$RUNTIME_LOCATION --project=$PROJECT_ID
Sostituisci quanto segue:
- FWD_RULE: un nome per la regola di forwarding.
- ADDRESS_NAME: la risorsa indirizzo IP che hai riservato per l'utilizzo per la regola di forwarding.
- PROXY_NAME: il nome del proxy HTTPS di destinazione.
Sostituisci BACKEND_SERVICE_NAME con il nome del servizio di backend.
Il provisioning di Apigee è stato completato. Vai a Eseguire il deployment di un proxy di esempio.
Passaggio 8: deployment di un proxy di esempio
- Scarica il proxy di esempio da GitHub. La destinazione del proxy è il servizio httpbin.org, che è un servizio pubblico di richiesta e risposta di uso comune.
- Carica il bundle del proxy API nel runtime utilizzando l'API Apigee
apis
:Nessuna residenza dei dati
curl -i -X POST -H "Authorization: Bearer $AUTH" \ -H "Content-Type:multipart/form-data" \ "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/apis?name=httpbin&action=import" \ -F 'file=@PATH_TO_ZIP_FILE/httpbin_rev1_2020_02_02.zip'
Residenza dei dati
curl -i -X POST -H "Authorization: Bearer $AUTH" \ -H "Content-Type:multipart/form-data" \ "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/apis?name=httpbin&action=import" \ -F 'file=@PATH_TO_ZIP_FILE/httpbin_rev1_2020_02_02.zip'
dove PATH_TO_ZIP_FILE è il percorso della directory contenente il file ZIP scaricato.
-
Esegui il deployment del proxy API nell'ambiente creato in precedenza:
Nessuna residenza dei dati
curl -i -H "Authorization: Bearer $AUTH" -X POST \ "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments/$ENVIRONMENT_NAME/apis/httpbin/revisions/1/deployments"
Residenza dei dati
curl -i -H "Authorization: Bearer $AUTH" -X POST \ "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments/$ENVIRONMENT_NAME/apis/httpbin/revisions/1/deployments"
- Verifica che il deployment sia stato completato correttamente con questa chiamata API:
Nessuna residenza dei dati
curl -i -H "Authorization: Bearer $AUTH" \ "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments/$ENVIRONMENT_NAME/apis/httpbin/revisions/1/deployments"
Residenza dei dati
curl -i -H "Authorization: Bearer $AUTH" \ "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments/$ENVIRONMENT_NAME/apis/httpbin/revisions/1/deployments"
Chiama il proxy API:
Invia una richiesta al proxy API da qualsiasi computer con accesso alla rete eseguendo il seguente comando:
curl -i -H "Host: ENV_GROUP_HOSTNAME" \ "https://ENV_GROUP_HOSTNAME/httpbin/headers"
Se necessario, puoi utilizzare questa API per ottenere il valore ENV_GROUP_HOSTNAME
Nessuna residenza dei dati
curl -i -H "Authorization: Bearer $AUTH" \ "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups"
Residenza dei dati
curl -i -H "Authorization: Bearer $AUTH" \ "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups"
Se ricevi un messaggio di errore simile al seguente:
CONNECT_CR_SRVR_HELLO:sslv3 alert handshake failure
, verifica che sia stato eseguito il provisioning del certificato SSL creato in precedenza. Utilizza questo comando per controllare lo stato del provisioning. Quando il provisioning del certificato è stato eseguito, lo stato èACTIVE
.gcloud compute ssl-certificates describe CERTIFICATE \ --global \ --format="get(name,managed.status, managed.Status)"
In caso di esito positivo, il proxy API di esempio restituisce una risposta simile alla seguente:
{ "headers": { "Accept": "*/*", "Grpc-Trace-Bin": "AAD/8WC/I4AUSrMEch0E9yj+AYck1x9afwckAgA", "Host": "httpbin.org", "Traceparent": "00-fff160bf2380144ab304721d04f728fe-8724d71f5a7f0724-00", "User-Agent": "curl/7.77.0", "X-Amzn-Trace-Id": "Root=1-61d785ef-7613aa8a7fde7a910441fab9", "X-B3-Sampled": "0", "X-B3-Spanid": "8724d71f5a7f0724", "X-B3-Traceid": "fff160bf2380144ab304721d04f728fe", "X-Cloud-Trace-Context": "fff160bf2380144ab304721d04f728fe/9738144823944087332;o=0", "X-Envoy-Attempt-Count": "1" } }
Per ulteriori informazioni sul deployment dei proxy, incluse informazioni aggiuntive sulla risoluzione dei problemi, consulta Eseguire il deployment di un proxy API.