Questa guida descrive come installare ed eseguire il deployment di Apigee Edge for Private Cloud e dei proxy API in un ambiente Google Distributed Cloud (GDC) air-gap. Le offerte GDC con air gap, tra cui Apigee Edge per Private Cloud, non richiedono la connettività a Google Cloud per gestire l'infrastruttura e i servizi. Puoi utilizzare un control plane locale ospitato nei tuoi locali per tutte le operazioni. Per una panoramica di GDC con air gap, consulta la panoramica.
Questa guida è destinata agli operatori Apigee che conoscono Apigee Edge for Private Cloud e hanno una conoscenza di base di Kubernetes.
Panoramica dei passaggi richiesti
Per installare e implementare Apigee Edge for Private Cloud in un ambiente GDC air-gap, l'operatore deve completare i seguenti passaggi:
- Ottieni i file di installazione per Apigee Edge for Private Cloud.
- Configura un bucket di archiviazione.
- Configura un nodo repository.
- Esegui il deployment dei nodi Apigee.
- Configura un nodo di controllo.
- Configura Ansible.
- Installa i componenti Apigee.
- Esegui il deployment di pod e servizi.
- Aggiorna gli IP dell'uploader e del forwarder Fluent Bit.
- Esegui l'onboarding di un'organizzazione Apigee.
- Verifica la connettività HTTP.
- Configura TLS e testa HTTPS.
Prima di iniziare
Prima di iniziare la procedura di installazione, completa i seguenti passaggi:
- Crea un progetto GDC da utilizzare per l'installazione, se non ne hai già uno. Per saperne di più, consulta Creare un progetto.
- Scarica, installa
e configura
la CLI
gdcloud
su una workstation connessa a GDC o all'interno dell'ambiente di implementazione continua della tua organizzazione. - Ottieni le credenziali necessarie per utilizzare l'interfaccia a riga di comando
gdcloud
e l'APIkubectl
. Consulta la sezione Autenticare l'account per l'accesso per i passaggi necessari. - Conferma il nome utente e la password di Apigee che hai ricevuto dal tuo account manager Apigee.
- Conferma il nome del cluster di amministrazione GKE e del cluster utente GKE.
Requisiti di capacità
L'installazione di Apigee Edge for Private Cloud su GDC richiede diverse macchine virtuali (VM) con allocazioni di risorse specifiche. Queste VM comportano costi in base alle risorse di calcolo (RAM, core vCPU) e allo spazio di archiviazione su disco locale. Per ulteriori informazioni, vedi Prezzi.
La tabella seguente mostra i requisiti delle risorse per ogni VM:
Tipo di VM | RAM | Core vCPU | Archiviazione disco |
---|---|---|---|
Nodo Repo | 8 GB | Core vCPU | 64 GB |
Nodo di controllo | 8 GB | Core vCPU | 64 GB |
Nodi di gestione delle API Apigee 1, 2 e 3 | 16 GB di RAM | 8 core vCPU | 670 GB |
Nodi di gestione delle API Apigee 4 e 5 | 16 GB di RAM | 8 core vCPU | 500 GB - 1TB |
Ruoli e autorizzazioni
Per eseguire il deployment di Apigee Edge for Private Cloud in un ambiente GDC air-gap, sono necessari i seguenti ruoli e autorizzazioni:
- Amministratore della piattaforma (PA): assegna il ruolo
IAM Admin
. - Operatore applicazione (AO): assegna i seguenti ruoli:
Harbor Instance Admin
: Dispone dell'accesso completo per gestire le istanze Harbor in un progetto.LoggingTarget Creator
: crea risorse personalizzateLoggingTarget
nello spazio dei nomi del progetto.LoggingTarget Editor
: Modifica le risorse personalizzateLoggingTarget
nello spazio dei nomi del progetto.Project Bucket Admin
: gestisce i bucket di archiviazione e gli oggetti all'interno dei bucketProject Grafana Viewer
: Accede all'istanza di monitoraggio nello spazio dei nomi del progetto.Project NetworkPolicy Admin
: Gestisce le policy di rete del progetto nello spazio dei nomi del progetto.Project VirtualMachine Admin
: Gestisce le macchine virtuali nello spazio dei nomi del progetto.Secret Admin
: gestisce i secret Kubernetes nei progetti.Service Configuration Admin
: Dispone dell'accesso in lettura e scrittura alle configurazioni del servizio all'interno di uno spazio dei nomi del progetto.Namespace Admin
: Gestisce tutte le risorse all'interno degli spazi dei nomi del progetto.
- Apigee su GDC air-gapped non include server DNS e utilizza la risoluzione DNS locale come soluzione alternativa. Se Apigee su GDC air-gapped viene implementato in un ambiente con server DNS esterni, sostituisci i passaggi che configurano il DNS locale con la configurazione delle voci DNS nei server DNS.
- Apigee su GDC air-gapped non include un server SMTP autonomo. Puoi configurare un server SMTP in qualsiasi momento per attivare le notifiche email in uscita per la creazione dell'account e i reimpostazioni della password dal server di gestione e dalla UI di gestione. Le API di gestione rimangono disponibili per la gestione degli account utente Apigee. Per ulteriori informazioni, consulta Configurazione del server SMTP Edge.
- Apigee su GDC air-gapped non implementa il rilevamento e la prevenzione delle intrusioni. Installa e configura un sistema di prevenzione delle intrusioni (IPS), ad esempio Snort, per rilevare e prevenire attività dannose.
- Sistema operativo:Rocky Linux 8
- Dimensioni macchina: 8 GB di RAM; 2 core vCPU; 64 GB di spazio di archiviazione su disco locale
- Connettività:
- Ingresso:TCP 22 (SSH)
- Traffico in uscita:internet
- Consulta le note di rilascio di Apigee Edge per Private Cloud per la versione ufficiale più recente supportata per GDC, come indicato nella colonna Edge per Private Cloud.
- Scarica il file di configurazione di Edge:
curl https://software.apigee.com/apigee/tarball/VERSION/rocky8/archive.tar -o /tmp/archive.tar -u 'APIGEE_USER:APIGEE_PASSWORD'
Dove:
- APIGEE_USER è il nome utente che hai ricevuto per l'organizzazione Apigee.
- APIGEE_PASSWORD è la password che hai ricevuto per l'organizzazione Apigee.
- VERSION è la versione di Apigee Edge for Private Cloud da utilizzare su GDC che intendi installare, ad esempio 4.53.01.
- Scarica l'ultimo file
bootstrap_VERSION.sh
di Apigee Edge for Private Cloud in/tmp/bootstrap_VERSION.sh
:curl https://software.apigee.com/bootstrap_VERSION.sh -o /tmp/bootstrap_VERSION.sh
Dove VERSION è l'ultima versione di Apigee Edge for Private Cloud da utilizzare su GDC che intendi installare, ad esempio 4.53.01.
- Installa l'utilità e le dipendenze di Edge
apigee-service
:sudo bash /tmp/bootstrap_VERSION.sh apigeeuser=APIGEE_USER apigeepassword=APIGEE_PASSWORD
Dove:
- APIGEE_USER è il nome utente che hai ricevuto per l'organizzazione Apigee.
- APIGEE_PASSWORD è la password che hai ricevuto per l'organizzazione Apigee.
- VERSION è la versione di Apigee Edge for Private Cloud da utilizzare su GDC che intendi installare.
- Esegui lo script di configurazione sul nodo collegato:
chmod a+x connected-node_setup.sh \ ./connected-node_setup.sh
In questo passaggio, lo script genera i file necessari nelle seguenti posizioni (ad esempio, per la versione 4.53.01):
/opt/apigee/data/apigee-mirror/apigee-4.53.01.tar.gz
/tmp/apigee-nginx/apigee-nginx.tar
/tmp/fluentbit/fluentbit.tar
/tmp/postgresql14/postgresql14.tar
/tmp/ansible-rpms.tar
/tmp/apigee-repos.tar
- Trasferisci i file richiesti dal nodo connesso a una macchina locale tramite SSH:
mkdir apigee-files
cd apigee-files
for file in /opt/apigee/data/apigee-mirror/apigee-4.53.01.tar.gz /tmp/ansible-rpms.tar /tmp/apigee-nginx/apigee-nginx.tar /tmp/fluentbit/fluentbit.tar /tmp/postgresql14/postgresql14.tar /tmp/apigee-repos.tar; do scp -i SSH_PRIVATE_KEY_FILE USER@CONNECTED_NODE_IP:$file . done
Dove:
- SSH_PRIVATE_KEY_FILE è il percorso del file della chiave privata SSH.
- USER è il nome utente del nodo connesso.
- CONNECTED_NODE_IP è l'indirizzo IP del nodo connesso.
- Esegui l'autenticazione sul cluster dell'amministratore dell'organizzazione:
gdcloud auth login --login-config-cert WEB_TLS_CERT
gdcloud clusters get-credentials ORG_ADMIN_CLUSTER
Dove:
- WEB_TLS_CERT è il percorso del certificato TLS web.
- ORG_ADMIN_CLUSTER è il nome del cluster GKE di amministrazione dell'organizzazione.
- Imposta le variabili di ambiente del progetto e del bucket:
export PROJECT=PROJECT
export BUCKET=BUCKET_NAME
Dove:
- PROJECT è il nome del tuo progetto GDC.
- BUCKET_NAME è il nome del bucket che vuoi creare per archiviare i file di backup di Apigee Edge for Private Cloud.
- Applica la configurazione del bucket:
kubectl apply -f - <<EOF apiVersion: object.GDC.goog/v1 kind: Bucket metadata: name: $BUCKET namespace:$PROJECT spec: description: bucket for Apigee backup files storageClass: Standard bucketPolicy : lockingPolicy : defaultObjectRetentionDays: 30 EOF
Questa configurazione crea un bucket con un periodo di conservazione di 30 giorni.
- Crea un service account nel progetto:
gdcloud iam service-accounts create $BUCKET-sa \ --project=$PROJECT
- Crea il ruolo e l'associazione dei ruoli per generare un secret per l'accesso al bucket:
kubectl apply -f - <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: $BUCKET-role namespace: $PROJECT rules: - apiGroups: - object.gdc.goog resourceNames: - $BUCKET resources: - buckets verbs: - get - read-object - write-object --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: $BUCKETrolebinding namespace: $PROJECT roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: $BUCKET-role subjects: - kind: ServiceAccount name: $BUCKET-sa namespace: $PROJECT EOF
- Ottieni l'ID chiave di accesso e la chiave dal secret:
export BUCKET_SECRET=$(kubectl get secret -n $PROJECT -o jsonpath="{range .items[*]}{.metadata.name}{':'}{.metadata.annotations['object\.GDC\.goog/subject']}{'\n'}{end}" | grep $BUCKET | tail -1 | cut -f1 -d :)
echo "access-key-id=$(kubectl get secret -n $PROJECT $BUCKET_SECRET -o jsonpath="{.data['access-key-id']}")"
echo "access-key=$(kubectl get secret -n $PROJECT $BUCKET_SECRET -o jsonpath="{.data['secret-access-key']}")"
L'output dovrebbe essere simile al seguente:
access-key-id=RFdJMzRROVdWWjFYNTJFTzJaTk0= access-key=U3dSdm5FRU5WdDhMckRMRW1QRGV0bE9MRHpCZ0Ntc0cxVFJQdktqdg==
- Crea un secret da utilizzare per il caricamento nel cluster GKE utente:
- Esegui l'autenticazione sul cluster GKE utente:
gdcloud clusters get-credentials USER_CLUSTER
dove USER_CLUSTER è il nome del cluster GKE dell'utente.
- Applica la configurazione del secret:
kubectl apply -f - <<EOF apiVersion: v1 kind: Secret metadata: namespace: $PROJECT name: $BUCKET-secret type: Opaque data: access-key-id: ACCESS_KEY_ID access-key: ACCESS_KEY EOF
Dove:
- ACCESS_KEY_ID è l'ID chiave di accesso ottenuto nel passaggio precedente.
- ACCESS_KEY è la chiave di accesso ottenuta nel passaggio precedente.
- Esegui l'autenticazione sul cluster GKE utente:
- Recupera l'endpoint di archiviazione, il nome di dominio completo (FQDN) e la regione del bucket:
- Esegui l'autenticazione sul cluster dell'amministratore dell'organizzazione:
gdcloud clusters get-credentials ORG_ADMIN_CLUSTER
dove ORG_ADMIN_CLUSTER è il nome del cluster GKE di amministrazione dell'organizzazione.
- Recupera l'endpoint di archiviazione, il nome di dominio completo (FQDN) e la regione del bucket:
kubectl get buckets ${BUCKET} -n $PROJECT -o jsonpath="{'endpoint: '}{.status.endpoint}{'\n'}{'bucket: '}{.status.fullyQualifiedName}{'\n'}{'region: '}{.status.region}{'\n'}"
L'output dovrebbe essere simile al seguente:
endpoint: https://objectstorage.gpu-org.cookie.sesame.street bucket: ez9wo-apigee-backup-bucket region: cookie
- Esegui l'autenticazione sul cluster dell'amministratore dell'organizzazione:
- Aggiorna i seguenti valori nel file
apigee/helm_user_cluster/values-cookie-air-gapped.yaml
:objectstorekeyname: "apigee-backup-bucket-secret" objectstoreurl: "BUCKET_ENDPOINT" objectstorebucket: "BUCKET_FQDN"
Dove:
- BUCKET_ENDPOINT è l'endpoint del bucket ottenuto nel passaggio precedente.
- BUCKET_FQDN è il nome di dominio completo del bucket ottenuto nel passaggio precedente.
- Aggiorna
apigee/helm_user_cluster/values-cookie-air-gapped.yaml
come segue:repo_node: enabled: true apigee_node: enabled: false control_node: enabled: false
Assicurati che
repo_node
sia abilitato e cheapigee_node
econtrol_node
siano disattivati. Il deployment di questi nodi viene eseguito in un passaggio successivo. - Recupera le credenziali per il cluster di amministrazione dell'organizzazione:
gdcloud clusters get-credentials ORG_ADMIN_CLUSTER
dove ORG_ADMIN_CLUSTER è il nome del cluster GKE di amministrazione dell'organizzazione.
- Crea un ambiente virtuale Python:
python3 -m venv venv / source venv/bin/activate
- Esegui lo script di deployment per creare il nodo del repository:
python apigee/solution_deploy.py gdc-air-gapped
- Configura SSH per il nodo del repository:
export NODE=repo
kubectl create -n $PROJECT -f - <<EOF apiVersion: virtualmachine.GDC.goog/v1 kind: VirtualMachineAccessRequest metadata: generateName: $NODE- spec: ssh: key: | "cat SSH_PUBLIC_KEY_FILE" ttl: 24h user: admin vm: $NODE EOF
dove SSH_PUBLIC_KEY_FILE è il nome del file contenente la chiave SSH pubblica.
- Ottieni l'indirizzo IP esterno del nodo del repository:
kubectl get virtualmachineexternalaccess -n $PROJECT $NODE -ojsonpath='{.status.ingressIP}'
- Ottieni l'indirizzo IP interno del nodo del repository:
kubectl get virtualmachines.virtualmachine.gdc.goog -n $PROJECT $NODE -ojsonpath='{.status.network.interfaces[1].ipAddresses[0]}'
apigee-4.53.01
apigee-nginx.tar
postgresql14.tar
fluentbit.tar
ansible-rpms.tar
apigee-repos.tar
- Copia il file della chiave privata SSH nel nodo del repository:
scp -i SSH_PRIVATE_KEY_FILE ~/apigee-files/* admin@REPO_EXTERNAL_IP:/tmp
Dove:
- SSH_PRIVATE_KEY_FILE è il nome del file contenente la chiave SSH privata.
- REPO_EXTERNAL_IP è l'indirizzo IP esterno del nodo del repository ottenuto nel passaggio precedente.
- Carica la cartella contenente le configurazioni di Fluent Bit nel nodo del repository:
scp -i SSH-PRIVATE-KEY-FILE -r apigee/scripts/fluent-bit admin@REPO_EXTERNAL_IP:/tmp/fluent-bit
Dove:
- SSH_PRIVATE_KEY_FILE è il nome del file contenente la chiave SSH privata.
- REPO_EXTERNAL_IP è l'indirizzo IP esterno del nodo del repository.
- Copia
apigee/scripts/repo_setup.sh
nel nodo del repository. - Nello script, sostituisci REPO_USER e REPO_PASSWORD con il nome utente e la password che preferisci per il repository mirror.
- Esegui lo script:
chmod a+x repo_setup.sh
./repo_setup.sh
Se si verifica un errore
No such file or directory
, esegui di nuovo lo script. - Testa la connessione al repository mirror localmente dal nodo del repository.
curl http://REPO_USER:REPO_PASSWORD@REPO_INTERNAL_IP:3939/bootstrap_VERSION.sh -o /tmp/bootstrap_VERSION.sh
curl http://REPO_USER:REPO_PASSWORD@REPO_INTERNAL_IP:3939/apigee/release/VERSION/repodata/repomd.xml
Sostituisci VERSION con la versione di Apigee Edge for Private Cloud che vuoi installare.
- Sostituisci
REPO_INTERNAL_IP
,REPO_USER_NAME
eREPO_PASSWORD
inapigee/helm/scripts/apigee_setup.sh
con i valori desiderati. - Esporta i valori come variabili di ambiente:
export REPO_IP=REPO_INTERNAL_IP
export REPO_USER=REPO_USER_NAME
export REPO_PASSWORD=REPO_PASSWORD
- Attiva
apigee_node
inapigee/helm/values-cookie-air-gapped.yaml
come mostrato:apigee_node: enabled: true
- Esegui lo script di deployment per creare i nodi Apigee:
source venv/bin/activate
python apigee/solution_deploy.py gdc-air-gapped
- Esegui l'autenticazione sul cluster dell'amministratore dell'organizzazione:
gdcloud clusters get-credentials ORG_ADMIN_CLUSTER
dove ORG_ADMIN_CLUSTER è il nome del cluster GKE di amministrazione dell'organizzazione.
- Crea una chiave SSH per ogni nodo:
for i in 1 2 3 4 5; do kubectl create -n $PROJECT -f - <<EOF apiVersion: virtualmachine.GDC.goog/v1 kind: VirtualMachineAccessRequest metadata: generateName: node$i spec: ssh: key: | "cat SSH_PUBLIC_KEY_FILE" ttl: 24h user: admin vm: node$i EOF done
dove SSH_PUBLIC_KEY_FILE è il nome del file contenente la chiave SSH pubblica.
- Ottieni gli indirizzi IP esterni per i nodi Apigee:
for i in 1 2 3 4 5; do kubectl get virtualmachineexternalaccess -n $PROJECT node$i -ojsonpath='{.status.ingressIP}' echo done
- Ottieni gli indirizzi IP interni per i nodi Apigee:
for i in 1 2 3 4 5; do kubectl get virtualmachines.virtualmachine.gdc.goog -n $PROJECT node$i -ojsonpath='{.status.network.interfaces[1].ipAddresses[0]}' echo done
- (Facoltativo) Controlla se gli script di avvio vengono eseguiti correttamente sui nodi Apigee:
- Connettiti al nodo tramite SSH ed esegui il seguente comando:
sudo journalctl -u cloud-final -f
- Cerca log simili ai seguenti:
Aug 29 18:17:00 172.20.128.117 cloud-init[1895]: Complete! Aug 29 18:17:00 172.20.128.117 cloud-init[1895]: Finished running the command: . /var/lib/google/startup-scripts/apigee-setup
- Connettiti al nodo tramite SSH ed esegui il seguente comando:
- Sostituisci
REPO_INTERNAL_IP
,REPO_USER_NAME
eREPO_PASSWORD
inapigee/helm/scripts/control_setup.sh
con i valori desiderati. - Attiva
control_node
inapigee/helm/values-cookie-air-gapped.yaml
come mostrato:control_node: enabled: true
- Esegui lo script di deployment per creare il nodo di controllo:
source venv/bin/activate
python apigee/solution_deploy.py gdc-air-gapped
- Configura l'accesso SSH al nodo di controllo:
kubectl create -n $PROJECT -f - <<EOF apiVersion: virtualmachine.GDC.goog/v1 kind: VirtualMachineAccessRequest metadata: generateName: control- spec: ssh: key: | "cat SSH_PUBLIC_KEY_FILE" ttl: 24h user: admin vm: control EOF
- Ottieni l'indirizzo IP esterno per il nodo di controllo:
kubectl get virtualmachineexternalaccess -n $PROJECT control -ojsonpath='{.status.ingressIP}'
- Ottieni l'IP interno del nodo di controllo:
kubectl get virtualmachines.virtualmachine.GDC.goog -n $PROJECT control -ojsonpath='{.status.network.interfaces[1].ipAddresses[0]}'
- Accedi tramite SSH al nodo di controllo e configura l'ambiente Ansible:
cd /home/admin
cp -r /tmp/apigee-repos .
cd apigee-repos/ansible-opdk-accelerator/setup
- Sostituisci i repository Git remoti con il file locale:
sed -i 's/https:\/\/github.com\/carlosfrias/git+file:\/\/\/home\/admin\/apigee-repos/g' requirements.yml
sed -i 's/\.git$//g' requirements.yml
- Install Ansible requirements:
sudo chown -R admin /home/admin/apigee-repos
ansible-galaxy install -r requirements.yml -f
- Aggiorna la configurazione della configurazione:
- Modifica il file
main.yml
:vi ~/apigee-repos/ansible-opdk-accelerator/setup/roles/apigee-opdk-setup-ansible-controller/tasks/main.yml
- Rimuovi le attività che richiedono l'accesso a GitHub:
- Estrazione SSH Git dei repository di configurazione
- Checkout HTTPS di Git dei repository di configurazione
- Esegui il playbook di configurazione:
cd ~/apigee-repos/ansible-opdk-accelerator/setup
ansible-playbook setup.yml
- Modifica il file
- Carica la chiave SSH per i nodi Apigee nel nodo di controllo:
scp -i CONTROL_SSH_PRIVATE_KEY_FILE APIGEE_NODE_SSH_PRIVATE_KEY_FILE admin@CONTROL_EXTERNAL_IP:/home/admin/.ssh/id_rsa
Dove:
- CONTROL_SSH_PRIVATE_KEY_FILE è il nome del file contenente la chiave privata SSH del nodo di controllo.
- APIGEE_NODE_SSH_PRIVATE_KEY_FILE è il nome del file contenente la chiave privata SSH del nodo Apigee.
- CONTROL_EXTERNAL_IP è l'indirizzo IP esterno del nodo di controllo.
- Crea il file di configurazione dell'inventario Ansible:
- Copia il contenuto del file
apigee/scripts/ansible/prod.cfg
nel fileprod.cfg
:vi ~/.ansible/multi-planet-configurations/prod.cfg
- Crea la cartella
edge-dc1
e copia i contenuti del fileapigee/scripts/ansible/edge-dc1
nel fileedge-dc1
:mkdir ~/.ansible/inventory/prod
vi ~/.ansible/inventory/prod/edge-dc1
- Copia il contenuto del file
- Aggiorna gli indirizzi IP interni dei nodi Apigee in
edge-dc1
:apigee_000 ansible_host=APIGEE_NODE1_INTERNAL_IP
apigee_001 ansible_host=APIGEE_NODE2_INTERNAL_IP
apigee_002 ansible_host=APIGEE_NODE3_INTERNAL_IP
apigee_003 ansible_host=APIGEE_NODE4_INTERNAL_IP
apigee_004 ansible_host=APIGEE_NODE5_INTERNAL_IP
Dove i valori di APIGEE_NODE*_INTERNAL_IP sono gli indirizzi IP interni dei nodi Apigee ottenuti in un passaggio precedente.
- Configura il file
~/.apigee-secure/credentials.yml
con i seguenti valori:- apigee_repo_user: 'APIGEE_REPO_USER'
- apigee_repo_password: 'APIGEE_REPO_PASSWORD'
- opdk_qpid_mgmt_username: 'OPDK_QPID_MGMT_USERNAME'
- opdk_qpid_mgmt_password: 'OPDK_QPID_MGMT_PASSWORD'
Dove:
- APIGEE_REPO_USER è il nome utente per il repository Apigee.
- APIGEE_REPO_PASSWORD è la password per il repository Apigee.
- OPDK_QPID_MGMT_USERNAME è il nome utente del server di gestione Apigee QPID.
- OPDK_QPID_MGMT_PASSWORD è la password per il server di gestione Apigee QPID.
- Aggiungi un file di licenza valido per Apigee Edge for Private Cloud. Il nome del file deve essere
license.txt
. - Copia i contenuti del file
~/.apigee-secure/license.txt
nel filelicense.txt
appena creato. - Configura i seguenti valori nel file
~/.apigee/custom-properties.yml
:- opdk_version: 'OPDK_VERSION'
- apigee_repo_url: 'APIGEE_REPO_URL'
Dove:
- OPDK_VERSION è la versione di Apigee Edge for Private Cloud che vuoi installare.
- APIGEE_REPO_URL è l'URL del repository Apigee.
- Esporta il file di configurazione come variabile di ambiente:
export ANSIBLE_CONFIG=~/.ansible/multi-planet-configurations/prod.cfg
- Sostituisci i repository Git remoti con i file locali:
cd ~/apigee-repos/ansible-opdk-accelerator/installations/multi-node/
sed -i 's/https:\/\/github.com\/carlosfrias/git+file:\/\/\/home\/admin\/apigee-repos/g' requirements.yml
sed -i 's/\.git$//g' requirements.yml
- Installa i requisiti di Ansible:
ansible-galaxy install -r requirements.yml -f
- Applica le patch ai ruoli Ansible:
sed -i 's/private_address/inventory_hostname/g' ~/.ansible/roles/apigee-opdk-settings-cassandra/tasks/main.yml
sed -i 's/include/include_tasks/g' ~/.ansible/roles/apigee-opdk-server-self/tasks/main.yml
sed -i 's/include/include_tasks/g' ~/.ansible/roles/apigee-opdk-setup-silent-installation-config/tasks/main.yml
cat << EOF >> ~/.ansible/roles/apigee-opdk-setup-silent-installation-config/templates/response-file-template.conf.j2 QPID_MGMT_USERNAME= opdk_qpid_mgmt_username QPID_MGMT_PASSWORD= opdk_qpid_mgmt_password EOF
sed -i 's/mode: 0700/mode: 0700\n recurse: yes/g' ~/.ansible/roles/apigee-opdk-setup-postgres-config/tasks/main.yml
- Sostituisci i contenuti del file
install.yml
con i contenuti diapigee/scripts/ansible/install.yml
. - Esegui il playbook per installare i componenti Apigee:
ansible-playbook install.yml
- Disattiva il link di reimpostazione della password dell'utente nella UI Edge. Apigee su GDC con air gap non include un server SMTP. Segui i passaggi descritti in Disattivare il link di reimpostazione della password nell' interfaccia utente di Edge.
- Segui le istruzioni riportate in
Creare istanze del registro Harbor per creare un'istanza Harbor nel progetto GDC
dev-apigee
. - Segui le istruzioni riportate in
Crea progetti Harbor per creare un progetto Harbor denominato
apigee
. - Segui le istruzioni riportate in Configura il controllo dell'accesso per configurare il controllo dell'accesso per il progetto Harbor.
- Segui le istruzioni riportate in Accedere a Docker e Helm per configurare l'autenticazione Docker.
- Aggiorna gli indirizzi IP nel file
apigee/apigee_user_cluster.toml
come mostrato di seguito:mgmt-server-proxy = "APIGEE_NODE1_EXTERNAL_IP" router-proxy1 = "APIGEE_NODE2_EXTERNAL_IP" router-proxy2 = "APIGEE_NODE3_EXTERNAL_IP"
Dove:
- APIGEE_NODE1_EXTERNAL_IP è l'indirizzo IP esterno del nodo Apigee 1 ottenuto in un passaggio precedente.
- APIGEE_NODE2_EXTERNAL_IP è l'indirizzo IP esterno del nodo Apigee2 ottenuto in un passaggio precedente.
- APIGEE_NODE3_EXTERNAL_IP è l'indirizzo IP esterno del nodo Apigee3 ottenuto in un passaggio precedente.
- Posiziona il file del certificato SSL (
server.crt
) e il file della chiave (server.key
) per la configurazione di HTTPS nelle cartelleapigee/mgmt-server-proxy
eapigee/router-proxy
.Per generare certificati autofirmati, utilizza il seguente comando:
openssl req -newkey rsa:4096 -x509 -nodes -keyout server.key -new -out server.crt -subj "/CN=*.apigeetest.com" -sha256 -days 365
- Aggiorna il valore di
SSH-PASSWORD
per l'utente root nel contenitore di caricamento nel fileapigee/uploader/Dockerfile
:RUN echo 'root:SSH_PASSWORD' | chpasswd
- Recupera le credenziali per il cluster utente:
gdcloud clusters get-credentials USER_CLUSTER
dove USER_CLUSTER è il nome del cluster GKE dell'utente.
- Esegui lo script di deployment per eseguire il deployment dei pod e dei servizi:
source venv/bin/activate
python apigee/solution_deploy_user_cluster.py gdc-air-gapped
- Recupera gli indirizzi IP esterni dei servizi:
kubectl get svc -n $PROJECT_ID
- Aggiorna
SSH_PASSWORD
,root
eUPLOADER_EXTERNAL_IP
inapigee/helm/scripts/backup_setup.sh
:sshpass -p SSH_PASSWORD scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null apigee-backup* root@UPLOADER_EXTERNAL_IP:/temp/
Dove:
- SSH_PASSWORD è la password per l'utente root.
- UPLOADER_EXTERNAL_IP è l'indirizzo IP esterno del servizio di caricamento ottenuto in un passaggio precedente.
- Aggiornamento di
FLUENTBIT_EXTERNAL_IP
inapigee/helm/scripts/apigee_setup.sh
:export FLUENTBIT_EXTERNAL_IP=FLUENTBIT_EXTERNAL_IP
- Arresta le VM:
gdcloud clusters get-credentials ORG_ADMIN_CLUSTER
export PROJECT=dev-apigee
for i in 1 2 3 4 5; do gdcloud compute instances stop node$i --project $PROJECT done
- Esegui nuovamente il deployment del grafico Helm:
python apigee/solution_deploy.py gdc-air-gapped
- Avvia le VM:
for i in 1 2 3 4 5; do GDCloud compute instances start node$i --project $PROJECT done
- Aggiorna i seguenti valori in
apigee/scripts/apigee_org_setup.sh
come mostrato. Aggiorna gli altri parametri in base alle esigenze.IP1=APIGEE_NODE1_INTERNAL_IP VHOST_ALIAS="APIGEE_NODE2_EXTERNAL_IP:9001 APIGEE_NODE3_EXTERNAL_IP:9001"
Dove:
- APIGEE_NODE1_INTERNAL_IP è l'indirizzo IP interno del nodo Apigee 1 ottenuto in un passaggio precedente.
- APIGEE_NODE2_EXTERNAL_IP è l'indirizzo IP esterno del nodo Apigee2 ottenuto in un passaggio precedente.
- APIGEE_NODE3_EXTERNAL_IP è l'indirizzo IP esterno del nodo Apigee3 ottenuto in un passaggio precedente.
- Esegui lo script su node1 per eseguire l'onboarding dell'organizzazione:
chmod a+x apigee_org_setup.sh
./apigee_org_setup.sh
- Ottieni l'indirizzo IP esterno del servizio
apigee-elb
:gdcloud clusters get-credentials USER_CLUSTER
export PROJECT=dev-apigee
kubectl get svc apigee-elb -n $PROJECT
dove USER_CLUSTER è il nome del cluster GKE dell'utente.
Questo servizio funge da endpoint per la UI Edge, l'API Management e il proxy API.
- APIGEE_ELB_EXTERNAL_IP è l'indirizzo IP esterno del servizio
apigee-elb
ottenuto in un passaggio precedente. - ORG_NAME è il nome dell'organizzazione Apigee.
- ENV_NAME è il nome dell'ambiente Apigee.
- Accedi all'interfaccia utente di Edge.
- Nella pagina Proxy API, fai clic su Crea per creare un nuovo proxy API.
- Nella pagina Dettagli proxy, inserisci i seguenti valori:
- Tipo di proxy:seleziona Nessun target.
- Nome proxy:
ok
- Base path:
/ok
- Target:
http://APIGEE_ELB_EXTERNAL_IP:9001
- Fai clic su Crea per creare il proxy API.
- Invia una richiesta HTTP a
/ok
:curl -i http://APIGEE_ELB_EXTERNAL_IP:9001/ok
- Conferma che la risposta sia
200 OK
. - Segui i passaggi descritti in Creare un keystore/truststore e un alias
per creare un certificato autofirmato con i seguenti valori:
- KeyStore: myTestKeystore
- KeyAlias: myKeyAlias
- Nome comune: apigeetest.com
- Esegui una chiamata API per creare l'host virtuale denominato
api.apigeetest.com
:curl -v -H "Content-Type:application/xml" \ -u "opdk@apigee.com:Apigee123!" "http://APIGEE_ELB_EXTERNAL_IP:8080/v1/o/ORG_NAME/e//virtualhosts" \ -d '<VirtualHost name="secure"> <HostAliases> <HostAlias>api.apigeetest.com</HostAlias> </HostAliases> <Interfaces/> <Port>9005</Port> <OCSPStapling>off</OCSPStapling> <SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>false</ClientAuthEnabled> <KeyStore>myTestKeystore</KeyStore> <KeyAlias>myKeyAlias</KeyAlias> </SSLInfo> </VirtualHost>'
Dove:
- APIGEE_ELB_EXTERNAL_IP è l'indirizzo IP esterno del servizio
apigee-elb
ottenuto in un passaggio precedente. - ORG_NAME è il nome dell'organizzazione Apigee.
- ENV_NAME è il nome dell'ambiente Apigee in cui deve essere creato l'host virtuale.
- APIGEE_ELB_EXTERNAL_IP è l'indirizzo IP esterno del servizio
- Crea un proxy API utilizzando l'host virtuale sicuro.
- Sui router, configura la risoluzione DNS per gli host virtuali:
echo '127.0.0.1 api.apigeetest.com' | sudo tee -a /etc/hosts
- Verifica che gli host virtuali funzionino localmente inviando una richiesta HTTPS all'endpoint:
curl https://api.apigeetest.com:9005/ok -v -k
- Configura la risoluzione DNS per l'endpoint:
echo 'APIGEE_ELB_EXTERNAL_IP apigeetest.com' | sudo tee -a /etc/hosts
dove APIGEE_ELB_EXTERNAL_IP è l'indirizzo IP esterno del servizio
apigee-elb
ottenuto in un passaggio precedente. - Vai alla pagina
https://apigeetest.com/ok
in un browser web e verifica che funzioni. - Genera un file keystore dal file del certificato SSL e dal file della chiave:
openssl pkcs12 -export -clcerts -in server.crt -inkey server.key -out keystore.pkcs12
keytool -importkeystore -srckeystore keystore.pkcs12 -srcstoretype pkcs12 -destkeystore keystore.jks -deststoretype jks
- Posiziona il file del keystore nella cartella Apigee su node1:
scp -i SSH_PRIVATE_KEY_FILE keystore.jks admin@APIGEE_NODE1_EXTERNAL_IP:/home/admin/
Dove:
- SSH_PRIVATE_KEY_FILE è il nome del file contenente la chiave privata SSH del nodo Apigee.
- APIGEE_NODE1_EXTERNAL_IP è l'indirizzo IP esterno del nodo Apigee 1 ottenuto in un passaggio precedente.
- Esegui SSH su node1 e sposta il file del keystore nella cartella Apigee:
sudo mv keystore.jks /opt/apigee/customer/application/
- Crea il file di configurazione SSL:
sudo vi /tmp/sslConfigFile
- Aggiorna il valore di
KEY-PASS-PHRASE
come mostrato:HTTPSPORT=9443 DISABLE_HTTP=n KEY_ALGO=JKS KEY_FILE_PATH=/opt/apigee/customer/application/keystore.jks KEY_PASS=KEY_PASS_PHRASE
- Configura SSL utilizzando il file di configurazione:
sudo chown apigee:apigee /tmp/sslConfigFile
/opt/apigee/apigee-service/bin/apigee-service edge-ui configure-ssl -f /tmp/sslConfigFile
- Configura la risoluzione DNS per la UI Edge:
echo 'APIGEE_ELB_EXTERNAL_IP ui.apigeetest.com' | sudo tee -a /etc/hosts
dove APIGEE_ELB_EXTERNAL_IP è l'indirizzo IP esterno del servizio
apigee-elb
ottenuto in un passaggio precedente. - Accedi a
https://ui.apigeetest.com:9443
in un browser web e verifica che funzioni. Per maggiori dettagli, consulta la guida. - Configura il proprietario del file dell'archivio chiavi (utilizza lo stesso dell'interfaccia utente Edge):
sudo chown apigee:apigee /opt/apigee/customer/application/keystore.jks
- Crea il file delle proprietà:
sudo vi /opt/apigee/customer/application/management-server.properties
- Riavvia il server di gestione per applicare le modifiche:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- Verifica che HTTPS funzioni localmente:
curl -u "opdk@apigee.com:Apigee123!" "https://localhost:8443/v1/users" -k
- Dal client, accedi a https://apigeetest.com:8443/v1/users nel browser. Inserisci il nome utente e la password dell'amministratore per confermare che le credenziali siano configurate correttamente.
Per scoprire di più sulla concessione di ruoli e autorizzazioni air-gap di GDC, consulta Concedere e revocare l'accesso.
Limitazioni
Ad Apigee su GDC air-gapped si applicano le seguenti limitazioni:
Ottenere i file richiesti
Per ottenere i file di installazione, devi prima configurare un nodo connesso e poi scaricare i file.
Configurare un nodo connesso
Il nodo connesso è una singola VM al di fuori di GDC che utilizzi per scaricare i file di installazione. Questa VM richiede l'accesso a internet e viene utilizzata solo per il processo di installazione.
Il nodo connesso richiede la seguente capacità e configurazione:
Per creare il nodo connesso, segui le istruzioni riportate in Creare e avviare un'istanza VM. Una volta creata la VM, segui le istruzioni riportate in Connessione alle VM Linux. per connetterti alla VM. Consulta Sistemi operativi supportati da GDC per un elenco dei sistemi operativi supportati.
Scaricare i file di installazione
Per scaricare i file di installazione:
Configura il bucket di archiviazione
In questo passaggio, l'operatore GDC configura un bucket di archiviazione nel progetto GDC per archiviare i file di backup di Apigee Edge for Private Cloud.
Crea un bucket di archiviazione
Per creare un bucket di archiviazione nel progetto GDC:
Configurare l'accesso al bucket
Per configurare l'accesso al bucket di archiviazione:
Configurare il nodo del repository
In questo passaggio, l'operatore GDC configura un nodo del repository per ospitare il repository mirror di Apigee Edge for Private Cloud.
Crea un nodo del repository
Per creare un nodo del repository:
Configurare l'accesso al nodo del repository
Per configurare l'accesso al nodo del repository:
Carica i file di installazione
In questo passaggio, l'operatore GDC carica la versione più recente dei seguenti file nel nodo del repository:
Per caricare i file di installazione:
Configura il repository mirror
Per configurare il repository mirror:
Esegui il deployment dei nodi Apigee
In questo passaggio, l'operatore GDC esegue il deployment dei nodi di gestione delle API Apigee.
Crea nodi Apigee
Per creare i nodi di gestione delle API Apigee:
Configurare l'accesso ai nodi Apigee
Configura l'accesso ai nodi di gestione API Apigee:
Configurare il nodo di controllo
In questo passaggio, l'operatore GDC configura un nodo di controllo per gestire le installazioni di Apigee.
Crea un nodo di controllo
Per creare un nodo di controllo:
Configurare l'accesso al nodo di controllo
Per configurare l'accesso al nodo di controllo:
Configura Ansible
In questo passaggio, l'operatore GDC configura l'ambiente sul nodo di controllo.
Per configurare l'ambiente Ansible:
Installa i componenti Apigee
In questo passaggio, l'operatore GDC installa i componenti Apigee utilizzando Ansible.
Per installare i componenti Apigee:
Esegui il deployment di pod e servizi
In questo passaggio, implementerai i pod e i servizi di caricamento, proxy inverso, bilanciatore del carico e logging.
Per eseguire il deployment dei pod e dei servizi:
Aggiorna gli IP di caricamento e di inoltro di Fluent Bit
In questo passaggio, aggiornerai gli indirizzi IP dell'uploader e del forwarder Fluent Bit negli script di backup e configurazione di Apigee.
L'aggiornamento dello script di avvio richiede il riavvio dei nodi Apigee. Per riavviare i nodi:
Esegui l'onboarding dell'organizzazione Apigee
In questo passaggio, l'operatore GDC esegue l'onboarding dell'organizzazione Apigee eseguendo uno script di configurazione su node1.
Per eseguire l'onboarding dell'organizzazione Apigee:
Verifica la connettività HTTP
In questo passaggio, testerai la connettività HTTP per l'API Management e il proxy API.
Per testare la connettività HTTP:
Testare l'API Management
Per testare l'API Management, invia una richiesta HTTP all'endpoint:
curl -u "opdk@apigee.com:Apigee123!" "http://APIGEE_ELB_EXTERNAL_IP:8080/v1/o/ORG_NAME/e/ENV_NAME/provisioning/axstatus"
Dove:
Testa il proxy API
Per testare il proxy API:
Configura TLS e testa HTTPS
In questo passaggio, l'operatore GDC configura Transport Layer Security (TLS) per il proxy API, la UI Edge e l'API Management.
Configura TLS per il proxy API
Configurare TLS per la UI Edge
Per configurare TLS per la UI Edge:
Configurare TLS per l'API Management
Per configurare TLS per l'API Management:
Sostituisci il valore di KEY_PASS_PHRASE
con la password del keystore, come mostrato:
conf_webserver_ssl.enabled=true # Leave conf_webserver_http.turn.off set to false # because many Edge internal calls use HTTP. conf_webserver_http.turn.off=false conf_webserver_ssl.port=8443 conf_webserver_keystore.path=/opt/apigee/customer/application/keystore.jks # Enter the obfuscated keystore password below. conf_webserver_keystore.password=KEY_PASS_PHRASE