Questa pagina si applica ad Apigee, ma non ad Apigee hybrid.
Visualizza la documentazione di
Apigee Edge.
Man mano che le tue esigenze di gestione delle API crescono e cambiano, potresti dover aggiungere nuovi servizi al cluster o aggiornare le route e le opzioni di ingresso esistenti. Questa pagina descrive come aggiornare il cluster per completare le seguenti attività:
- Aggiungi un nuovo gateway e una nuova HTTPRoute.
- Aggiorna un prodotto API.
- Crea un nuovo prodotto API.
- Crea un nuovo insieme di operazioni API.
- Testa la nuova configurazione del gateway.
Prima di iniziare
Prima di iniziare questa attività, assicurati di completare i passaggi descritti in Applica un criterio con l'operatore Apigee APIM per Kubernetes. Questa pagina presuppone che tu abbia configurato un cluster Google Kubernetes Engine (GKE), installato l'operatore Apigee APIM per Kubernetes, creato un gateway Google Kubernetes Engine (GKE) e applicato almeno un criterio di gestione API al gateway.
Ruoli obbligatori
Se hai assegnato i ruoli richiesti al account di servizio come descritto in Installare l'operatore Apigee APIM per Kubernetes, non sono necessari ruoli o autorizzazioni IAM aggiuntivi per completare queste attività.
Puoi scegliere di autorizzare le azioni sulle risorse nel cluster Google Kubernetes Engine utilizzando il meccanismo di controllo dell'accesso basato sui ruoli (RBAC) integrato in Kubernetes. Per maggiori informazioni, vedi Autorizzare le azioni nei cluster utilizzando il controllo degli accessi basato sui ruoli.
Aggiungere un nuovo gateway e una nuova HTTPRoute
In questa sezione aggiungerai un nuovo gateway e una nuova HTTPRoute al tuo cluster. Nelle guide alle attività precedenti, le configurazioni di esempio utilizzavano un gateway GKE esterno. Se vengono implementati più gateway nella stessa regione, devono essere dello stesso tipo (entrambi esterni o entrambi interni). Per questo motivo, la configurazione di esempio in questa guida utilizzerà anche un gateway esterno.
L'operatore APIM può essere utilizzato con gateway GKE interni o esterni, ma non puoi eseguire il deployment di entrambi i tipi di gateway nella stessa regione.
Per aggiungere un nuovo gateway e una nuova HTTPRoute al tuo cluster, completa i seguenti passaggi:
- Configura un nuovo gateway GKE esterno. Per ulteriori informazioni e passaggi, consulta Eseguire il deployment di un gateway esterno.
- Crea una risorsa globale
SslCertificate
gestita da Google:gcloud compute ssl-certificates create CERT_NAME \ --domains=HOST_NAME \ --global
Dove:
CERT_NAME
è il nome del certificato che vuoi creare.HOST_NAME_2
è il nome host del nuovo gateway.
- Crea un nuovo file denominato
gateway2.yaml
nello spazio dei nomiapim
. - Copia i seguenti contenuti nel nuovo file:
# gateway2.yaml apiVersion: gateway.networking.k8s.io/v1beta1 kind: Gateway metadata: name: global-ext-lb2 spec: gatewayClassName: gke-l7-global-external-managed listeners: - name: https protocol: HTTPS allowedRoutes: kinds: - kind: HTTPRoute namespaces: from: All port: 443 tls: options: networking.gke.io/pre-shared-certs: CERT_NAME
- Aggiungi una nuova HTTPRoute per
/post
allo stesso file, come evidenziato di seguito:# http-route2.yaml apiVersion: gateway.networking.k8s.io/v1beta1 kind: HTTPRoute metadata: name: http-bin-route-post namespace: http spec: parentRefs: - kind: Gateway name: global-ext-lb2 namespace: default hostnames: - HOST_NAME_2 rules: - matches: - path: type: PathPrefix value: "/post" backendRefs: - name: httpbin kind: Service port: 80 namespace: http
- Applica il nuovo gateway e la nuova HTTPRoute:
kubectl apply -f gateway2.yaml
- Controlla lo stato di HTTPRoute utilizzando il seguente comando:
kubectl -n http get HttpRoute
L'output dovrebbe essere simile al seguente:
NAME HOSTNAMES AGE http-bin-route ["my-hostname-2"] 12d
- Controlla lo stato del gateway utilizzando il seguente comando:
kubectl get gateway global-ext-lb2
L'output dovrebbe essere simile al seguente:
NAME CLASS ADDRESS PROGRAMMED AGE global-ext-lb2 gke-l7-global-external-managed 34.54.193.92 True 11d
Verifica che la colonna
Address
contenga un indirizzo IP valido e che lo stato diProgrammed
siaTrue
. - Descrivi il gateway per assicurarti che la rotta sia allegata:
kubectl describe gateway global-ext-lb2
L'output dovrebbe essere simile al seguente:
... Listeners: Attached Routes: 1 Conditions: Last Transition Time: 2024-10-03T03:10:17Z ...
Verifica che il valore di
Attached Routes
sia1
.- Invia una richiesta al gateway per verificare che la route funzioni:
curl -k -X POST https://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME_2"
Dove:
GATEWAY_IP_ADDRESS
è l'indirizzo IP del gateway, come mostrato nella colonnaAddress
della risposta restituita nel passaggio 7.HOST_NAME_2
è il nome host definito inHTTPRoute
del gateway.
- L'output dovrebbe essere simile al seguente:
{ "args": {}, "headers": { "Accept": "*/*", "Host": "apigee-apim-operator-test.apigee.net", "User-Agent": "curl/8.7.1", "X-Cloud-Trace-Context": "2bb8a80e29e80662ff9cb89971c447d9/13083106619927322701" }, "origin": "67.164.1.10,34.54.193.72", "url": "https://apigee-apim-operator-test.apigee.net/post" }
- Crea un nuovo criterio di estensione APIM che faccia riferimento a HTTPRoute del nuovo gateway creato in un passaggio precedente:
- Crea un nuovo file denominato
apim-policy2.yaml
nello spazio dei nomiapim
. - Copia i seguenti contenuti nel nuovo file:
# apim-policy2.yaml apiVersion: apim.googleapis.com/v1 kind: APIMExtensionPolicy metadata: name: global-ext-lb2-apim-policy-2 namespace: apim spec: location: global failOpen: false timeout: 1000ms defaultSecurityEnabled: true targetRef: # identifies the Gateway where the extension should be installed name: global-ext-lb2 kind: Gateway namespace: default
- Applica il nuovo criterio di estensione APIM:
kubectl apply -f apim-policy2.yaml
Una volta applicato il file, l'operatore APIM crea risorse di networking in background.
- Controlla lo stato delle norme relative alle estensioni APIM:
kubectl -n apim get APIMExtensionPolicy
L'output dovrebbe essere simile al seguente:
NAME STATE ERRORMESSAGE global-ext-lb2-apim-policy-2 RUNNING
Verifica che il valore di
STATE
siaRUNNING
. - Attendi cinque minuti per assicurarti che le modifiche vengano propagate a tutte le istanze del bilanciatore del carico, quindi
utilizza il seguente comando per verificare che una richiesta al nuovo gateway non vada a buon fine:
curl -k -X POST https://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME_2"
Dove:
GATEWAY_IP_ADDRESS
è l'indirizzo IP del gateway ottenuto in un passaggio precedente.HOST_NAME_2
è il nome host definito inHTTPRoute
del gateway.
La richiesta dovrebbe non andare a buon fine con una risposta simile alla seguente:
{ "fault": { "faultstring": "Raising fault. Fault name : RF-insufficient-request-raise-fault", "detail": { "errorcode": "steps.raisefault.RaiseFault" } } }
Ciò significa che l'estensione di servizio per Apigee è attiva e la verifica della chiave API e del token di accesso è applicata. Per i passaggi necessari per creare un'app per sviluppatori, ottenere una chiave API e testare il nuovo gateway con la chiave, consulta Test the Apigee service extension.
- Crea un nuovo file denominato
Aggiornamento di un prodotto API
Modifica un prodotto API esistente in modo che faccia riferimento alla nuova policy di estensione APIM:
- Crea un nuovo file denominato
api-product-2.yaml
nello spazio dei nomiapim
. - Copia i seguenti contenuti nel nuovo file:
# api-product-2.yaml apiVersion: apim.googleapis.com/v1 kind: APIProduct metadata: name: api-product-2 namespace: apim spec: name: api-product-2 approvalType: auto description: Http bin GET calls displayName: api-product-2 EnforcementRefs: - name: global-ext-lb1-apim-policy kind: APIMExtensionPolicy group: apim.googleapis.com namespace: apim - name: global-ext-lb2-apim-policy kind: APIMExtensionPolicy group: apim.googleapis.com namespace: apim attributes: - name: access value: private
- Applica il nuovo file di prodotto API:
kubectl apply -f api-product-2.yaml
Saranno necessari circa tre minuti prima che le modifiche vengano applicate all'intero cluster.
In questo esempio, la sezione EnforcementRefs
del prodotto API api-product-2
viene aggiornata
in modo da fare riferimento sia a global-ext-lb1-apim-policy
che a global-ext-lb2-apim-policy
, come mostrato nelle parti evidenziate di yaml
.
Crea un nuovo prodotto API
Crea un nuovo prodotto API:
- Crea un nuovo file denominato
api-product-2.yaml
nello spazio dei nomiapim
. - Copia i seguenti contenuti nel nuovo file:
# api-product-2.yaml apiVersion: apim.googleapis.com/v1 kind: APIProduct metadata: name: api-product-2 namespace: apim spec: name: api-product-2 approvalType: auto description: Http bin GET calls displayName: api-product-2 enforcementRefs: - name: global-ext-lb2-apim-policy kind: APIMExtensionPolicy group: apim.googleapis.com namespace: apim attributes: - name: access value: private
- Applica il nuovo file di prodotto API:
kubectl apply -f api-product-2.yaml
Saranno necessari circa tre minuti prima che le modifiche vengano applicate all'intero cluster.
In questo esempio, la sezione EnforcementRefs
del nuovo prodotto API api-product-2
viene creata
per fare riferimento a global-ext-lb2-apim-policy
, come mostrato nelle parti evidenziate di yaml
.
Crea un nuovo insieme di operazioni API
Crea un nuovo insieme di operazioni API:
- Crea un nuovo file denominato
item-set-post.yaml
nello spazio dei nomiapim
. - Copia i seguenti contenuti nel nuovo file:
# item-set-post.yaml apiVersion: apim.googleapis.com/v1 kind: APIOperationSet metadata: name: item-set-post namespace: apim spec: apiProductRefs: - name: api-product-2 kind: APIProduct group: apim.googleapis.com namespace: apim quota: limit: 1 interval: 1 timeUnit: minute restOperations: - name: PostItems path: "/post" methods: - POST
- Applica il nuovo file di set di operazioni API:
kubectl apply -f item-set-post.yaml
Saranno necessari circa tre minuti prima che le modifiche vengano applicate all'intero cluster.
In questo esempio, il valore restOperations
del nuovo insieme di operazioni API item-set-post
viene creato
per fare riferimento al percorso /post
, come mostrato nelle parti evidenziate del file.
Testare la nuova configurazione del gateway
Per testare la nuova configurazione del gateway, invia la seguente richiesta al nuovo percorso /post
:
curl -k -X POST https://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME_2"
Dove:
- GATEWAY_IP_ADDRESS è l'indirizzo IP del gateway ottenuto in un passaggio precedente.
- HOST_NAME è il nome host definito in
HTTPRoute
del gateway.
La richiesta dovrebbe riuscire e restituire una risposta simile alla seguente:
{ "args": {}, "headers": { "Accept": "*/*", "Host": "apigee-apim-operator-test.apigee.net", "User-Agent": "curl/8.7.1", "X-Api-Key": "f0N6sXXXclGXXXe0oP5XXXdA20PjgrP2x8xXXh7z4XXXKiYt", "X-Cloud-Trace-Context": "bb3a768787099bda628781188bfb318b/15554891713516675739" }, "origin": "34.54.193.72", "url": "https://34.54.193.72/post" }
Risoluzione dei problemi
Se riscontri problemi durante l'aggiornamento e l'estensione dei criteri di gestione delle API utilizzati con APIM Operator, consulta la sezione Risolvere i problemi di APIM Operator per trovare soluzioni agli errori comuni.
Passaggi successivi
- Scopri come disinstallare l'operatore Apigee APIM per Kubernetes.
- Scopri di più sulle opzioni per il deployment dei gateway.