Guida dell'utente di anteprima:
Anteprima delle nuove procedure di installazione e amministrazione per Apigee hybrid 1.8.
In questo documento:
- Anteprima
- Panoramica
- Prerequisiti
- Installazione di base di Apigee Hybrid
- Installazione di Apigee Hybrid personalizzata
- Scaricare i file di configurazione
- Crea spazio dei nomi
- Utilizzare immagini Docker da repository privati (facoltativo)
- (Facoltativo) Configurazione di imagePullSecrets
- (Facoltativo) Configurazione del proxy in avanti
- Specificare i certificati TLS di ingresso
- Aggiornare il deployment di Ingress
- Configurazione di account di servizio Google Cloud personalizzati
- Utilizzare le identità per i carichi di lavoro
- Modificare i file yaml delle risorse
- Creare risorse di inizializzazione e controller
- Concedere le autorizzazioni all'account di servizio Synchronizer per interagire con il Control Plane
- Creare componenti del piano dati Apigee
- Attendi l'avvio delle risorse
- Personalizzare l'installazione di cert-manager in uno spazio dei nomi personalizzato
- Kustomize e Componenti
- Concepts
- Informazioni sullo script
- Struttura della cartella di configurazione di Apigee Hybrid
- Archiviazione delle chiavi dell'account di servizio in cassette di sicurezza esterne
- Upgrade di Apigee Hybrid
- Rollback di Apigee Hybrid
- Pulizia
- Eliminando un ambiente
- Installazione di più istanze
Anteprima
Questo documento è rivolto all'operatore Apigee (utenti che installano/gestiscono/amministrano le installazioni di Apigee hybrid). L'esperienza nell'installazione di Apigee hybrid su una delle piattaforme Kubernetes supportate è un prerequisito per seguire le istruzioni riportate in questo documento. Ti consigliamo di creare un'organizzazione Apigee di valutazione per provare i passaggi riportati di seguito.
Feedback
Invia un feedback su questa procedura all'indirizzo Apigee-hybrid-install-preview@google.com.
Panoramica
La nuova esperienza di installazione di Apigee Hybrid installa i componenti di Apigee utilizzando kubectl e integra l'installazione e la gestione di Apigee Hybrid con gli strumenti di orchestrazione della configurazione di Kubernetes come Kustomize. Le verifiche e la visibilità migliorate dei componenti in fase di installazione offrono una migliore possibilità di debug e migliorano la procedura di installazione complessiva.
Uno script di installazione, apigee-hybrid-setup.sh
, fornisce uno strumento facile per l'installazione di base. Puoi utilizzarlo per creare l'installazione ibrida e poi modificarla in base alle tue esigenze con kubectl
oppure puoi creare l'installazione ibrida da zero utilizzando kubectl
.
Tutte le proprietà di configurazione di Apigee hybrid sono memorizzate in file yaml, uno per ogni componente principale. In questo modo, puoi avere un controllo molto più granulare dell'installazione ibrida nel tuo ambiente Kubernetes. Puoi trovare i file di configurazione e gli script di installazione nel repository su GitHub.
Modifiche alla nuova procedura di installazione
Apigee sta modificando la procedura di installazione di Apigee hybrid per i seguenti motivi:
- Il nuovo metodo di installazione di Apigee Hybrid può essere integrato con gli strumenti CI/CD Kubernetes esistenti come Argo, Flux o Anthos Config Management che non utilizzano un file di configurazione
overrides.yaml
. - Apigee hybrid ha fornito
apigeectl
, uno strumento di creazione di modelli personalizzati che genera manifest Kubernetes (tra le altre cose) per installare e gestire Apigee hybrid nei cluster Kubernetes. La nuova procedura di installazione e gestione offre un'esperienza simile a quella di altri fornitori di software. - La nuova procedura consente di eseguire rapidamente l'installazione di base creando automaticamente account di servizio con le autorizzazioni richieste, certificati TLS, valori predefiniti precompilati e altri elementi di base necessari.
Prerequisiti
Prima di utilizzare questa installazione di anteprima, devi soddisfare i seguenti prerequisiti:
Versione di anteprima
Questa anteprima è progettata per funzionare con Apigee hybrid versione 1.8.x. Le versioni successive di Apigee Hybrid non sono supportate.
Configurazione di Apigee hybrid
Prima di procedere con l'installazione effettiva di Apigee Hybrid, devi aver completato le istruzioni riportate nelle seguenti sezioni della documentazione:
- Configurazione di progetto e organizzazione
- Panoramica dei prerequisiti per l'installazione di Apigee hybrid.
- Passaggio 1: attiva le API
- Passaggio 2: crea un'organizzazione
- Passaggio 3: crea un ambiente e un gruppo di ambienti
- Configurazione del runtime di hybrid
Strumenti
Inoltre, devi aver scaricato e configurato sulla tua workstation i seguenti strumenti:
curl
docker
è necessario per eseguire lo scriptapigee-hybrid-setup.sh
. Segui le istruzioni riportate in Ottenere Docker per installare Docker.envsubst
dovrebbe essere disponibile nella maggior parte dei sistemi basati su Linux/UNIX. Per macOS e altri sistemi, segui le istruzioni in questo repo.jq
deve essere installato. Scarica jq.kpt
Scarica kpt.kubectl
versione 1.23 o successive. Consulta Install Tools: kubectl nella documentazione di Kubernetes.
Variabili comuni utilizzate in questa guida
Questa guida utilizza le seguenti variabili di ambiente in diversi passaggi. Puoi definirli a riga di comando o con uno script oppure puoi sostituire il testo nei comandi quando li inserisci.
APIGEE_NAMESPACE
: lo spazio dei nomi Apigee. Per impostazione predefinita, questo valore èapigee
. Tuttavia, puoi utilizzare uno spazio dei nomi diverso.CLUSTER_NAME
: il nome del cluster in cui stai installando Apigee hybrid. Si tratta del cluster creato nel passaggio 1: crea un clusterCLUSTER_LOCATION
: la regione del cluster. Le procedure descritte in questa guida presuppongono che tu stia utilizzando un cluster a livello di regione. Se utilizzi un cluster di zona, consulta le istruzioni riportate nel passaggio 1: crea un cluster.ENV_GROUP
: il nome del gruppo di ambienti per l'installazione di Apigee hybrid. Si tratta del gruppo di ambienti creato nel passaggio 3: crea un gruppo di ambienti. Puoi creare più gruppi di ambienti.ENV_NAME
: il nome del gruppo di ambienti per l'installazione di Apigee hybrid. Si tratta del gruppo di ambienti creato nel passaggio 3: crea un gruppo di ambienti. Puoi creare più gruppi di ambienti.INSTALL_DIR
: la directory in cui installi Apigee hybrid. Per impostazione predefinita, si tratta della sottodirectoryapigee-hybrid-install/
della directory in cui scarichi il programma di installazione, ad esempio/myhybrid/apigee-hybrid-install/
. Questa è la directory principale della struttura dei file descritta in Struttura della cartella di configurazione di Apigee hybrid.INSTANCE_DIR
: la directory di un'istanza Apigee hybrid specifica. Per impostazione predefinita, la prima istanza è denominatainstance-1
. La directory dell'istanza è una sottodirectory di${INSTALL_DIR}/overlays/instances/
. Puoi specificare qualsiasi nome per le istanze ibride. Consulta la sezione Installazione con più istanze.ORG_NAME
: il nome della tua organizzazione Apigee hybrid. Deve essere uguale all'ID progetto Google Cloud. Consulta Passaggio 2: crea un'organizzazione.
Installazione di base di Apigee hybrid
Per installare rapidamente Apigee Hybrid senza personalizzazioni complesse, puoi utilizzare la seguente procedura in due passaggi.
- Un singolo ambiente
- Un singolo gruppo di ambienti
- Viene creato e utilizzato un unico account di servizio Google Cloud per tutti i singoli componenti
- Valori predefiniti per tutte le chiavi e le password di crittografia.
Scaricare i file di configurazione
Scarica e prepara i file di configurazione clonando il repository GitHub all'indirizzo https://github.com/apigee/apigee-hybrid-install/releases/tag/preview-1
:
Clona il repository:
git clone https://github.com/apigee/apigee-hybrid-install.git
Vai alla directory del repository clonato:
cd apigee-hybrid-install
Crea un ramo dal tag preview-1:
git branch preview-1 preview-1 git checkout preview-1
Rendi eseguibile lo script di configurazione:
chmod +x ./tools/apigee-hybrid-setup.sh
Il repository clonato avrà una struttura simile a quella descritta in Struttura della cartella di configurazione di Apigee Hybrid:
Esegui la configurazione
Esegui lo script shell apigee-hybrid-setup.sh
all'interno della cartella tools/
.
./tools/apigee-hybrid-setup.sh --cluster-name $CLUSTER_NAME --cluster-region $CLUSTER_LOCATION --org $ORG_NAME --setup-all
Se si verificano errori, prova a eseguire lo script una seconda volta.
Ecco alcune opzioni aggiuntive che puoi utilizzare:
--env $ENV_NAME
specifica il nome dell'ambiente Apigee.--envgroup $ENV_GROUP
specifica il gruppo di ambienti.--ingress-domain $HOSTNAME
specifica il nome host che hai fornito per il gruppo di ambienti.--gcp-project-id $PROJECT_ID
specifica l'ID del tuo progetto Google Cloud.
Per altre opzioni, consulta Informazioni sullo script.
Eventuali errori durante l'esecuzione verranno stampati nell'output standard.
Al termine dello script, avrai completato l'installazione ibrida di base. Puoi testare l'installazione creando un proxy di esempio come descritto in Creare e implementare un nuovo proxy API.
Installazione di Apigee Hybrid personalizzata
Gli utenti più esperti che vogliono un controllo granulare sull'installazione possono seguire questa sequenza di passaggi (per molti dei passaggi indicati di seguito, puoi scegliere di eseguirlo manualmente o di utilizzare lo script shell per automatizzare il singolo passaggio):
Scaricare i file di configurazione
Scarica e prepara i file di configurazione:
Clona il repository GitHub all'indirizzo
https://github.com/apigee/apigee-hybrid-install/
Il repository clonato avrà una struttura simile a quella descritta in Struttura della cartella di configurazione di Apigee Hybrid:
cd
nella directoryapigee-hybrid-install/
Rendi eseguibile lo script di configurazione:
chmod +x ./tools/apigee-hybrid-setup.sh
Crea spazio dei nomi
Crea uno spazio dei nomi Kubernetes nel cluster che conterrà tutti i componenti del cluster Apigee.
kubectl create namespace apigee
Se scegli un altro nome per lo spazio dei nomi, puoi scegliere di seguire una delle tre opzioni riportate di seguito:
- (Consigliato) Utilizza
--namespace={YOUR_NAMESPACE_NAME}
durante il precompletamento dei valori in Modifica i file yaml delle risorse. Esegui i due comandi che seguono:
Utilizza
kpt
per specificare lo spazio dei nomi Apigee:kpt fn eval "${INSTALL_DIR}/overlays/" \ --image gcr.io/kpt-fn/apply-setters:v0.2.0 -- \ APIGEE_NAMESPACE="${APIGEE_NAMESPACE}" # This is for replacing the namespace in istio discoveryAddress which cannot be # achieved with kpt
Utilizza
sed
per sostituire lo spazio dei nomi in discoveryAddress di Istio:sed -i -E -e "s/(discoveryAddress: apigee-ingressgateway-manager\.).*(\.svc:15012)/\1${APIGEE_NAMESPACE}\2/" "${INSTALL_DIR}/overlays/controllers/istiod/apigee-istio-mesh-config.yaml"
In alternativa, puoi modificare manualmente le risorse da creare singolarmente nello spazio dei nomi che preferisci.
Utilizzo di immagini Docker da repository privati (facoltativo)
Puoi scegliere di non utilizzare le immagini ospitate pubblicamente e utilizzare quelle dei tuoi repository privati:
- Il primo passaggio consiste nell'eseguire il push di tutte le immagini nel tuo repository privato, seguendo i passaggi descritti in apigee-pull-push | Apigee X. Per impostazione predefinita, le immagini sono contrassegnate con la versione di Apigee Hybrid a cui corrispondono e ti consigliamo di non modificarle. Ti consigliamo inoltre di non modificare i nomi delle immagini in modo che il percorso dell'immagine finale possa essere costruito come spiegato in Image Hub.
Imposta il valore del campo
imageHub
presente all'interno del file apigee-hybrid-config.yaml sul percorso dell'host del repository privato. (per maggiori dettagli, visita la pagina Image Hub).imageHub: "your.private.repo/apigee/hybrid"
In questo modo, tutti i componenti Apigee hybrid utilizzeranno le immagini del tuo repository privato.
Inoltre, ti consigliamo di utilizzare un'immagine privata per il controller e per il gateway di ingresso Apigee, per il quale dovrai modificare i file apigee-controller-deployment.yaml e apigee-ingressgateway-manager-deployment.yaml e sostituire tutti i campi image
con l'immagine del repository privato.
Configurazione di imagePullSecrets (facoltativa)
- Crea un secret di Kubernetes contenente le credenziali per l'autenticazione con i repository privati. Consulta Estrarre un'immagine da un registry privato per capire come deve essere creato il secret.
- Una volta creato il segreto, non resta che fare riferimento al segreto, modificando il file apigee-hybrid-config.yaml e impostando il valore del campo
imagePullSecret
sul nome del segreto creato in precedenza, nonché attivando il componenteimagePullSecret
nel filekustomization.yaml
corrispondente.
Se specifichi imagePullSecrets
in entrambi i casi, avrà la precedenza quello presente all'interno del file apigee-controller-manager.yaml.
(Facoltativo) Configurazione del proxy inoltrante
I proxy inoltra possono essere configurati aggiungendo il campo forwardProxy
al file apigee-hybrid-config.yaml
. Ad esempio:
forwardProxy: |
scheme: HTTP
host: 10.12.0.47
port: 3128
Specifica dei certificati TLS di ingresso
Utilizzare lo script
./tools/apigee-hybrid-setup.sh --create-ingress-tls-certs
Per ulteriori dettagli su questo flag, consulta Informazioni sullo script.
Manuale
Dovresti fornire i certificati TLS che verranno utilizzati per il gateway di ingresso Istio. Puoi:
- utilizza i certificati firmati da un'autorità nota seguendo la procedura descritta in Ottenere certificati TLS: un esempio | Apigee X
- o genera certificati autofirmati.
Qui utilizzeremo i certificati autofirmati come esempio. I certificati autofirmati possono essere generati utilizzando (supponendo che DOMAIN
sia stato impostato correttamente e debba corrispondere al nome host impostato nel gruppo env):
openssl req -nodes -new -x509 -keyout ./tls.key -out ./tls.crt -subj '/CN='$DOMAIN'' -days 3650
Verranno creati due file denominati tls.key
e tls.crt
.
Devi quindi creare un segreto nel seguente formato. Puoi utilizzare kubectl create
o kubectl apply
come spiegato in Utilizzo di una coppia di chiavi/certificati personalizzati per l'autorità di certificazione (facoltativo):
apiVersion: v1
kind: Secret
metadata:
name: "{ORG_NAME}-{ENV_GROUP_NAME}"
namespace: {$APIGEE_NAMESPACE}
type: Opaque
data:
cert: |
{BASE64_ENCODED_TLS_CRT}
key: |
{BASE64_ENCODED_TLS_KEY}
---
Esempio di creazione del secret utilizzando kubectl create
:
kubectl create secret tls {ORG_NAME}-{ENV_GROUP_NAME} \
--cert="tls.crt" \
--key="tls.key" \
-n {$APIGEE_NAMESPACE}
Aggiorna il deployment di Ingress
Per creare/modificare i deployment di ingress, devi modificare il campo spec.components.ingressGateways
nella risorsa personalizzata ApigeeOrganization in bases/initialization/crds/customresourcedefinition-apigeeorganizations.apigee.cloud.google.com.yaml
.
Per impostazione predefinita, viene creato un deployment di ingress con parametri predefiniti(i valori predefiniti verranno mostrati nella documentazione di riferimento del CR ):
ingressGateways:
- name: "prod-1"
Esempi:
A. Sostituzione dei campi del servizio in entrata
ingressGateways:
- name: "prod-1"
serviceSpec:
annotations:
{KEY}: ${VALUE}
loadBalancerIP: ${IP}
B. Modifica numero minimo/massimo di repliche
ingressGateways:
- name: "prod-1"
autoScaler:
minReplicas: 4
maxReplicas: 10
C. Aggiunta di un nuovo deployment di Ingress
ingressGateways:
- name: "prod-1"
- name: "prod-2"
Configurazione di account di servizio Google Cloud personalizzati
Utilizzare lo script
./tools/apigee-hybrid-setup.sh --create-gcp-sa-and-secrets --namespace APIGEE_NAMESPACE
Dove APIGEE_NAMESPACE è lo spazio dei nomi personalizzato. Lo spazio dei nomi predefinito è apigee
.
Per ulteriori dettagli sui flag, consulta la sezione Informazioni sullo script.
Manuale
Le chiavi degli account di servizio Google Cloud devono essere archiviate come secret nel cluster. Il file yaml del segreto deve avere la seguente struttura:
apiVersion: v1
kind: Secret
metadata:
name: "{NAME}"
namespace: {APIGEE_NAMESPACE}
type: Opaque
data:
client_secret.json: |
{BASE64_ENCODED_SA_KEY}
Per ulteriori dettagli su tutti gli account di servizio richiesti e sui nomi dei secret, consulta la sezione Account di servizio Google Cloud.
Puoi scegliere un nome diverso per i secret, ma dovrai apportare una modifica corrispondente nel componente in cui è stato utilizzato il nome del secret. Ad esempio, se decidi di cambiare il nome del segreto dell'account di servizio di runtime da apigee-runtime-svc-account-${ORG_NAME}-${ENV_NAME}
a my-runtime-svc
, dovrai apportare una modifica corrispondente in apigee-environment.yaml
per quell'ambiente.
Utilizzare le identità per i carichi di lavoro
È obbligatorio scegliere una delle opzioni Configurare account di servizio Google Cloud personalizzati o Utilizzare le identità del carico di lavoro.
Prerequisiti
Prima di utilizzare le identità del workload, assicurati che il supporto sia abilitato nel tuo cluster GKE. Per maggiori dettagli, consulta Aggiornamento dei pool di nodi | Apigee X.
Attivazione di workload-identity
Consulta la sezione Identità di carico di lavoro in Kustomize e componenti per informazioni dettagliate su come abilitare le identità di carico di lavoro prima dell'installazione.
Modifica i file yaml delle risorse
Alcuni punti nei file yaml dei componenti richiedono la presenza dei nomi corretti di organizzazione, ambiente e gruppo di ambienti. Puoi impostare questi valori manualmente o utilizzare lo script shell per compilarli automaticamente.
Utilizzare lo script
./tools/apigee-hybrid-setup.sh --fill-values
Crea risorse di inizializzazione e controller
#Additional steps for openshift
kubectl apply -k ${INSTALL_DIR}/overlays/initialization/openshift
//apigee datastore
kubectl apply -f ${INSTANCE_DIR}/overlays/instances/${INSTANCE_DIR}/datastore/components/openshift-scc/scc.yaml
//telemetry
kubectl apply -f ${INSTANCE_DIR}/overlays/instances/${INSTANCE_DIR}/telemetry/components/openshift-scc/scc.yaml
#Create Apigee initialization kubernetes resources
kubectl apply -f ${INSTALL_DIR}/overlays/initialization/namespace.yaml
kubectl apply -k ${INSTALL_DIR}/overlays/initialization/certificates
kubectl apply --server-side --force-conflicts -k ${INSTALL_DIR}/overlays/initialization/crds
kubectl apply -k ${INSTALL_DIR}/overlays/initialization/webhooks
kubectl apply -k ${INSTALL_DIR}/overlays/initialization/rbac
kubectl apply -k ${INSTALL_DIR}/overlays/initialization/ingress
# Create controller config and controller
kubectl apply -k ${INSTALL_DIR}/overlays/controllers
# Wait for the controllers to be available
kubectl wait deployment/apigee-controller-manager deployment/apigee-ingressgateway-manager -n "${APIGEE_NAMESPACE}" --for=condition=available --timeout=2m
# Create the datastore and redis secrets first and then the rest of the secrets.
kubectl apply -f ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}/datastore/secrets.yaml
kubectl apply -f ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}/redis/secrets.yaml
kubectl apply -f ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}/environments/${ENV_NAME}/secrets.yaml
kubectl apply -f ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}/organization/secrets.yaml
Concedi le autorizzazioni all'account di servizio Synchronizer per interagire con il Control Plane
Segui i passaggi descritti in Passaggio 8: attivazione dell'accesso al sincronizzatore,
sostituendo il nome dell'account di servizio, apigee-non-prod
o apigee-synchronizer
, con
apigee-all-sa
, il nome dell'account di servizio creato dalla nuova procedura di installazione.
★ Importante: assicurati di modificare il nome dell'account di servizio nelle istruzioni riportate in Attivare l'accesso del sincronizzatore. In caso contrario, l'attivazione dell'accesso per il sincronizzatore non andrà a buon fine.
Crea componenti del piano dati Apigee
Se hai modificato i nomi di una delle risorse nei passaggi precedenti, dovrai apportare una modifica corrispondente in altri file YAML in cui è stato fatto riferimento alla risorsa. Al termine, utilizza i comandi nel seguente esempio:
# Create the rest of the resources.
kubectl apply -k ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}
per installare tutti i componenti.
Attendi l'avvio delle risorse
kubectl wait "apigeedatastore/default" \
"apigeeredis/default" \
"apigeeenvironment/${ORG_NAME}-${ENV_NAME}" \
"apigeeorganization/${ORG_NAME}" \
"apigeetelemetry/apigee-telemetry" \
-n "${APIGEE_NAMESPACE}" --for="jsonpath=.status.state=running" --timeout=15m
Personalizzare l'installazione di cert-manager in uno spazio dei nomi personalizzato
Personalizza lo spazio dei nomi in cui è in esecuzione cert-manager con la procedura seguente.
Se cert-manager è installato nel cluster in un altro spazio dei nomi diverso da cert-manager, dovrai aggiornare lo spazio dei nomi utilizzato per creare il certificato principale Apigee.
- Modifica il file customization.yaml per la creazione del certificato:
$INSTALL_DIR/overlays/initialization/certificates/kustomize.yaml
Aggiungi quanto segue alla fine del file.
- patch: |- - op: replace path: /metadata/namespace value: "gk-cert-manager" target: group: cert-manager.io version: v1 kind: Certificate name: apigee-root-certificate
Salva il file
Kustomize e componenti
Panoramica
La nuova installazione ibrida eredita l'ideologia di Kustomize di strutturare i file yaml sotto forma di basi e overlay
- Le basi sono file forniti da Apigee, che potrebbero cambiare tra ogni nuova release di Hybrid. Non è previsto che tu modifichi questi file. Questi file contengono alcuni valori predefiniti forniti da Apigee. Tutti i file nella cartella di primo livello
bases/
contengono queste basi Gli overlay contengono la configurazione dell'utente e consentono di modificare i valori predefiniti specificati nelle basi. Tutti i file nella cartella
overlays/
di primo livello contengono questi overlay
Come utilizzare Componenti
Le sottocartelle all'interno della directory di primo livello overlays/
sono state strutturate in modo da poter attivare (o disattivare) una determinata funzionalità aggiuntiva commentando (o rimuovendo il commento) determinate righe nei file kustomization.yaml
.
Ad esempio, la struttura della cartella overlays/instances/{INSTANCE_NAME}/telemetry
è la seguente:
telemetry
├── components
│ ├── http-proxy
│ ├── imagepullsecret
│ ├── logger
│ ├── metrics
│ ├── nodeselector
│ ├── openshift-scc
│ ├── workload-identity-logger
│ └── workload-identity-metrics
├── apigee-telemetry.yaml
└── kustomization.yaml
Ecco come potrebbero essere i file telemetry/kustomization.yaml
per impostazione predefinita:
resources:
- apigee-telemetry.yaml
components:
- ./components/metrics
# - ./components/workload-identity-metrics
# - ./components/logger
# - ./components/workload-identity-logger
# - ./components/http-proxy
# - ./components/nodeselector/
# - ./components/imagepullsecret
# - ./components/openshift-scc
Possiamo vedere che ./components/logger
è stato ignorato, il che significa semplicemente che non abbiamo attivato il logger Google Cloud per impostazione predefinita. Per attivarlo, puoi semplicemente rimuovere il commento dalla riga come segue:
components:
- ./components/logger
Analogamente, per disattivare le metriche, puoi commentare la riga ./components/metrics
:
...
components:
...
# - ./components/metrics
…
Le sezioni seguenti illustrano tutti questi componenti, quando possono essere utilizzati e come possono essere configurati.
OpenShift
Gli utenti che vogliono installare Apigee Hybrid in un cluster OpenShift
potrebbero dover attivare alcuni componenti/risorse prima di eseguire l'installazione. (questo passaggio è obbligatorio se non utilizzi lo script per eseguire l'installazione). I file che devono essere modificati sono:
overlays/initialization/openshift/kustomization.yaml
. Nella sezioneresources:
, rimuovi il commento da:# - ../../../bases/initialization/openshift/
overlays/instances/{INSTANCE_NAME}/datastore/kustomization.yaml
Rimuovi il commento:# - ./components/openshift-scc
e rimuovere il commento dal campo "
components:
" se è ancora commentato.overlays/instances/{INSTANCE_NAME}/telemetry/kustomization.yaml
Rimuovi il commento:# - ./components/openshift-scc
e rimuovere il commento dal campo "
components:
" se è ancora commentato.
A questo punto puoi procedere con i passaggi di installazione.
imagepullsecret
Questo componente può essere attivato se hai immagini archiviate nel tuo repository privato. Per estrarre le immagini da un repository privato, puoi creare un secret Kubernetes che contenga i tuoi dati di autenticazione e poi fare riferimento a questo secret all'interno. Per le istruzioni, consulta Configurare imagePullSecrets (facoltativo). Per ulteriori informazioni, consulta Eseguire il pull di un'immagine da un registry privato | Kubernetes nella documentazione di Kubernetes.
Disponibile in:
overlays/controllers/apigee-controller
overlays/controllers/istiod
overlays/instances/{INSTANCE_NAME}/datastore
overlays/instances/{INSTANCE_NAME}/environments/{ENV_NAME}
overlays/instances/{INSTANCE_NAME}/organization
overlays/instances/{INSTANCE_NAME}/redis
overlays/instances/{INSTANCE_NAME}/telemetry
Attivazione:
Rimuovi il commento dalla riga "./components/imagepullsecret/
" nei rispettivi file kustomization.yaml
, ove necessario.
Modifiche da apportare:
- components/imagepullsecret/patch.yaml
- OBBLIGATORIO Aggiungi i nomi delle chiavi segrete pertinenti all'elenco in
spec.template.spec.imagePullSecrets
- OBBLIGATORIO Aggiungi i nomi delle chiavi segrete pertinenti all'elenco in
Utilizzo:
- Se non hai ancora installato Apigee Hybrid, puoi continuare con i passaggi di installazione e queste modifiche verranno applicate durante la procedura
Se hai già installato Apigee Hybrid, dovrai applicare queste nuove modifiche utilizzando:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
nodeselector
Questo componente consente di pianificare i pod per una risorsa Apigee su nodi specifici. Per ulteriori informazioni, consulta Assegnazione di pod ai nodi | Kubernetes.
Disponibile in:
overlays/controllers/apigee-controller
overlays/controllers/istiod
overlays/instances/{INSTANCE_NAME}/datastore
overlays/instances/{INSTANCE_NAME}/environments/{ENV_NAME}
overlays/instances/{INSTANCE_NAME}/organization
overlays/instances/{INSTANCE_NAME}/redis
overlays/instances/{INSTANCE_NAME}/telemetry
Attivazione:
Rimuovi il commento dalla riga "./components/nodeselector
" nei rispettivi file kustomization.yaml
, ove necessario.
Modifiche da apportare:
- components/nodeselector/patch.yaml
- FACOLTATIVO Modifica il valore dell'etichetta del selettore di nodi da
apigee-runtime
oapigee-data
a quello desiderato.
- FACOLTATIVO Modifica il valore dell'etichetta del selettore di nodi da
Utilizzo:
- Se non hai ancora installato Apigee Hybrid, puoi continuare con i passaggi di installazione e queste modifiche verranno applicate durante la procedura
Se hai già installato Apigee Hybrid, dovrai applicare queste nuove modifiche utilizzando:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
workload-identity
Vari contenitori nell'ecosistema Apigee Hybrid richiedono autorizzazioni per effettuare determinate chiamate API al Control Plane / Management Plane di Apigee. L'identità del carico di lavoro è uno dei modi per concedere queste autorizzazioni ai pod (e ai container al loro interno). Di seguito sono riportate alcune risorse utili per saperne di più: - Introduzione a Workload Identity: autenticazione migliorata per le applicazioni GKE | Blog Google Cloud - Utilizzare Workload Identity | Documentazione di Kubernetes Engine | Google Cloud
Disponibile in:
overlays/instances/{INSTANCE_NAME}/datastore
overlays/instances/{INSTANCE_NAME}/environments/{ENV_NAME}
overlays/instances/{INSTANCE_NAME}/organization
overlays/instances/{INSTANCE_NAME}/redis
overlays/instances/{INSTANCE_NAME}/telemetry
Prerequisito:
Prima di poter utilizzare l'identità del carico di lavoro, devi concedere le autorizzazioni pertinenti nel tuo progetto Google Cloud utilizzando:
gcloud iam service-accounts add-iam-policy-binding \
--role roles/iam.workloadIdentityUser \
--member "serviceAccount:${ORG_NAME}.svc.id.goog[${APIGEE_NAMESPACE}/${KSA_NAME}]" \
${GSA_NAME}@${ORG_NAME}.iam.gserviceaccount.com
dove:
- ${ORG_NAME} - Il nome della tua organizzazione Apigee.
- ${APIGEE_NAMESPACE}: lo spazio dei nomi Kubernetes in cui sono stati installati i componenti Apigee. Di solito è apigee
, a meno che non venga modificato esplicitamente dall'utente durante l'installazione.
- ${KSA_NAME}: il nome dello spazio dei nomi Kubernetes. Dovrai eseguire questo comando per ogni account di servizio Kubernetes menzionato in Account di servizio Kubernetes
- ${GSA_NAME}: il nome dell'account di servizio Google Cloud. Se non hai apportato modifiche durante l'installazione, il valore sarà apigee-all-sa
. Se configuri più account di servizio Google Cloud per i singoli componenti, devi associare KSA_NAME al GSA_NAME corrispondente. Puoi confrontare le tabelle degli account di servizio Google Cloud con gli account di servizio Kubernetes per trovare gli equivalenti.
Attivazione:
Rimuovi il commento dalla riga ./components/workload-identity
nei rispettivi file kustomization.yaml
, ove necessario. Tieni presente che all'interno della telemetria sono disponibili componenti aggiuntivi per l'identità del carico di lavoro separati per i componenti metrics
e logger
che possono essere attivati singolarmente.
Utilizzo:
- Se non hai ancora installato la versione ibrida, puoi semplicemente attivare Workload Identity come indicato nella sezione precedente e continuare con l'installazione, che utilizzerà automaticamente Workload Identity.
Se hai già installato Apigee Hybrid, dovrai applicare queste nuove modifiche utilizzando:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
http-proxy
Puoi configurare un server proxy in ciascuno dei seguenti componenti in modo che il traffico per quel componente passi attraverso il proxy HTTP configurato per quel componente. Puoi configurare il proxy per ogni componente Apigee singolarmente.
Disponibile in:
overlays/instances/{INSTANCE_NAME}/datastore
overlays/instances/{INSTANCE_NAME}/environments/{ENV_NAME}
overlays/instances/{INSTANCE_NAME}/organization
overlays/instances/{INSTANCE_NAME}/telemetry
Attivazione:
Rimuovi il commento dalla riga "./components/http-proxy/
" nei rispettivi file kustomization.yaml
, ove necessario.
Modifiche da apportare:
- components/http-proxy/patch.yaml
I seguenti parametri possono essere configurati in
spec.httpForwardProxy
scheme
: OBBLIGATORIO Uno diHTTP
oHTTPS
host
: OBBLIGATORIO L'indirizzo host del proxyport
: OBBLIGATORIO il numero di portausername
: FACOLTATIVO Il nome utente associato al proxypassword
: FACOLTATIVO la password per accedere al proxy
Utilizzo:
- Se non hai ancora installato Apigee Hybrid, puoi continuare con i passaggi di installazione e queste modifiche verranno applicate durante la procedura
Se hai già installato Apigee Hybrid, dovrai applicare queste nuove modifiche utilizzando:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
logger e metriche
Puoi attivare o disattivare singolarmente il logger o le metriche in overlays/instances/{INSTANCE_NAME}/telemetry. Per impostazione predefinita, il logger è disattivato e le metriche sono attivate. Per attivarli o disattivarli, è sufficiente rimuovere o aggiungere i commenti alle relative righe in telemetry/kustomization.yaml
gcs-backup e gcs-restore
Questo componente Kustomize può essere utilizzato per eseguire il backup e il ripristino del database Cassandra in Google Cloud Storage.
Disponibile in:
overlays/instances/{INSTANCE_NAME}/datastore
Prerequisito:
Scarica le chiavi degli account di servizio Google Cloud per un account con il ruolo Amministratore oggetti Storage.
- Se hai utilizzato lo script per eseguire l'installazione e non hai utilizzato Workload Identity, puoi riutilizzare le chiavi scaricate disponibili nella cartella degli account di servizio creata dallo script.
Puoi anche utilizzare lo script create-service-account.sh per creare un nuovo account di servizio e scaricare le relative chiavi:
./tools/create-service-accounts=.sh --env prod --profile apigee‑cassandra
Una volta scaricate le chiavi, devi creare un segreto Kubernetes con il nome apigee-cassandra-backup-and-restore-gcp-sa-key, utilizzando il seguente comando:
kubectl create secret generic "apigee-cassandra-backup-and-restore-gcp-sa-key" \ --from-file="dbbackup_key.json=${PATH_TO_SA_KEY}" \ -n "${APIGEE_NAMESPACE}"
Dove:
- ${PATH_TO_SA_KEY}: percorso del file contenente le chiavi dell'account di servizio.
- ${APIGEE_NAMESPACE}: lo spazio dei nomi Kubernetes in cui sono stati installati i componenti Apigee. Di solito si tratta di apigee, a meno che non sia stato modificato esplicitamente durante l'installazione
In alternativa, puoi utilizzare il file modello templates/secret-apigee-cassandra-backup-and-restore-gcp-sa-key.yaml per creare questo segreto.
Attivazione:
- Se vuoi attivare il backup, rimuovi il commento dalla riga "./components/gcs-backup" nel file kustomization.yaml del datastore.
- Se vuoi ripristinare un backup, rimuovi il commento dalla riga "./components/gcs-restore" nel file kustomization.yaml di Datastore.
Modifiche solo per il backup
- components/gcs-backup/apigee-datastore-patch.yaml
- OBBLIGATORIO Modifica il valore della variabile di ambiente DATABASE_STORAGE_BUCKET, che avrà il formato gs://BUCKET_NAME e punta al bucket Google Cloud Storage in cui è necessario eseguire il backup dei dati. La descrizione corrisponde a dbStorageBucket descritto qui.
- components/gcs-backup/cron-patch.yaml
- OBBLIGATORIO Modifica spec.schedule per specificare la frequenza del backup. Il campo accetta il formato della pianificazione di Crontab standard. La descrizione corrisponde alla programmazione descritta qui.
- OBBLIGATORIO Modifica il valore della variabile di ambiente DATABASE_STORAGE_BUCKET, che avrà il formato gs://BUCKET_NAME e punta al bucket Google Cloud Storage in cui è necessario eseguire il backup dei dati. La descrizione corrisponde a dbStorageBucket descritto qui.
- FACOLTATIVO Modifica il valore di HTTP_PROXY_URL in modo che rimandi a qualsiasi proxy configurato. Il formato potrebbe essere il seguente:
http://${USERNAME}:${PASSOWORD}@${HOST_IP_ADDRESS}:${HOST_PORT}
https://${USERNAME}:${PASSOWORD}@${HOST_IP_ADDRESS}:${HOST_PORT}
http://${HOST_IP_ADDRESS}:${HOST_PORT}
http://${HOST_IP_ADDRESS>:${HOST_PORT}
Eseguire il backup
Puoi eseguire il backup con il seguente comando:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
Per applicare le modifiche e attivare il backup:
Modifiche solo per il ripristino
- components/gcs-restore/apigee-datastore-patch.yaml
- OBBLIGATORIO Modifica il valore della variabile di ambiente DATABASE_STORAGE_BUCKET, che sarà del tipo gs://BUCKET_NAME e punta al bucket Google Cloud Storage in cui deve essere eseguito il backup dei dati. La descrizione corrisponde a dbStorageBucket descritto qui.
- components/gcs-restore/job-patch.yaml
- OBBLIGATORIO Modifica il valore della variabile di ambiente DATABASE_STORAGE_BUCKET, che sarà del tipo gs://BUCKET_NAME e punta al bucket Google Cloud Storage in cui deve essere eseguito il backup dei dati.
- OBBLIGATORIO Modifica il valore della variabile di ambiente BACKUP_SNAPSHOT_TIMESTAMP. La descrizione corrisponde a restore:snapshotTimestamp descritto qui.
- FACOLTATIVO Modifica il valore di HTTP_PROXY_URL in modo che rimandi a qualsiasi proxy configurato.
Il formato potrebbe essere il seguente:
http://${USERNAME}:${PASSOWORD}@${HOST_IP_ADDRESS}:${HOST_PORT}
https://${USERNAME}:${PASSOWORD}@${HOST_IP_ADDRESS}:${HOST_PORT}
http://${HOST_IP_ADDRESS}:${HOST_PORT}
http://${HOST_IP_ADDRESS}:${HOST_PORT}
Esegui il ripristino:
Per informazioni di base sul ripristino dei backup, consulta Ripristino dei backup | Apigee X | Google Cloud
- Crea un nuovo cluster Kubernetes con un nuovo spazio dei nomi in cui ripristinare il deployment dell'ambiente di runtime ibrido. Non puoi utilizzare lo stesso cluster e lo stesso spazio dei nomi utilizzati per l'installazione ibrida originale.
Installa Hybrid nel nuovo cluster con le impostazioni configurate sopra, oltre a qualsiasi altra impostazione che preferisci:
- Puoi utilizzare l'installazione di base e installare hybrid nel nuovo spazio dei nomi:
./tools/apigee-hybrid-setup.sh \ --cluster-name $CLUSTER_NAME \ --cluster-region $CLUSTER_LOCATION \ --namespace ${NEW_APIGEE_NAMESPACE}
- In alternativa, segui la procedura di installazione di Apigee Hybrid personalizzata per configurare le impostazioni in base alla tua scelta.
Al termine del ripristino, tutte le risorse nello spazio dei nomi precedente potrebbero essere eliminate e passare al nuovo spazio dei nomi.
Per ulteriori informazioni, consulta Ripristino dei backup.
non-gcs-backup e non-gcs-restore
Questo componente Kustomize può essere utilizzato per eseguire il backup e il ripristino del database Cassandra in Google Cloud Storage.
Disponibile in:
overlays/instances/{INSTANCE_NAME}/datastore
Prerequisito:
- Puoi utilizzare i passaggi della documentazione già esistente per la configurazione del server e di SSH.
Dai passaggi precedenti, dovrai utilizzare la chiave privata SSH disponibile nel file "ssh_key" generato seguendo i passaggi precedenti. Creeremo quindi un secret Kubernetes denominato apigee-cassandra-backup-and-restore-gcp-sa-key contenente questa chiave privata SSH.
Il secret Kubernetes può essere creato utilizzando il seguente comando:
kubectl create secret generic "apigee-cassandra-backup-and-restore-key-file" \ --from-file="key=${PATH_TO_SSH_PRIVATE_KEY}" \ -n "${APIGEE_NAMESPACE}"
Dove:
- ${PATH_TO_SSH_PRIVATE_KEY} - Percorso del file contenente la chiave privata SSH
- ${APIGEE_NAMESPACE}: lo spazio dei nomi Kubernetes in cui sono stati installati i componenti Apigee. Di solito si tratta di apigee, a meno che non venga modificato esplicitamente durante l'installazione
In alternativa, puoi utilizzare il file modello templates/secret-apigee-cassandra-backup-and-restore-key-file.yaml per creare questo segreto.
Attivazione:
- Se vuoi attivare il backup, rimuovi il commento dalla riga "
./components/non-gcs-backup
" nel file kustomization.yaml del datastore. - Se vuoi ripristinare un backup, rimuovi il commento dalla riga "
./components/non-gcs-restore
" nel file kustomization.yaml del datastore.
Modifiche solo per il backup
- components/non-gcs-backup/apigee-datastore-patch.yaml
- OBBLIGATORIO Modifica il valore di BACKUP_SERVER_IP. La descrizione corrisponde a BACKUP_SERVER_IP descritto qui.
- OBBLIGATORIO Modifica il valore di BACKUP_STORAGE_DIR. La descrizione corrisponde a BACKUP_STORAGE_DIR descritto qui.
- components/non-gcs-backup/cron-patch.yaml
- OBBLIGATORIO Modifica spec.schedule per specificare la frequenza del backup. Il campo accetta il formato della pianificazione di Crontab standard. La descrizione corrisponde alla programmazione descritta qui.
- OBBLIGATORIO Modifica il valore di BACKUP_SERVER_IP. La descrizione corrisponde a BACKUP_SERVER_IP descritto qui.
- OBBLIGATORIO Modifica il valore di BACKUP_STORAGE_DIR. La descrizione corrisponde a BACKUP_STORAGE_DIR descritto qui.
- FACOLTATIVO Modifica il valore di HTTP_PROXY_URL in modo che rimandi a qualsiasi proxy configurato. Il formato potrebbe essere il seguente:
http://${USERNAME}:${PASSOWORD}@${HOST_IP_ADDRESS}:${HOST_PORT}
https://${USERNAME}:${PASSOWORD}@${HOST_IP_ADDRESS}:${HOST_PORT}
http://${HOST_IP_ADDRESS}:${HOST_PORT}
http://${HOST_IP_ADDRESS}:${HOST_PORT}
Eseguire il backup
Puoi eseguire il backup con il seguente comando:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
Per applicare le modifiche e attivare il backup:
Modifiche solo per il backup
- components/non-gcs-restore/apigee-datastore-patch.yaml
- OBBLIGATORIO Modifica il valore di
BACKUP_SERVER_I
P. La descrizione corrisponde aBACKUP_SERVER_IP
descritta qui. - OBBLIGATORIO Modifica il valore di BACKUP_STORAGE_DIR. La descrizione corrisponde a
BACKUP_STORAGE_DIR
descritta qui.
- OBBLIGATORIO Modifica il valore di
- components/non-gcs-restore/job-patch.yaml
- OBBLIGATORIO Modifica il valore della variabile di ambiente
BACKUP_SNAPSHOT_TIMESTAMP
. La descrizione corrisponde arestore:snapshotTimestamp
descritta qui. - OBBLIGATORIO Modifica il valore di
BACKUP_SERVER_IP
. La descrizione corrisponde aBACKUP_SERVER_IP
descritta qui. - OBBLIGATORIO Modifica il valore di
BACKUP_STORAGE_DIR
. La descrizione corrisponde aBACKUP_STORAGE_DIR
descritta qui. - FACOLTATIVO Modifica il valore di
HTTP_PROXY_URL
in modo che rimandi a qualsiasi proxy configurato. Il formato potrebbe essere il seguente:http://${USERNAME}:${PASSOWORD}@${HOST_IP_ADDRESS}:${HOST_PORT}
https://${USERNAME}:${PASSOWORD}@${HOST_IP_ADDRESS}:${HOST_PORT}
http://${HOST_IP_ADDRESS}:${HOST_PORT}
http://${HOST_IP_ADDRESS}:${HOST_PORT}
- OBBLIGATORIO Modifica il valore della variabile di ambiente
Esegui il ripristino:
Per una panoramica del ripristino dei backup, consulta la Panoramica del ripristino di Cassandra.
- Crea un nuovo cluster Kubernetes con un nuovo spazio dei nomi in cui ripristinare il deployment dell'ambiente di runtime ibrido. Non puoi utilizzare lo stesso cluster e lo stesso spazio dei nomi utilizzati per l'installazione ibrida originale.
Installa Hybrid nel nuovo cluster con le impostazioni configurate sopra, oltre a qualsiasi altra impostazione che preferisci: Puoi utilizzare l'installazione di base e installare Hybrid nel nuovo spazio dei nomi:
./tools/apigee-hybrid-setup.sh \ --cluster-name $CLUSTER_NAME \ --cluster-region $CLUSTER_LOCATION \ --namespace ${NEW_APIGEE_NAMESPACE}
In alternativa, segui la procedura di installazione di Apigee Hybrid personalizzata per configurare le impostazioni in base alla tua scelta.
Al termine del ripristino, tutte le risorse nello spazio dei nomi precedente potrebbero essere eliminate e passare al nuovo spazio dei nomi.
Per ulteriori informazioni, consulta Pianificare i backup su un server remoto.
http-client
Per le istruzioni, vedi Attivare i client HTTP | Apigee.
Disponibile in:
- overlays/instances/${INSTANCE_NAME}/route-config/${ENV_GROUP}
Attivazione:
Rimuovi il commento dalla riga "./components/http-client
" nel rispettivo file route-config/${ENV_GROUP}/kustomization.yaml
Modifiche da apportare:
- Non sono richieste modifiche obbligatorie.
Utilizzo:
- Se non hai ancora installato Apigee Hybrid, puoi continuare con i passaggi di installazione e queste modifiche verranno applicate durante la procedura
Se hai già installato Apigee Hybrid, dovrai applicare queste nuove modifiche utilizzando:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
non-sni-client
Equivalente della pagina Come configurare un client non SNI | Apigee già esistente.
Disponibile in:
- overlays/instances/${INSTANCE_NAME}/route-config/${ENV_GROUP}
Attivazione:
Rimuovi il commento dalla riga "./components/non-sni-client
" nel rispettivo file route-config/${ENV_GROUP}/kustomization.yaml
Modifiche da apportare:
- components/non-sni-client/apigee-route.yaml
- OBBLIGATORIO La descrizione
credentialName
corrisponde acredential_name
descritta qui.
- OBBLIGATORIO La descrizione
Utilizzo:
- Se non hai ancora installato Apigee Hybrid, puoi continuare con i passaggi di installazione e queste modifiche verranno applicate durante la procedura
Se hai già installato Apigee Hybrid, dovrai applicare queste nuove modifiche utilizzando:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
http-and-non-sni-client
Per istruzioni, vedi Attivare il supporto sia per i client non SNI sia per i client HTTP | Apigee.
Attivazione:
Rimuovi il commento dalla riga "./components/http-and-non-sni-client
" nel rispettivo file route-config/${ENV_GROUP}/kustomization.yaml
Modifiche da apportare:
- components/http-and-non-sni-client/apigee-route.yaml
- OBBLIGATORIO La descrizione
credentialName
corrisponde acredential_name
descritta qui.
- OBBLIGATORIO La descrizione
Utilizzo:
- Se non hai ancora installato Apigee Hybrid, puoi continuare con i passaggi di installazione e queste modifiche verranno applicate durante la procedura
Se hai già installato Apigee Hybrid, dovrai applicare queste nuove modifiche utilizzando:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
multiregionale
Questo componente può essere utilizzato durante la configurazione di un deployment Cassandra multi-regione. Per maggiori informazioni, consulta Deployment in più regioni su GKE e GKE On-Prem
Attivazione:
Rimuovi il commento dalla riga "./components/multi-region
" nel file datastore/kustomization.yaml
Modifiche da apportare:
components/multi-region/cassandra-data-replication.yaml
- OBBLIGATORIO
source.region
Il nome del data center Cassandra di origine da cui verranno replicati i dati. Può essere identificato utilizzando il seguente comando nel cluster di origine:
kubectl get apigeedatastore -n ${APIGEE_NAMESPACE} -o=jsonpath='{.items[*].spec.components.cassandra.properties.datacenter}'
- OBBLIGATORIO
components/multi-region/patch.yaml
- OBBLIGATORIO
spec.components.properties.multiRegionSeedHost
L'IP del pod di uno dei pod Cassandra di origine. Possiamo utilizzare:
kubectl get pods -n ${APIGEE_NAMESPACE} -o wide
- Per elencare tutti i pod e ottenere l'IP di qualsiasi pod Cassandra, utilizza il seguente comando:
kubectl get pods -o wide -n apigee
L'output dovrebbe essere simile al seguente:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE apigee-cassandra-default-0 1/1 Running 0 5d 10.0.0.11 gke-k8s-dc-2-default-pool-a2206492-p55d apigee-cassandra-default-1 1/1 Running 0 5d 10.0.2.4 gke-k8s-dc-2-default-pool-e9daaab3-tjmz apigee-cassandra-default-2 1/1 Running 0 5d 10.0.3.5 gke-k8s-dc-2-default-pool-e589awq3-kjch
- OBBLIGATORIO
Per ulteriori informazioni, consulta i prerequisiti per GKE in "Deployment in più regioni su GKE, GKE On-Prem e AKS":
Utilizzo:
L'utilizzo di questo componente ha senso soprattutto quando configuri Apigee Hybrid in un nuovo cluster e hai già un'altra configurazione di Apigee Hybrid funzionante.
- Sia il cluster nuovo che quello esistente devono utilizzare gli stessi certificati TLS per garantire una comunicazione corretta tra i pod Cassandra. Pertanto, dovremo copiare il secret
apigee-root-certificate
dal cluster esistente e utilizzarlo anche in quello più recente: Esegui:
kubectl config get-contexts
- Per ottenere un elenco di tutti i contesti Kubernetes ed eseguirli
kubectl config use-context SOURCE_CLUSTER_CONTEXT
dove SOURCE_CLUSTER_CONTEXT è il nome del contesto del cluster Kubernetes di origine.
Memorizza il segreto del certificato radice in un file:
kubectl get secret/apigee-root-certificate -n cert-manager -o yaml > apigee-root-certificate.yaml
Passa il contesto del cluster al nuovo cluster in cui stai installando Apigee Hybrid.
kubectl config use-context ${NEW_CLUSTER_CONTEXT}
Crea il secret principale nel nuovo cluster:
kubectl -n cert-manager apply -f apigee-root-certificate.yaml
Disattiva la creazione di un nuovo certificato radice. In questo modo, eviteremo di creare un nuovo
apigee-root-certificate
e di sovrascrivere quello creato nel passaggio precedente.Rimuovi il commento dalle seguenti righe nel file
overlays/initialization/certificates/kustomization.yaml
:# components: # - ./components/disable-apigee-root-certificate-generation
Continua con il resto dell'installazione di Apigee Hybrid utilizzando l'installazione di Apigee Hybrid di base o l'installazione di Apigee Hybrid personalizzata. Ad esempio, dopo aver seguito la procedura di installazione di base di Apigee Hybrid, puoi eseguire:
./tools/apigee-hybrid-setup.sh --cluster-name $CLUSTER_NAME --cluster-region $CLUSTER_LOCATION
Verifica lo stato della ricostruzione utilizzando il seguente comando.
kubectl -n ${APIGEE_NAMESPACE} get apigeeds -o json | jq ".items[].status.cassandraDataReplication"
Verifica le procedure di ricostruzione dai log. Verifica anche le dimensioni dei dati utilizzando il comando nodetool status:
kubectl logs apigee-cassandra-default-0 -f -n ${APIGEE_NAMESPACE} kubectl exec apigee-cassandra-default-0 -n ${APIGEE_NAMESPACE} -- nodetool -u ${JMX_USER} -pw ${JMX_PASSWORD} status
Verifica lo stato della ricostruzione utilizzando il seguente comando.
kubectl -n apigee get apigeeds -o json | jq ".items[].status.cassandraDataReplication"
I risultati dovrebbero avere il seguente aspetto:
{ "rebuildDetails": { "apigee-cassandra-default-0": { "state": "complete", "updated": 1623105760 }, "apigee-cassandra-default-1": { "state": "complete", "updated": 1623105765 }, "apigee-cassandra-default-2": { "state": "complete", "updated": 1623105770 } }, "state": "complete", "updated": 1623105770 }
Vedi anche: Deployment multiregionale.
Rimuovi le seguenti righe da
components/multi-region/patch.yaml
:properties: multiRegionSeedHost: {IP_ADDRESS} # To be modified. REQUIRED
Applica le modifiche:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
Concetti
Image Hub
Le immagini container Docker sono generalmente specificate nel formato:
${REGISTRY_HOST_PATH}/${IMAGE_NAME}:${IMAGE_TAG}
o che utilizzano un riepilogo simile al seguente:
${REGISTRY_HOST_PATH}/${IMAGE_NAME}@${DIGEST}
Apigee utilizza il concetto di "Image Hub", che nei formati precedenti si riferisce a ${REGISTRY_HOST_PATH}
. Il valore predefinito dell'hub di immagini è gcr.io/apigee-release/hybrid/
.
(le immagini che utilizzano DIGEST devono essere impostate singolarmente in ogni sottocomponente)
Apigee genera il percorso dell'immagine finale combinando il valore di quanto segue:
- "Image Hub", che può essere sostituito in apigee-hybrid-config.yaml (fai riferimento alla sezione Utilizzare immagini Docker da repository privati per la procedura dettagliata su come eseguire l'override di Image Hub).
- Il valore di
IMAGE_TAG
viene ottenuto dal campoversion
, presente all'interno del file yaml per ogni singolo componente (ad esempio apigee-organization.yaml). Apigee contrassegna le immagini con la versione di Apigee Hybrid, ovveroIMAGE_TAG
è 1.8 per la versione 1.8 di Apigee Hybrid IMAGE_NAME
viene determinato implicitamente dal nome del contenitore in cui verrà utilizzata l'immagine. Ad esempio, per il contenitoreapigee-runtime
,IMAGE_NAME
sarà apigee-runtime.
Pertanto, un esempio completo di percorso immagine è gcr.io/apigee-release/hybrid/apigee-runtime:1.8.0
In questo modo viene costruito il percorso dell'immagine finale, che verrà poi utilizzato all'interno di ciascun contenitore nei rispettivi pod.
Account di servizio Google Cloud
Gli account di servizio Google Cloud sono account utilizzati dalle applicazioni per effettuare chiamate autorizzate alle API Google. È possibile scaricare le chiavi degli account di servizio Google Cloud, che possono essere utilizzate per l'autenticazione. Apigee si aspetta che l'utente fornisca le chiavi dell'account di servizio creando i secret. Di seguito sono riportati i nomi dei componenti e il nome predefinito del segreto in cui vengono cercate le chiavi dell'account di servizio:
Componente | Sottocomponente | Nome del secret Kubernetes predefinito contenente la chiave dell'account di servizio |
---|---|---|
organizzazione | ||
connectAgent | apigee-connect-agent-gcp-sa-key-${ORG_NAME} |
|
Watcher | apigee-watcher-gcp-sa-key-${ORG_NAME} |
|
mart | apigee-mart-gcp-sa-key-${ORG_NAME} |
|
udca | apigee-udca-gcp-sa-key-${ORG_NAME} |
|
ingressGateways | N/D | |
environment | ||
runtime | apigee-runtime-gcp-sa-key-${ORG_NAME}-${ENV_NAME} |
|
udca | apigee-udca-gcp-sa-key-${ORG_NAME}-${ENV_NAME} |
|
sincronizzatore | apigee-synchronizer-gcp-sa-key-${ORG_NAME}-${ENV_NAME} |
|
telemetria | ||
metriche | apigee-metrics-gcp-sa-key |
|
containerLogs | apigee-logger-gcp-sa-key |
Account di servizio Kubernetes
Gli account di servizio Kubernetes forniscono identità ai pod nel cluster. Per impostazione predefinita, Apigee Controller li crea per te. Tuttavia, se vuoi eseguire l'override della creazione (ad esempio quando utilizzi le identità di carico di lavoro), puoi farlo specificando il campo podServiceAccountName
nei vari componenti secondari.
Elenco dei componenti e dei rispettivi componenti secondari in cui è possibile specificare l'account di servizio Kubernetes insieme al nome predefinito dell'account di servizio k8s quando attivi la patch per l'identità del carico di lavoro.
Componente | Sottocomponente | Nome predefinito (disponibile se hai attivato la patch di Workload Identity) |
---|---|---|
organizzazione | ||
connectAgent | apigee-connect-agent-svc-account-${ORG_NAME} |
|
Watcher | apigee-watcher-svc-account-${ORG_NAME} |
|
mart | apigee-mart-svc-account-${ORG_NAME} |
|
udca | apigee-udca-svc-account-${ORG_NAME} |
|
environment | ||
sincronizzatore | apigee-synchronizer-svc-account-${ORG_NAME}-${ENV_NAME} |
|
udca | apigee-udca-svc-account-${ORG_NAME}-${ENV_NAME} |
|
runtime | apigee-runtime-svc-account-${ORG_NAME}-${ENV_NAME} |
|
datastore | ||
cassandra | apigee-datastore-svc-account |
|
telemetria | ||
metricsApp | apigee-metricsApp-svc-account |
|
metricsProxy | apigee-metricsProxy-svc-account |
|
metricsAdapter | apigee-metricsAdapter-svc-account |
|
containerLogs | apigee-container-logs-svc-account |
Workload Identity
Le identità del carico di lavoro consentono ai pod (che utilizzano account di servizio Kubernetes) in esecuzione in GKE di autenticarsi direttamente con le API Google Cloud senza richiedere le chiavi dell'account di servizio Google Cloud.
Aggiunta di un nuovo ambiente
.
├── ...
├── instances/instance1/components
│ ├── ...
│ ├── environments
│ │ ├── dev
│ │ │ └── apigee-environment.yaml
│ │ │ └── secrets.yaml
│ │ └── new-env-name (new)
│ │ └── apigee-environment.yaml (new)
│ │ └── secrets.yaml (new)
└── ...
Per aggiungere un nuovo ambiente, basta:
- Creare una nuova cartella all'interno della directory degli ambienti (o in base alla struttura delle cartelle)
- Copia il file
apigee-environment.yaml
da qualsiasi ambiente esistente alla nuova cartella. - Se vuoi creare nuovi account di servizio e chiavi di crittografia per il nuovo ambiente, copia
secrets.yaml
nella nuova cartella e rinomina i secret in modo appropriato per distinguerli dagli altri ambienti esistenti (di solito questo viene fatto aggiungendo il nome dell'ambiente come suffisso). - Apportare le modifiche appropriate al
apigee-environment.yaml
, ad esempio:- Modificare il nome dell'ambiente
- Se devono essere creati nuovi account di servizio e nuove chiavi di crittografia, è necessario fare riferimento a questi elementi nel file yaml.
- Applicazione dei
yaml
:
kubectl apply -f components/environments/new-env-name/secrets.yaml
kubectl apply -f components/environments/new-env-name/apigee-environment.yaml
Utilizzo dell'eliminazione forzata in Apigee Datastore
Se l'eliminazione del datastore non procede per qualsiasi motivo, ora il datastore apigee può essere eliminato forzatamente utilizzando i seguenti comandi, indipendentemente dallo stato corrente del cluster.
Elimina
apigeeds
nello spazio dei nomiapigee
:Kubectl delete -n apigee apigeeds default
Se questo passaggio si blocca, puoi uscirne utilizzando CTRL + C.
Modificare un nuovo
apigeeds
:Kubectl edit -n apigee apigeeds default
Aggiungere/aggiornare il campo forceDelete nella specifica del datastore Apigee
spec: forceDelete: true
Salva il file ed esci.
Ora attendi che il data store venga eliminato. L'eliminazione di tutte le risorse Cassandra può richiedere alcuni minuti.
Informazioni sullo script
Lo script apigee-hybrid-setup.sh
esegue alcune convalide di base e aiuta ad automatizzare i passaggi che altrimenti dovresti eseguire se vuoi una personalizzazione più dettagliata, come descritto in Installazione di Apigee Hybrid personalizzata. Anche con l'installazione personalizzata, puoi comunque utilizzare parzialmente lo script per aiutarti con determinate attività.
Puoi eseguire ./tools/apigee-hybrid-setup.sh --help
per visualizzare un elenco di flag supportati e ricevere ulteriore assistenza con lo script. Al momento sono supportati i seguenti flag:
--namespace
Per impostazione predefinita, lo script installa tutti i componenti nello spazio dei nomiapigee
. Puoi modificare questo comportamento specificando il nome dello spazio dei nomi utilizzando questo flag.--org
Utilizzato per fornire il nome dell'organizzazione Apigee. Se non specificato, il valore predefinito è il progetto Google Cloud attualmente selezionato ingcloud
--envgroup
Utilizzato per fornire il nome del gruppo di ambienti all'interno della tua organizzazione. Se non specificato, viene tentato di eseguire una query sulle API del piano di controllo per determinare il nome del gruppo di ambienti. Se vengono trovati più gruppi di ambienti, viene restituito un errore e lo script esce.--env
Utilizzato per fornire il nome dell'ambiente all'interno della tua organizzazione. Se non specificato, viene tentato di eseguire una query sulle API del piano di controllo per determinare il nome dell'ambiente. Se vengono trovati più ambienti o se l'ambiente non fa parte del gruppo di ambienti, viene restituito un errore e lo script esce.--cluster-name
Il nome del cluster Kubernetes.--cluster-region
La regione in cui si trova il cluster Kubernetes--gcp-project-id
L'ID progetto Google Cloud in cui esiste il cluster Kubernetes--ingress-domain
Specifica il nome host/nome di dominio che verrà utilizzato per generare i certificati TLS autofirmati per Istio ingress-gateway. Se non viene specificato alcun valore, viene tentato di determinarlo eseguendo una query sulle API del piano di controllo per ottenere il valore dall'envgroup. Se si sono verificati problemi con la determinazione dell'envgroup o sono stati configurati più nomi host per l'envgroup, viene restituito un errore e lo script esce.--generate-internal-tls-certs
Verrà generato un secret Kubernetes denominato apigee-ca contenente un certificato e una coppia di chiavi generati da noi.--create-ingress-tls-certs
Verrà generato un secret denominato{ORG_NAME}-{ENV_GROUP_NAME}
(derivato dal nome dell'organizzazione e del gruppo di ambienti) all'interno dello spazio dei nomi istio-system che conterrà un certificato e una coppia di chiavi da utilizzare per la comunicazione TLS. Il nome di dominio utilizzato per generare questi certificati è dedotto dal valore trovato nella configurazione del gruppo di ambienti. In caso di conflitti (ad esempio quando vengono trovati più domini), verranno visualizzati messaggi di errore appropriati.--create-gcp-sa-and-secrets
Crea un singolo account di servizio Google Cloud nel progetto Google Cloud, scarica le chiavi e poi crea i secret Kubernetes contenenti la chiave. I nomi dei secret sono disponibili negli account di servizio Google Cloud.--fill-values
Sostituisce i valori di org, env, envgroup e altri nomi ovunque siano richiesti nei vari file yaml.--apply-configuration
Verranno creati gli emittenti dei certificati, le definizioni di risorse personalizzate, gli webhook, i ruoli e la risorsa del controller. Le risorse verranno create nell'ordine corretto e il comando verrà bloccato finché non saranno tutte attive.-- rename-directories
Rinomina l'ambiente e il gruppo di ambienti con i nomi dell'ambiente e del gruppo di ambienti corretti.--verbose
Mostra l'output dettagliato per il debug.--help
Mostra le informazioni sull'utilizzo.--setup-all
Verranno eseguite tutte le attività che possono essere eseguite da questo script
Struttura della cartella di configurazione di Apigee Hybrid
Per impostazione predefinita, la cartella apigee-hybrid-setup
ha la seguente struttura gerarchica:
.
├── bases
│ ├── controllers
│ │ ├── apigee-controller
│ │ │ ├── apigee-controller-deployment.yaml
│ │ │ └── kustomization.yaml
│ │ └── apigee-ingressgateway-manager
│ │ ├── apigee-ingressgateway-manager-deployment.yaml
│ │ └── kustomization.yaml
│ ├── datastore
│ │ └── backup-and-restore
│ │ ├── backup
│ │ │ ├── cronjob.yaml
│ │ │ └── kustomization.yaml
│ │ ├── common
│ │ │ ├── kustomization.yaml
│ │ │ ├── rbac.yaml
│ │ │ └── tls-certificate.yaml
│ │ └── restore
│ │ ├── job.yaml
│ │ └── kustomization.yaml
│ └── initialization
│ ├── certificates
│ │ ├── certificates-and-issuers.yaml
│ │ └── kustomization.yaml
│ ├── crds
│ │ ├── customresourcedefinition-apigeedatastores.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeedeployments.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeeenvironments.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeeorganizations.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeeredis.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeerouteconfigs.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeeroutes.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeetelemetries.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-cassandradatareplications.apigee.cloud.google.com.yaml
│ │ └── kustomization.yaml
│ ├── openshift
│ │ ├── kustomization.yaml
│ │ └── scc.yaml
│ ├── rbac
│ │ ├── apigee-controller
│ │ │ ├── kustomization.yaml
│ │ │ └── rbac.yaml
│ │ └── apigee-embedded-ingress-controller
│ │ ├── cluster-role-bindings.yaml
│ │ ├── cluster-roles.yaml
│ │ ├── kustomization.yaml
│ │ └── service-account.yaml
│ └── webhooks
│ ├── kustomization.yaml
│ ├── mutatingwebhookconfiguration.yaml
│ └── validatingwebhookconfiguration.yaml
├── CONTRIBUTING.md
├── docs
│ └── api_references
│ ├── v1alpha1.md
│ └── v1alpha2.md
├── kokoro
│ ├── build.sh
│ ├── common.cfg
│ ├── continuous.cfg
│ ├── presubmit.cfg
│ └── release.cfg
├── LICENSE
├── overlays
│ ├── controllers
│ │ ├── apigee-controller
│ │ │ ├── apigee-hybrid-config.yaml
│ │ │ ├── components
│ │ │ │ ├── imagepullsecret
│ │ │ │ │ ├── kustomization.yaml
│ │ │ │ │ └── patch.yaml
│ │ │ │ └── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── kustomization.yaml
│ │ ├── apigee-ingressgateway-manager
│ │ │ ├── apigee-ingressgateway-manager-deployment-patch.yaml
│ │ │ ├── apigee-istio-mesh-config.yaml
│ │ │ ├── components
│ │ │ │ ├── imagepullsecret
│ │ │ │ │ ├── kustomization.yaml
│ │ │ │ │ └── patch.yaml
│ │ │ │ └── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── kustomization.yaml
│ │ └── kustomization.yaml
│ ├── initialization
│ │ ├── certificates
│ │ │ ├── apigee-ingressgateway-manager-certificate-patch.yaml
│ │ │ ├── apigee-serving-cert-patch.yaml
│ │ │ ├── components
│ │ │ │ └── disable-apigee-root-certificate-generation
│ │ │ │ └── kustomization.yaml
│ │ │ └── kustomization.yaml
│ │ ├── crds
│ │ │ └── kustomization.yaml
│ │ ├── ingress
│ │ │ ├── envoyfilter-1.11.yaml
│ │ │ └── kustomization.yaml
│ │ ├── namespace.yaml
│ │ ├── openshift
│ │ │ ├── kustomization.yaml
│ │ │ └── scc.yaml
│ │ ├── rbac
│ │ │ ├── apigee-controller
│ │ │ │ └── kustomization.yaml
│ │ │ ├── apigee-ingressgateway-manager
│ │ │ │ └── kustomization.yaml
│ │ │ └── kustomization.yaml
│ │ └── webhooks
│ │ ├── kustomization.yaml
│ │ ├── mutatingwebhookconfiguration.yaml
│ │ └── validatingwebhookconfiguration.yaml
│ └── instances
│ └── instance1
│ ├── datastore
│ │ ├── apigee-datastore.yaml
│ │ ├── components
│ │ │ ├── gcs-backup
│ │ │ │ ├── apigee-datastore-patch.yaml
│ │ │ │ ├── cron-patch.yaml
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── tls-certificate-patch.yaml
│ │ │ ├── gcs-restore
│ │ │ │ ├── apigee-datastore-patch.yaml
│ │ │ │ ├── job-patch.yaml
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── tls-certificate-patch.yaml
│ │ │ ├── http-proxy
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── multi-region
│ │ │ │ ├── cassandra-data-replication.yaml
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── non-gcs-backup
│ │ │ │ ├── apigee-datastore-patch.yaml
│ │ │ │ ├── cron-patch.yaml
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── tls-certificate-patch.yaml
│ │ │ ├── non-gcs-restore
│ │ │ │ ├── apigee-datastore-patch.yaml
│ │ │ │ ├── job-patch.yaml
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── tls-certificate-patch.yaml
│ │ │ ├── openshift-scc
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── scc.yaml
│ │ │ └── workload-identity
│ │ │ ├── kustomization.yaml
│ │ │ ├── patch.yaml
│ │ │ └── service-accounts.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── environments
│ │ ├── kustomization.yaml
│ │ └── test
│ │ ├── apigee-environment.yaml
│ │ ├── components
│ │ │ ├── http-proxy
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── workload-identity
│ │ │ ├── kustomization.yaml
│ │ │ ├── patch.yaml
│ │ │ └── service-accounts.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── kustomization.yaml
│ ├── organization
│ │ ├── apigee-organization.yaml
│ │ ├── components
│ │ │ ├── http-proxy
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── workload-identity
│ │ │ ├── kustomization.yaml
│ │ │ ├── patch.yaml
│ │ │ └── service-accounts.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── redis
│ │ ├── apigee-redis.yaml
│ │ ├── components
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── workload-identity
│ │ │ ├── kustomization.yaml
│ │ │ ├── patch.yaml
│ │ │ └── service-accounts.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── route-config
│ │ ├── kustomization.yaml
│ │ └── test-envgroup
│ │ ├── apigee-route-config.yaml
│ │ ├── components
│ │ │ ├── http-and-non-sni-client
│ │ │ │ ├── apigee-route.yaml
│ │ │ │ └── kustomization.yaml
│ │ │ ├── http-client
│ │ │ │ ├── apigee-route.yaml
│ │ │ │ └── kustomization.yaml
│ │ │ └── non-sni-client
│ │ │ ├── apigee-route.yaml
│ │ │ └── kustomization.yaml
│ │ └── kustomization.yaml
│ └── telemetry
│ ├── apigee-telemetry.yaml
│ ├── components
│ │ ├── http-proxy
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── imagepullsecret
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── logger
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── metrics
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── nodeselector
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── openshift-scc
│ │ │ ├── kustomization.yaml
│ │ │ └── scc.yaml
│ │ ├── workload-identity-logger
│ │ │ ├── kustomization.yaml
│ │ │ ├── patch.yaml
│ │ │ └── service-accounts.yaml
│ │ └── workload-identity-metrics
│ │ ├── kustomization.yaml
│ │ ├── patch.yaml
│ │ └── service-accounts.yaml
│ └── kustomization.yaml
├── README.md
├── templates
│ ├── certificate-org-envgroup.yaml
│ ├── secret-apigee-cassandra-backup-and-restore-gcp-sa-key.yaml
│ ├── secret-apigee-cassandra-backup-and-restore-key-file.yaml
│ ├── secret-gcp-sa-key.yaml
│ └── secret-ingress-tls-cert-key.yaml
└── tools
├── apigee-hybrid-setup.sh
├── apigee-pull-push.sh
├── common.sh
├── create-service-account.sh
└── dump_kubernetes.sh
Una versione dei file precedenti è disponibile nel tag preview-1 del repository GitHub all'indirizzo https://github.com/apigee/apigee-hybrid-install/releases/tag/preview-1.
La cartella sopra indicata contiene i manifest Kubernetes per il runtime di Apigee Hybrid e utilizza Kustomize per la gestione della configurazione. I manifest sono organizzati in base al concetto di basi e overlay di Kustomize. La cartella delle basi contiene la configurazione minima richiesta per ogni componente apigee. La cartella degli overlay contiene più funzionalità(configurazioni) aggiuntive definite come componenti. Un componente può essere rimuovendo il commento dal riferimento al componente in kustomization.yaml
Esempio : per attivare gcs-backup
per il datastore apigee, il componente gcs-backup
non è stato commentato nel file customization.yaml riportato di seguito.
Percorso : ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}/datastore/kustomization.yaml
namespace: "apigee" # kpt-set: ${APIGEE_NAMESPACE}
resources:
- apigee-datastore.yaml
components:
# - ./components/http-proxy
# - ./components/nodeselector/
# - ./components/imagepullsecret
# - ./components/workload-identity
# - ./components/openshift-scc
- ./components/gcs-backup (uncommented)
# - ./components/gcs-restore
# - ./components/non-gcs-backup
# - ./components/non-gcs-restore
Qualsiasi valore che richiede personalizzazioni dovrà essere impostato nel file patch.yaml corrispondente per gcs-backup.
Nel file riportato di seguito, il valore di CLOUD_STORAGE_BUCKET_PATH
deve essere impostato dall'utente
Percorso: $INSTALL_DIR/overlays/instances/$INSTANCE_DIR/datastore/components/gcs-backup/cron-patch.yaml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: apigee-cassandra-backup
namespace: apigee
spec:
schedule: "${YOUR_BACKUP_SCHEDULE_CODE}" # To be modified
jobTemplate:
spec:
template:
spec:
containers:
- name: apigee-cassandra-backup
env:
- name: APIGEE_CLOUDPROVIDER
value: "GCP"
- name: DATABASE_STORAGE_BUCKET
value: "${CLOUD_STORAGE_BUCKET_PATH}" # To be modified. REQUIRED
volumeMounts:
- name: apigee-cassandra-backup
mountPath: /var/secrets/google
volumes:
- name: apigee-cassandra-backup
secret:
secretName: "apigee-cassandra-backup-and-restore-svc-account"
Analogamente, qualsiasi funzionalità/configurazione che richiede personalizzazioni può essere attivata rimuovendo il commento dal componente nel file kustomization.yaml del componente apigee. Inoltre, come richiesto, i valori corrispondenti per i campi in patch.yaml del componente devono essere impostati di conseguenza.
Breve spiegazione delle cartelle e dei file:
basi
Questa cartella contiene i modelli con la configurazione minima richiesta da ciascuno dei componenti di apigee. Non è necessario apportare modifiche ai manifest in questa cartella.
overlay
Questa cartella contiene i modelli dei componenti kustomize per le configurazioni aggiuntive
inizializzazione
namespaces.yaml
Lo spazio dei nomi in cui verranno installati i componenti del piano dati di Apigee. Il nome dello spazio dei nomi predefinito è apigee
certificati
Contiene le risorse Issuer
e Certificate
utilizzate per emettere certificati per i webhook. Contiene anche il Issuer
utilizzato per emettere certificati a vari pod per la comunicazione TLS.
rbac
Contiene i valori Role
, ClusterRole
, RoleBinding
e ClusterRoleBinding
che verranno utilizzati da vari componenti.
crds
Contains the definition of all the CRDs which are used by Apigee.
webhook
Contiene ValidatingWebhookConfiguration
e MutatingWebhookConfiguration
che verranno utilizzati per eseguire le convalide sulle risorse personalizzate.
In entrata
Contiene la configurazione applicabile a tutti i pod Ingress. Es. Modifica dell'intestazione comune, controllo di integrità e così via.
openshift
Contiene la definizione di SecurityContextConstraints di OpenShift.
Controller
apigee-controller
apigee-hybrid-config.yaml
Contiene un ConfigMap
fornito come input in apigee-controller-manager.yaml. Questo ConfigMap contiene configurazioni come imageHub
, imagePullSecrets
, forwardProxy
e altre ancora.
apigee-controller-deployment.yaml
Contiene due servizi per il controller e l'webhook, nonché il deployment per il controller. Se vuoi utilizzare un'immagine privata per il controller, devi apportare la modifica qui.
istiod
Apigee-istio-mesh-config.yaml Contiene la configurazione del mesh per Istio utilizzata da Apigee. Questo non è applicabile ad altre installazioni di ASM/Istio nel cluster.
apigee-ingressgateway-manager-deployment-patch.yaml
Contiene un servizio e il deployment di Istiod. Si tratta di un istiod privato utilizzato solo per i casi d'uso di Apigee.
instances/{instanceName}
datastore
apigee-datastore.yaml
Contiene la risorsa personalizzata ApigeeDatastore
che gestisce Cassandra.
secrets.yaml
Contiene le credenziali predefinite per il datastore.
redis
apigee-redis.yaml
Contiene la risorsa personalizzata ApigeeRedis
che gestisce Redis.
secrets.yaml
Contiene le credenziali predefinite per il datastore.
organizzazione
apigee-organization.yaml
Contiene la risorsa personalizzata ApigeeOrganization
che gestisce altri componenti secondari come connectAgent, watcherAndSynchronizer, MART,UDCA e Ingress.
secrets.yaml
Contiene i Secret
a cui viene fatto riferimento in apigee-organization.yaml. Alcuni secret vengono ignorati perché generati dallo script. Se disattivi la loro generazione, dovrai crearli manualmente
environments
Contiene tutto l'ambiente della tua organizzazione. Devi creare una cartella separata per ogni ambiente copiando quella già fornita e configurandola in base alle esigenze.
dev
apigee-environment.yaml
Contiene la risorsa personalizzata ApigeeEnvironment
che gestisce altri componenti secondari come il runtime.
secrets.yaml
Contiene i Secret
a cui viene fatto riferimento in apigee-environment.yaml. Alcuni secret vengono ignorati perché generati dallo script. Se disattivi la loro generazione, dovrai crearli manualmente
telemetria
apigee-telemetry.yaml
Contiene la risorsa personalizzata ApigeeTelemetry
.
secrets.yaml
Contiene i Secret
a cui si fa riferimento in apigee-telemetry.yaml. Alcuni secret vengono ignorati perché generati dallo script. Se disattivi la loro generazione, dovrai crearli manualmente
route-config
dev-envgroup
apigee-route-config.yaml
Contiene la risorsa personalizzata ApigeeRouteConfig
.
secrets.yaml
Contiene un Secret
a cui viene fatto riferimento in apigee-route-config.yaml. È commentato perché viene generato automaticamente dallo script apigee-hybrid-setup.sh e viene mantenuto lì per fornire un esempio di come dovrebbe essere il segreto se lo crei manualmente.
diagnostica
diagnostic-collector.yaml
Risorse che verranno utilizzate per avviare il deployment diagnostico
strumenti
apigee-hybrid-setup.sh
apigee-create-service-account.sh
dump-kubernetes.sh
apigee-pull-push.sh
Memorizzazione delle chiavi dell'account di servizio in cassette di sicurezza esterne
Vault (di Hashicorp) è un popolare sistema di gestione dei secret che offre diverse integrazioni con gli store di secret forniti da Google, Azure, AWS e altri. Hashicorp Vault ti consente di recuperare i secret da un'origine esterna e di utilizzarli nelle risorse Kubernetes. Esistono diversi modi per utilizzare Vault per recuperare i secret. I passaggi che seguono sono un esempio di base su come utilizzare il provider CSI di Vault per montare le chiavi dell'account di servizio Google Cloud archiviate in un'engine segreto fornita da Vault.
- Utilizzeremo Helm per installare le risorse correlate a Vault nel cluster. Segui i passaggi descritti in Installare Helm per configurare Helm nel sistema.
Segui i passaggi descritti in Installare il grafico Helm di Vault, ovvero:
Aggiunta del repository Hashicorp a Helm
helm repo add hashicorp https://helm.releases.hashicorp.com
Aggiorna i repository Helm
helm repo update
Installazione di Vault
helm install vault hashicorp/vault \ --set "server.dev.enabled=true" \ --set "injector.enabled=false" \ --set "csi.enabled=true"
Ora memorizzeremo il segreto in Vault.
Ottieni una shell all'interno del pod di sviluppo di Vault
kubectl exec -it vault-0 -- /bin/sh ```
In questo esempio utilizzeremo l'engine segreto chiave/valore per memorizzare i dati.
vault kv put secret/runtime-gcp-sa-key key="${BASE_64_ENCODED_KEY}"
Per verificare che la chiave sia stata memorizzata correttamente, utilizza:
vault kv get secret/runtime-gcp-sa-key
Configura l'autenticazione per consentire al pod di runtime di estrarre la chiave. Come discusso in Account di servizio Kubernetes, gli account di servizio Kubernetes forniscono l'identità ai pod e consentono loro di autenticarsi con altri sistemi.
Ottieni una shell all'interno del pod di sviluppo di Vault
kubectl exec -it vault-0 -- /bin/sh
Attiva il metodo di autenticazione Kubernetes
vault auth enable kubernetes
Scrivi la configurazione di autenticazione
vault write auth/kubernetes/config \ issuer="https://kubernetes.default.svc.cluster.local" \ token_reviewer_jwt="$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" \ kubernetes_host="https://$KUBERNETES_PORT_443_TCP_ADDR:443" \ kubernetes_ca_cert=@/var/run/secrets/kubernetes.io/serviceaccount/ca.crt \ disable_iss_validation=true
Crea il criterio di autenticazione
vault policy write apigee-runtime-app - <<EOF path "secret/data/runtime-gcp-sa-key" { capabilities = ["read"] } EOF
Associa il criterio all'account di servizio
vault write auth/kubernetes/role/apigee-runtime-role \ bound_service_account_names=apigee-runtime-sa \ bound_service_account_namespaces=${APIGEE_NAMESPACE} \ policies=apigee-runtime-app \ ttl=20m
Qui assumiamo che l'account di servizio si trovi nello spazio dei nomi apigee. Se hai un altro spazio dei nomi per l'installazione di apigee, utilizzerai quel nome.
Esci dalla shell all'interno di vault-0
exit
Installa il driver CSI del repository di secret
# Add repo to helm helm repo add secrets-store-csi-driver https://raw.githubusercontent.com/kubernetes-sigs/secrets-store-csi-driver/master/charts # Install driver in cluster helm install csi secrets-store-csi-driver/secrets-store-csi-driver
Crea una risorsa
SecretProviderClass
Kubernetes che fa riferimento al secret creato all'interno del vaultcat > spc-vault.yaml <<EOF apiVersion: secrets-store.csi.x-k8s.io/v1alpha1 kind: SecretProviderClass metadata: name: vault-apigee-runtime-gcp-sa-key spec: provider: vault parameters: vaultAddress: "http://vault.default:8200" roleName: "apigee-runtime-role" objects: | - objectName: "client_secret.json" secretPath: "secret/data/runtime-gcp-sa-key" secretKey: "key" EOF
Applica il
yaml
kubectl apply -f spc-vault.yaml
Crea l'account di servizio Kubernetes a cui abbiamo assegnato le autorizzazioni nel passaggio (4.e)
kubectl create serviceaccount -n ${APIGEE_NAMESPACE} apigee-runtime-sa
Modifica il file apigee-environment.yaml per l'ambiente e aggiungi le seguenti righe:
apiVersion: apigee.cloud.google.com/v1alpha2 kind: ApigeeEnvironment # existing content spec: name: {ENV_NAME} organizationRef: {ORG_NAME} components: runtime: # existing content pod containers: - name: apigee-runtime podServiceAccountName: apigee-runtime-sa # existing content volumeMounts: - name: secrets-store-inline mountPath: "/opt/apigee/sa" readOnly: true volumes: - name: secrets-store-inline csi: driver: secrets-store.csi.k8s.io readOnly: true volumeAttributes: secretProviderClass: "vault-apigee-runtime-gcp-sa-key"
Applica le modifiche:
kubectl apply -k ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}/environments/$ENV_NAME
Upgrade di Apigee hybrid
Dovresti aver completato tutti i requisiti indicati nella sezione Prerequisiti. Inoltre, ti consigliamo di eseguire un riavvio graduale di tutti i componenti per verificare se il cluster è integro. L'ordine dei riavvii sarà Cassandra, Redis, ApigeeOrganization e ApigeeEnvironment.
Crea backup
Crea una copia di backup della configurazione ibrida attuale. Il backup sarà necessario nel caso in cui tu debba eseguire il rollback dell'upgrade alla versione corrente.
tar -czvf apigee-hybrid-install.v-X.Y.Z.tar.gz $HYBRID_INSTALL_BASE_DIR
Crea il backup del database Cassandra. I backup di Cassandra sono un'importante misura di protezione contro gli scenari di emergenza.
Esegui l'upgrade della piattaforma Kubernetes, se necessario
Questo passaggio non è necessario ogni volta, ma dovrai eseguire l'upgrade della piattaforma Kubernetes, come kubernetes, openshift e componenti come cert-manager, cassandra e così via, se non è più supportata dalla versione più recente di apigee hybrid. La documentazione conterrà le versioni supportate di piattaforme e componenti.
Scaricare i file di configurazione
Scarica il repository e sostituisci le cartelle bases
e tools
nella configurazione di Apigee hybrid esistente con una più recente:
Clona il tag preview-1 del repository GitHub all'indirizzo
https://github.com/apigee/apigee-hybrid-install/releases/tag/preview-1
Il repository clonato avrà una struttura simile a quella descritta in Struttura della cartella di configurazione di Apigee Hybrid:
sostituisci la cartella di inizializzazione, degli strumenti e del controller nella configurazione di Apigee hybrid esistente.
export HYBRID_INSTALL_HOME=PATH_TO_PREVIOUS_HYBRID_INSTALL_DIRECTORY mv -f bases $HYBRID_INSTALL_HOME/bases mv -f tools $HYBRID_INSTALL_HOME/tools
Aggiorna le autorizzazioni dell'account di servizio, se necessario
Anche questo passaggio non è necessario ogni volta, ma se necessario dovrai creare un nuovo account di servizio o aggiornare le autorizzazioni degli account di servizio esistenti. La guida all'upgrade fornirà i dettagli su quali service account devono essere modificati o creati e quali sono i ruoli da aggiungere.
Se devi modificare le autorizzazioni degli account di servizio esistenti, utilizza il comando
gcloud
appropriato. La guida all'upgrade contiene i comandi e i ruoli dettagliati che devono essere aggiunti.gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-component@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/$NEW_ROLE"
Se la versione ibrida di apigee più recente potrebbe richiedere un account di servizio aggiuntivo per i componenti nuovi / esistenti, devi crearli. Puoi utilizzare lo script
apigee-create-service-account.sh
fornito nella cartella dello strumento per creare nuovi account di servizio. Poiché lo script sarà già aggiornato nel passaggio 4, conterrà i dettagli e un nuovo profilo necessari per un nuovo account di servizio da creare.Il nome del account di servizio appena creato deve essere indicato nella RP del componente corrispondente.
./tools/create-service-account --env prod --profile apigee-component
Esegui l'upgrade del controller
Modifica i campi della versione per i componenti elencati in ${INSTALL_DIR}/overlays/instances/$INSTANCE_DIR/kustomization.yaml
in base alla versione ibrida pertinente.
Ecco un file di esempio $INSTALL_DIR/overlays/instances/$INSTANCE_DIR/kustomization.yaml. Il valore del campo della versione deve essere aggiornato alla versione pertinente
resources:
- datastore/
- environments/
- organization/
- redis/
- route-config/
- telemetry/
patches:
- target:
group: apigee.cloud.google.com
version: v1alpha1
kind: ApigeeDatastore
patch: |-
- op: add
path: /spec/version
value: 1-6-1 (Modify the version)
- target:
group: apigee.cloud.google.com
version: v1alpha2
kind: ApigeeEnvironment
patch: |-
- op: add
path: /spec/version
value: 1-6-1 (Modify the version)
Segui la stessa procedura descritta in Creare risorse di inizializzazione e controller nel flusso di lavoro di installazione di Apigee hybrid. Puoi utilizzare lo script o seguire i passaggi manuali forniti per eseguire l'upgrade delle risorse di inizializzazione e del controller.
Aggiorna i componenti Kubernetes di Apigee
Dovrai apportare le seguenti modifiche: - In caso di modifiche all'architettura o all'introduzione di nuovi campi o al ritiro di vecchi campi, dovrai modificare le RP con le modifiche appropriate in base alle istruzioni fornite nella guida all'upgrade. - Come minimo, devi aggiornare i campi della versione all'interno dei CR (che indicano la versione di Apigee hybrid installata) alla versione più recente di Apigee hybrid.
Applica le modifiche per le richieste apigee. Per l'ambiente non di produzione, puoi applicare contemporaneamente tutte le modifiche ai componenti apigee
kubectl apply -f ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}
Rollback di Apigee Hybrid
Ripristina apigee-hybrid-setup
Vai alla directory contenente la versione precedente della configurazione di Apigee Hybrid. Se non è disponibile, ripristinalo dal file ZIP creato nel passaggio 1[link] durante l'upgrade ad apigee hybrid.
Esegui il rollback dei componenti Kubernetes
Applica le modifiche per le richieste di aggiornamento Apigee
kubectl apply -k ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}
Controller di rollback
Segui la stessa procedura per creare risorse e controller di inizializzazione nel flusso di lavoro di installazione di Apigee hybrid. Puoi utilizzare uno script o seguire i passaggi manuali forniti per eseguire il rollback delle risorse e del controller di inizializzazione.
Esegui la pulizia
Dovrai ripulire le nuove risorse aggiuntive create durante l'upgrade, ad esempio i nuovi componenti o gli account di servizio introdotti nella versione più recente di Hybrid. Nella guida all'upgrade verranno fornite informazioni su tutte le risorse da ripulire e sulla procedura da seguire.
Eliminazione di un ambiente
Di seguito sono riportati i passaggi per eliminare tutte le risorse relative a un ambiente dal cluster Kubernetes:
Recupera il nome della richiesta di modifica dell'ambiente. Per farlo, ottieni tutti gli ambienti:
kubectl get env -n ${APIGEE_NAMESPACE}
Memorizza il nome della risorsa nella variabile di ambiente
APIGEE_ENV
.Elimina le chiavi di crittografia dell'ambiente. Ad esempio, se non hai modificato il nome delle chiavi di crittografia, puoi eliminarle utilizzando:
kubectl delete secret -n ${APIGEE_NAMESPACE} $APIGEE_ENV-encryption-keys
Elimina i secret dell'account di servizio Google Cloud:
kubectl delete secret -n ${APIGEE_NAMESPACE} $(kubectl get env $APIGEE_ENV -n ${APIGEE_NAMESPACE} -o=jsonpath='{.spec.components.*.appServiceAccountSecretName}')
Elimina gli account di servizio Kubernetes:
kubectl delete secret -n ${APIGEE_NAMESPACE} $(kubectl get env $APIGEE_ENV -n ${APIGEE_NAMESPACE} -o=jsonpath='{.spec.components.*.podServiceAccountName}')
Elimina la risorsa personalizzata dell'ambiente Apigee:
kubectl -n ${APIGEE_NAMESPACE} delete env $APIGEE_ENV
Eliminazione di una configurazione ibrida
Di seguito sono riportati i passaggi per eliminare tutte le risorse relative ad apigee hybrid dal cluster Kubernetes:
Dovrai eliminare i job di configurazione degli utenti e degli schemi di apigee.
# To list all jobs in ${APIGEE_NAMESPACE} kubectl -n ${APIGEE_NAMESPACE} get jobs # To delete all jobs in ${APIGEE_NAMESPACE} kubectl -n ${APIGEE_NAMESPACE} delete jobs $(kubectl -n ${APIGEE_NAMESPACE} get jobs -o custom-columns=':.metadata.name')
Dovrai eliminare i componenti del dataplane ibrido apigee di cui è stato eseguito il deployment. Usa il seguente comando per eliminare tutti i componenti:
kubectl delete -k ${INSTALL_DIR}/overlays/instances/$INSTANCE_NAME
Questo passaggio è necessario solo se non hai utilizzato il nome predefinito per i secret degli account di servizio Kubernetes, per i secret degli account di servizio Google Cloud e così via. Se hai utilizzato i nomi predefiniti, questi verranno eliminati nel passaggio successivo, altrimenti dovrai eliminarli manualmente utilizzando i seguenti comandi:
kubectl delete secret -n ${APIGEE_NAMESPACE} $(kubectl get ${APIGEE_COMPONENT} ${APIGEE_COMPONENT_NAME} -n ${APIGEE_NAMESPACE} -o=jsonpath='{.spec.components.*.appServiceAccountSecretName}') kubectl delete secret -n ${APIGEE_NAMESPACE} $(kubectl get ${APIGEE_COMPONENT} ${APIGEE_COMPONENT_NAME} -n ${APIGEE_NAMESPACE} -o=jsonpath='{.spec.components.*.podServiceAccountName}')
In caso di OpenShift, dovrai eliminare le limitazioni del contesto di sicurezza (Security Context Constraints, SCC) create durante l'installazione di Apigee hybrid.
kubectl delete scc ${SECURITY_CONTEXT_CONSTRAINTS_NAME}
Esegui il comando seguente per eliminare ruoli, associazioni di ruoli, CRD, deployment del controller e così via.
kubectl delete -k ${INSTALL_DIR}/overlays/initialization/ingress kubectl delete -k ${INSTALL_DIR}/overlays/initialization/rbac kubectl delete -k ${INSTALL_DIR}/overlays/initialization/webhooks kubectl delete -k ${INSTALL_DIR}/overlays/initialization/crds kubectl delete -k ${INSTALL_DIR}/overlays/initialization/certificates
Esegui il comando seguente per eliminare il namespace apigee
kubectl delete -f ${INSTALL_DIR}/overlays/initialization/namespace.yaml
In alternativa, utilizza il comando:
kubectl delete $APIGEE_NAMESPACE
Installazione multi-istanza
La configurazione di più istanze si riferisce alla configurazione ibrida che può essere estesa a più regioni o anche all'interno delle stesse regioni. Apigee consiglia di organizzare le configurazioni della seconda istanza in una struttura di directory separata,poiché le configurazioni dell'ambiente (repliche e così via) sono invariabilmente diverse tra le istanze. Le configurazioni di ogni istanza sono disaccoppiate e organizzate in modo indipendente nelle rispettive strutture di cartelle.
Ad esempio, per una configurazione Active-Passive in uno scenario multi-regione, ti consigliamo di configurare una seconda regione in modalità di attesa attiva con dimensioni e configurazioni diverse.
Nella struttura di cartelle riportata di seguito, puoi creare una copia della directory instance1 denominata instance2 e modificare le configurazioni del datastore e dell'ingresso in base alle tue esigenze.
Struttura della cartella apigee-hybrid-setup
per la configurazione di più istanze.]
.
├── bases
│ ├── controllers
│ │ ├── apigee-controller
│ │ │ ├── apigee-controller-deployment.yaml
│ │ │ └── kustomization.yaml
│ │ └── istiod
│ │ ├── apigee-ingressgateway-manager-deployment.yaml
│ │ └── kustomization.yaml
│ └── initialization
│ ├── certificates
│ │ ├── certificates-and-issuers.yaml
│ │ └── kustomization.yaml
│ ├── crds
│ │ ├── customresourcedefinition-apigeedatastores.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeedeployments.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeeenvironments.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeeorganizations.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeeredis.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeerouteconfigs.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeeroutes.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeetelemetries.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-cassandradatareplications.apigee.cloud.google.com.yaml
│ │ └── kustomization.yaml
│ ├── ingress
│ │ ├── envoyfilter-1.11.yaml
│ │ └── kustomization.yaml
│ ├── openshift
│ │ ├── kustomization.yaml
│ │ └── scc.yaml
│ ├── rbac
│ │ ├── apigee-controller
│ │ │ ├── kustomization.yaml
│ │ │ └── rbac.yaml
│ │ └── apigee-embedded-ingress-controller
│ │ ├── cluster-role-bindings.yaml
│ │ ├── cluster-roles.yaml
│ │ ├── kustomization.yaml
│ │ └── service-account.yaml
│ └── webhooks
│ ├── kustomization.yaml
│ ├── mutatingwebhookconfiguration.yaml
│ └── validatingwebhookconfiguration.yaml
├── instances
│ └── instance1 (Add the 2nd instance under instances directory similar to instance1)
│ ├── datastore
│ │ ├── apigee-datastore.yaml
│ │ ├── components
│ │ │ ├── http-proxy
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── workload-identity
│ │ │ ├── apigee-workload-identities.yaml
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── environments
│ │ ├── kustomization.yaml
│ │ └── test
│ │ ├── apigee-environment.yaml
│ │ ├── components
│ │ │ ├── http-proxy
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── workload-identity
│ │ │ ├── apigee-workload-identities.yaml
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── kustomization.yaml
│ ├── organization
│ │ ├── apigee-organization.yaml
│ │ ├── components
│ │ │ ├── http-proxy
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── workload-identity
│ │ │ ├── apigee-workload-identities.yaml
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── redis
│ │ ├── apigee-redis.yaml
│ │ ├── components
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── workload-identity
│ │ │ ├── apigee-workload-identities.yaml
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── route-config
│ │ ├── kustomization.yaml
│ │ └── test-env-group
│ │ ├── apigee-route-config.yaml
│ │ ├── components
│ │ │ ├── http-and-non-sni-client
│ │ │ │ ├── apigee-route.yaml
│ │ │ │ └── kustomization.yaml
│ │ │ ├── http-client
│ │ │ │ ├── apigee-route.yaml
│ │ │ │ └── kustomization.yaml
│ │ │ └── non-sni-client
│ │ │ ├── apigee-route.yaml
│ │ │ └── kustomization.yaml
│ │ └── kustomization.yaml
│ └── telemetry
│ ├── apigee-telemetry.yaml
│ ├── components
│ │ ├── http-proxy
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── imagepullsecret
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── logger
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── metrics
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── nodeselector
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── workload-identity-logger
│ │ │ ├── apigee-workload-identities.yaml
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ └── workload-identity-metrics
│ │ ├── apigee-workload-identities.yaml
│ │ ├── kustomization.yaml
│ │ └── patch.yaml
│ └── kustomization.yaml
├── overlays
│ ├── controllers
│ │ ├── apigee-controller
│ │ │ ├── apigee-hybrid-config.yaml
│ │ │ ├── components
│ │ │ │ ├── imagepullsecret
│ │ │ │ │ ├── kustomization.yaml
│ │ │ │ │ └── patch.yaml
│ │ │ │ └── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── kustomization.yaml
│ │ ├── istiod
│ │ │ ├── apigee-ingressgateway-manager-deployment-patch.yaml
│ │ │ ├── apigee-istio-mesh-config.yaml
│ │ │ ├── components
│ │ │ │ ├── imagepullsecret
│ │ │ │ │ ├── kustomization.yaml
│ │ │ │ │ └── patch.yaml
│ │ │ │ └── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── kustomization.yaml
│ │ └── kustomization.yaml
│ ├── initialization
│ │ ├── certificates
│ │ │ ├── apigee-ingressgateway-manager-certificate.yaml
│ │ │ └── kustomization.yaml
│ │ ├── crds
│ │ │ └── kustomization.yaml
│ │ ├── ingress
│ │ │ └── kustomization.yaml
│ │ ├── namespace.yaml
│ │ ├── openshift
│ │ │ ├── kustomization.yaml
│ │ │ └── scc.yaml
│ │ ├── rbac
│ │ │ ├── apigee-controller
│ │ │ │ └── kustomization.yaml
│ │ │ ├── apigee-embedded-ingress-controller
│ │ │ │ └── kustomization.yaml
│ │ │ └── kustomization.yaml
│ │ └── webhooks
│ │ ├── kustomization.yaml
│ │ ├── mutatingwebhookconfiguration.yaml
│ │ └── validatingwebhookconfiguration.yaml
│ └── instances
│ └── instance1
│ ├── datastore
│ │ ├── apigee-datastore.yaml
│ │ ├── components
│ │ │ ├── http-proxy
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── openshift-scc
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── scc.yaml
│ │ │ └── workload-identity
│ │ │ ├── apigee-workload-identities.yaml
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── environments
│ │ ├── kustomization.yaml
│ │ └── test
│ │ ├── apigee-environment.yaml
│ │ ├── components
│ │ │ ├── http-proxy
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── workload-identity
│ │ │ ├── apigee-workload-identities.yaml
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── kustomization.yaml
│ ├── organization
│ │ ├── apigee-organization.yaml
│ │ ├── components
│ │ │ ├── http-proxy
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── workload-identity
│ │ │ ├── apigee-workload-identities.yaml
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── redis
│ │ ├── apigee-redis.yaml
│ │ ├── components
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── workload-identity
│ │ │ ├── apigee-workload-identities.yaml
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── route-config
│ │ ├── kustomization.yaml
│ │ └── test-envgroup
│ │ ├── apigee-route-config.yaml
│ │ ├── components
│ │ │ ├── http-and-non-sni-client
│ │ │ │ ├── apigee-route.yaml
│ │ │ │ └── kustomization.yaml
│ │ │ ├── http-client
│ │ │ │ ├── apigee-route.yaml
│ │ │ │ └── kustomization.yaml
│ │ │ └── non-sni-client
│ │ │ ├── apigee-route.yaml
│ │ │ └── kustomization.yaml
│ │ └── kustomization.yaml
│ └── telemetry
│ ├── apigee-telemetry.yaml
│ ├── components
│ │ ├── http-proxy
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── imagepullsecret
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── logger
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── metrics
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── nodeselector
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── openshift-scc
│ │ │ ├── kustomization.yaml
│ │ │ └── scc.yaml
│ │ ├── workload-identity-logger
│ │ │ ├── apigee-workload-identities.yaml
│ │ │ └── kustomization.yaml
│ │ └── workload-identity-metrics
│ │ ├── apigee-workload-identities.yaml
│ │ ├── kustomization.yaml
│ │ └── patch.yaml
│ └── kustomization.yaml
├── README.md
├── templates
│ ├── ingress-certificate.yaml
│ ├── ingress-cert-secret.yaml
│ └── service-account-key-secret.yaml
└── tools
├── apigee-hybrid-setup.sh
├── common.sh
├── create-service-account.sh
└── dump_kubernetes.sh
Configurazione di più istanze su GKE
Prerequisiti
Prima di configurare più istanze di ibrida, devi aver completato i seguenti prerequisiti:
- Configurare cluster Kubernetes in più regioni(uguali o diverse) con blocchi CIDR diversi
- Configurare la comunicazione tra regioni
- Apri le porte Cassandra 7000 e 7001 tra i cluster Kubernetes in tutte le regioni (7000 può essere utilizzata come opzione di backup durante la risoluzione dei problemi). Consulta anche Configurare le porte.
Puoi utilizzare uno strumento come ntpdate per verificare che le ore del server siano sincronizzate.
Configura l'host seed multi-region
- Crea una copia della cartella $INSTANCE_NAME dall'istanza esistente e aggiungila alla cartella delle istanze.
- Modifica il valore del campo dello spazio dei nomi se è diverso dallo spazio dei nomi di instance1.
- Segui i passaggi descritti in Specificare i certificati TLS di ingresso per modificare la configurazione di ingresso per l'altra istanza.
Per informazioni su come configurare l'IP del bilanciatore del carico per l'altra istanza, consulta la sezione Gestire il gateway di ingresso Apigee.
Imposta il contesto kubectl sul cluster originale prima di recuperare il nome del seme
kubectl config use-context original-cluster-name
Esegui il seguente comando kubectl per identificare un indirizzo host iniziale per Cassandra nella regione corrente.
kubectl get pods -o wide -n apigee -l app=apigee-cassandra
Qualsiasi indirizzo IP del pod restituito dal comando precedente può essere considerato come host seed multiregione.
Nella seconda istanza, configura il valore di multiRegionSeedHost nel CR del datastore apigee in ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}/datastore/apigee-datastore.yaml
Configura la nuova istanza
Imposta il contesto sul cluster esistente
kubectl config use-context existing-cluster-name
Esporta il secret apigee-ca in un file
kubectl -n cert-manager get secret apigee-root-certificate -o yaml > apigee-root-certificate.yaml
Imposta il contesto sul nome del cluster della nuova regione:
kubectl config use-context NEW_CLUSTER_NAME
Importa il secret nel nuovo cluster
kubectl -n cert-manager apply -f apigee-root-certificate.yaml
Installa hybrid nella nuova istanza (regione) seguendo i passaggi descritti in Creare risorse di inizializzazione e controller.
Configura Cassandra su tutti i pod nei nuovi data center. Recupera apigeeorg dal cluster con il seguente comando:
kubectl get apigeeorg -n apigee -o json | jq ".items[].metadata.name"
Crea un file YAML (risorsa personalizzata) per la replica dei dati di Cassandra. Il file può avere qualsiasi nome. Nei seguenti esempi, il file avrà il nome datareplication.yaml. Il file deve contenere quanto segue
apiVersion: apigee.cloud.google.com/v1alpha1 kind: CassandraDataReplication metadata: name: REGION_EXPANSION namespace: NAMESPACE spec: organizationRef: APIGEEORG_VALUE force: false source: region: SOURCE_REGION
Dove:
- REGION_EXPANSION è il nome che assegni a questi metadati. Puoi scegliere un nome come "cassandra-data-replication"
- NAMESPACE è lo stesso spazio dei nomi scelto per la seconda istanza. Di solito è "apigee".
- APIGEEORG_VALUE è il valore restituito dal comando kubectl get apigeeorg -n apigee -o json | jq ".items[].metadata.name" nel passaggio precedente.
- SOURCE_REGION è il valore del valore del data center Cassandra dallo stato di nodetool del cluster di origine.
Applica CassandraDataReplication con il seguente comando:
kubectl apply -f datareplication.yaml
Verifica lo stato della ricostruzione utilizzando il seguente comando.
kubectl -n apigee get apigeeds -o json | jq ".items[].status.cassandraDataReplication"
Il risultato dovrebbe essere simile al seguente
{ "rebuildDetails": { "apigee-cassandra-default-0": { "state": "complete", "updated": 1623105760 }, "apigee-cassandra-default-1": { "state": "complete", "updated": 1623105765 }, "apigee-cassandra-default-2": { "state": "complete", "updated": 1623105770 } }, "state": "complete", "updated": 1623105770 }
Verifica le procedure di ricostruzione dai log. Verifica anche le dimensioni dei dati utilizzando il comando nodetool status:
kubectl logs apigee-cassandra-default-0 -f -n apigee
Fai riferimento a datastore/secrets.yaml per JMX_user e JMX_password
kubectl exec apigee-cassandra-default-0 -n apigee -- nodetool -u JMX_user -pw JMX_password status
Rimuovi
multiRegionSeedHost
dal CR del datastore apigee ed esegui il comando seguente per applicare la modificakubectl apply k apply -k ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}/datastore
Controlla lo stato del cluster Cassandra
Il seguente comando è utile per verificare se la configurazione del cluster è andata a buon fine in due data center. Il comando controlla lo stato di nodetool per le due regioni.
kubectl exec apigee-cassandra-default-0 -n apigee -- nodetool -u JMX_user -pw JMX_password status
Datacenter: us-central1 ======================= Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.12.1.45 112.09 KiB 256 100.0% 3c98c816-3f4d-48f0-9717-03d0c998637f ra-1 UN 10.12.4.36 95.27 KiB 256 100.0% 0a36383d-1d9e-41e2-924c-7b62be12d6cc ra-1 UN 10.12.5.22 88.7 KiB 256 100.0% 3561f4fa-af3d-4ea4-93b2-79ac7e938201 ra-1 Datacenter: us-west1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.0.4.33 78.69 KiB 256 100.0% a200217d-260b-45cd-b83c-182b27ff4c99 ra-1 UN 10.0.0.21 78.68 KiB 256 100.0% 9f3364b9-a7a1-409c-9356-b7d1d312e52b ra-1 UN 10.0.1.26 15.46 KiB 256 100.0% 1666df0f-702e-4c5b-8b6e-086d0f2e47fa ra-1
Risoluzione dei problemi
Guida alla supportabilità, alla diagnosi e alla risoluzione dei problemi
Pulizia manuale dopo l'utilizzo di forceDelete nella configurazione di Apigee Hybrid in più regioni
- Nell'esempio seguente sono presenti due regioni:
us-east1
eus-west1
. - Nella regione
us-west1
, il datastore apigee è stato eliminato utilizzando l'eliminazione forzata. - Nella regione
us-east1
, Cassandra è ancora in esecuzione. Verifica che
apigeeds
venga eliminato utilizzando il comandokubectl get apigeeds -n apigee No resources found in apigee namespace.
Modifica il contesto kubectl nell'altra regione in cui il cluster Cassandra è ancora attivo (qui
us-east1
).Verifica che il data store sia in stato di esecuzione
kubectl get apigeeds -n apigee NAME STATE AGE default running 23h
Esegui in uno dei pod Cassandra nella regione up (qui
us-east1
)kubectl exec -it -n apigee apigee-cassandra-default-0 -- bash apigee@apigee-cassandra-default-0:~$
Controlla lo stato di nodetool, che mostrerà tutti i nodi inattivi nella regione eliminata (qui
us-west1
)apigee@apigee-cassandra-default-0:~$ nodetool -u ${APIGEE_JMX_USER} -pw ${APIGEE_JMX_PASSWORD} status
Datacenter: us-east1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns Host ID Rack UN 10.52.0.212 685.01 KiB 256 ? e1aa61e3-4eae-4549-9b58-506d495d87ab ra-1 UN 10.52.0.72 606.75 KiB 256 ? 477dfc03-f93e-40ea-810a-d15769822ad5 ra-1 UN 10.52.0.104 648.3 KiB 256 ? a8854cff-c2e3-4f0c-a342-e692787efcab ra-1 Datacenter: us-west1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns Host ID Rack DN 10.60.0.143 567.06 KiB 256 ? 355d6ace-ab77-42cb-8138-9993bfd62d0e ra-1 DN 10.60.0.40 535.99 KiB 256 ? 4ed2c903-ff56-40fa-a15e-80a3de3cb22d ra-1 DN 10.60.0.17 573.08 KiB 256 ? f9a50d19-c04a-4d0d-a088-612384bed9f5 ra-1
Rimuovi tutti i nodi nella regione eliminata (qui
us-west1
)apigee@apigee-cassandra-default-0:~$ nodetool -u $APIGEE_JMX_USER -pw $APIGEE_JMX_PASSWORD removenode 355d6ace-ab77-42cb-8138-9993bfd62d0e apigee@apigee-cassandra-default-0:~$ nodetool -u $APIGEE_JMX_USER -pw $APIGEE_JMX_PASSWORD removenode 4ed2c903-ff56-40fa-a15e-80a3de3cb22d apigee@apigee-cassandra-default-0:~$ nodetool -u $APIGEE_JMX_USER -pw $APIGEE_JMX_PASSWORD removenode f9a50d19-c04a-4d0d-a088-612384bed9f5
Verifica che non siano rimasti nodi della regione eliminata (qui
us-west1
)apigee@apigee-cassandra-default-0:~$ nodetool -u $APIGEE_JMX_USER -pw $APIGEE_JMX_PASSWORD status
Datacenter: us-east1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns Host ID Rack UN 10.52.0.212 699.71 KiB 256 ? e1aa61e3-4eae-4549-9b58-506d495d87ab ra-1 UN 10.52.0.72 586.77 KiB 256 ? 477dfc03-f93e-40ea-810a-d15769822ad5 ra-1 UN 10.52.0.104 623.6 KiB 256 ? a8854cff-c2e3-4f0c-a342-e692787efcab ra-1
Al termine, elimina il job di configurazione utente nella regione up (qui
us-east1
). Il job verrà ricreato automaticamente entro pochi secondi.kubectl get jobs -n apigee
NAME COMPLETIONS DURATION AGE apigee-cassandra-schema-setup-apigee--0d2504c 0/1 5m54s 5m54s apigee-cassandra-user-setup--apigee--0d2504c 0/1 7s 7s
kubectl delete job apigee-cassandra-user-setup--apigee--0d2504c
Attendi il completamento del job di configurazione dell'utente
kubectl get jobs -n apigee
NAME COMPLETIONS DURATION AGE apigee-cassandra-schema-setup-apigee--0d2504c 1/1 5m54s 5m54s apigee-cassandra-user-setup--apigee--0d2504c 1/1 7m 7m
Verifica che gli spazi chiavi non abbiano la regione eliminata.
Crea un pod di debug di Cassandra.
Accedi a cqlsh nel pod di debug utilizzando il comando
apigee@cassandra-debug-client:~$ cqlsh apigee-cassandra-default-0.apigee-cassandra-default.apigee.svc.cluster.local -u ddl_user --ssl Password:
Verifica che la regione
us-west1
sia rimossa da tutti gli spazi chiaviddl_user@cqlsh> SELECT * FROM system_schema.keyspaces;
keyspace_name | durable_writes | replication ---------------------------+----------------+----------------------------------------------------------------------------------- cache_prince_hybrid_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'us-east1': '3'} rtc_prince_hybrid_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'us-east1': '3'} system_auth | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'us-east1': '3'} system_schema | True | {'class': 'org.apache.cassandra.locator.LocalStrategy'} quota_prince_hybrid_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'us-east1': '3'} kms_prince_hybrid_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'us-east1': '3'} system_distributed | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'us-east1': '3'} system | True | {'class': 'org.apache.cassandra.locator.LocalStrategy'} perses | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'us-east1': '3'} kvm_prince_hybrid_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'us-east1': '3'} system_traces | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'us-east1': '3'} (11 rows)