Ten przewodnik opisuje, jak zainstalować i wdrożyć Apigee Edge for Private Cloud oraz serwery proxy interfejsu API w środowisku Google Distributed Cloud (GDC) bez dostępu do internetu. Oferty GDC air-gapped, w tym Apigee Edge for Private Cloud, nie wymagają połączenia z Google Cloud do zarządzania infrastrukturą i usługami. W przypadku wszystkich operacji możesz używać lokalnej płaszczyzny sterowania hostowanej w Twojej infrastrukturze. Omówienie GDC w sieci odseparowanej znajdziesz w tym artykule.
Ten przewodnik jest przeznaczony dla operatorów Apigee, którzy znają Apigee Edge Private Cloud i mają podstawową wiedzę o Kubernetes.
Omówienie wymaganych czynności
Aby zainstalować i wdrożyć Apigee Edge for Private Cloud w środowisku GDC bez dostępu do internetu, operator musi wykonać te czynności:
- Pobierz pliki instalacyjne Apigee Edge for Private Cloud.
- Skonfiguruj zasobnik na dane.
- Skonfiguruj węzeł repozytorium.
- Wdróż węzły Apigee.
- Skonfiguruj węzeł sterujący.
- Skonfiguruj Ansible.
- Zainstaluj komponenty Apigee.
- Wdrażaj pody i usługi.
- Zaktualizuj adresy IP narzędzia do przesyłania i przekazywania Fluent Bit.
- Wprowadź organizację Apigee.
- Testowanie połączeń HTTP
- Skonfiguruj TLS i przetestuj HTTPS.
Zanim zaczniesz
Zanim rozpoczniesz proces instalacji, wykonaj te czynności:
- Jeśli nie masz jeszcze projektu GDC, utwórz go na potrzeby instalacji. Więcej informacji znajdziesz w artykule Tworzenie projektu.
- Pobierz, zainstaluj i skonfiguruj interfejs
gdcloudCLI na stacji roboczej połączonej z GDC lub w środowisku ciągłego wdrażania organizacji. - Uzyskaj dane logowania wymagane do korzystania z interfejsu wiersza poleceń
gdcloudi interfejsu APIkubectl. Wymagane czynności znajdziesz w artykule Uwierzytelnianie konta w celu uzyskania dostępu. - Potwierdź nazwę użytkownika i hasło do Apigee otrzymane od menedżera konta Apigee.
- Sprawdź nazwę klastra administracyjnego GKE i nazwę klastra użytkownika GKE.
Wymagania dotyczące pojemności
Instalacja Apigee Edge w chmurze prywatnej w GDC wymaga kilku maszyn wirtualnych z określonymi przydziałami zasobów. Za te maszyny wirtualne naliczane są opłaty na podstawie ich zasobów obliczeniowych (pamięci RAM, rdzeni procesora wirtualnego) i miejsca na dysku lokalnym. Więcej informacji znajdziesz w sekcji Ceny.
W tabeli poniżej znajdziesz wymagania dotyczące zasobów dla poszczególnych maszyn wirtualnych:
| Typ maszyny wirtualnej | Pamięć RAM | Rdzenie procesorów wirtualnych | Miejsce na dysku |
|---|---|---|---|
| Węzeł repozytorium | 8 GB | 2 rdzenie vCPU | 64 GB |
| Węzeł sterujący | 8 GB | 2 rdzenie vCPU | 64 GB |
| Węzły 1, 2 i 3 usługi Apigee do zarządzania interfejsami API | 16 GB RAM | 8 rdzeni vCPU | 670 GB |
| Węzły zarządzania interfejsami API Apigee 4 i 5 | 16 GB RAM | 8 rdzeni vCPU | 500 GB–1 TB |
Role i uprawnienia
Aby wdrożyć Apigee Edge for Private Cloud w odizolowanym środowisku GDC, musisz mieć te role i uprawnienia:
- Administrator platformy: przypisz rolę
IAM Admin. - Operator aplikacji (AO): przypisz te role:
Harbor Instance Admin: ma pełny dostęp do zarządzania instancjami Harbor w projekcie.LoggingTarget Creator: tworzyLoggingTargetniestandardowe zasoby w przestrzeni nazw projektu.LoggingTarget Editor: edytujeLoggingTargetniestandardowe zasoby w przestrzeni nazw projektu.Project Bucket Admin: zarządza zasobnikami pamięci i obiektami w zasobnikach.Project Grafana Viewer: uzyskuje dostęp do instancji monitorowania w przestrzeni nazw projektu.Project NetworkPolicy Admin: zarządza zasadami sieciowymi projektu w przestrzeni nazw projektu.Project VirtualMachine Admin: zarządza maszynami wirtualnymi w przestrzeni nazw projektu.Secret Admin: zarządza obiektami tajnymi Kubernetes w projektach.Service Configuration Admin: ma uprawnienia do odczytu i zapisu konfiguracji usług w przestrzeni nazw projektu.Namespace Admin: zarządza wszystkimi zasobami w przestrzeniach nazw projektu.
- Apigee w izolowanym środowisku GDC nie ma serwerów DNS i jako obejście używa lokalnego rozpoznawania DNS. Jeśli Apigee na GDC w trybie air-gapped jest wdrażane w środowisku z zewnętrznymi serwerami DNS, zastąp kroki, które konfigurują lokalny DNS, konfiguracją wpisów DNS na serwerach DNS.
- Apigee w przypadku odseparowanego środowiska GDC nie zawiera samodzielnego serwera SMTP. Serwer SMTP możesz skonfigurować w dowolnym momencie, aby włączyć powiadomienia e-mail o tworzeniu kont i resetowaniu haseł z serwera zarządzania i interfejsu zarządzania. Interfejsy API do zarządzania pozostają dostępne na potrzeby zarządzania kontami użytkowników Apigee. Więcej informacji znajdziesz w artykule Konfigurowanie serwera SMTP Edge.
- Apigee w izolowanej sieci GDC nie implementuje wykrywania i zapobiegania włamaniom. Zainstaluj i skonfiguruj system zapobiegania włamaniom, np. Snort, aby wykrywać złośliwe działania i im zapobiegać.
- System operacyjny: Rocky Linux 8
- Rozmiar maszyny: 8 GB pamięci RAM, 2 rdzenie vCPU, 64 GB lokalnej pamięci dyskowej
- Połączenia:
- Ruch przychodzący: TCP 22 (SSH)
- Ruch wychodzący: internet
- Najnowszą oficjalną wersję obsługiwaną w GDC znajdziesz w informacjach o wersji Apigee Edge for Private Cloud w kolumnie Edge for Private Cloud.
- Pobierz plik instalacyjny Edge:
curl https://software.apigee.com/apigee/tarball/VERSION/rocky8/archive.tar -o /tmp/archive.tar -u 'APIGEE_USER:APIGEE_PASSWORD'
Gdzie:
- APIGEE_USER to nazwa użytkownika otrzymana dla organizacji Apigee.
- APIGEE_PASSWORD to hasło otrzymane dla organizacji Apigee.
- VERSION to wersja Apigee Edge for Private Cloud do użycia w GDC, którą chcesz zainstalować, np. 4.53.01.
- Pobierz najnowszy plik Apigee Edge Private Cloud
bootstrap_VERSION.shdo/tmp/bootstrap_VERSION.sh:curl https://software.apigee.com/bootstrap_VERSION.sh -o /tmp/bootstrap_VERSION.sh
gdzie VERSION to najnowsza wersja Apigee Edge for Private Cloud do zainstalowania w GDC, np. 4.53.01.
- Zainstaluj narzędzie Edge
apigee-servicei zależności:sudo bash /tmp/bootstrap_VERSION.sh apigeeuser=APIGEE_USER apigeepassword=APIGEE_PASSWORD
Gdzie:
- APIGEE_USER to nazwa użytkownika otrzymana dla organizacji Apigee.
- APIGEE_PASSWORD to hasło otrzymane dla organizacji Apigee.
- VERSION to wersja Apigee Edge for Private Cloud do użycia w GDC, którą chcesz zainstalować.
- Uruchom skrypt konfiguracji w połączonym węźle:
chmod a+x connected-node_setup.sh \ ./connected-node_setup.sh
W tym kroku skrypt generuje wymagane pliki w tych lokalizacjach (na przykład w przypadku wersji 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
- Przenieś wymagane pliki z połączonego węzła na komputer lokalny za pomocą SSH:
mkdir apigee-filescd apigee-filesfor 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 . doneGdzie:
- SSH_PRIVATE_KEY_FILE to ścieżka do pliku klucza prywatnego SSH.
- USER to nazwa użytkownika połączonego węzła.
- CONNECTED_NODE_IP to adres IP połączonego węzła.
- Uwierzytelnij się w klastrze administratora organizacji:
gdcloud auth login --login-config-cert WEB_TLS_CERTgdcloud clusters get-credentials ORG_ADMIN_CLUSTERGdzie:
- WEB_TLS_CERT to ścieżka do certyfikatu TLS sieci.
- ORG_ADMIN_CLUSTER to nazwa klastra GKE administratora organizacji.
- Ustaw zmienne środowiskowe projektu i zasobnika:
export PROJECT=PROJECTexport BUCKET=BUCKET_NAMEGdzie:
- PROJECT to nazwa Twojego projektu GDC.
- BUCKET_NAME to nazwa zasobnika, który chcesz utworzyć do przechowywania plików kopii zapasowej Apigee Edge Private Cloud.
- Zastosuj konfigurację zasobnika:
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 EOFTa konfiguracja tworzy zasobnik z okresem przechowywania wynoszącym 30 dni.
- Utwórz konto usługi w projekcie:
gdcloud iam service-accounts create $BUCKET-sa \ --project=$PROJECT - Utwórz rolę i powiązanie roli, aby wygenerować klucz tajny umożliwiający dostęp do zasobnika:
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
- Pobierz identyfikator klucza dostępu i klucz z obiektu tajnego:
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']}")"Dane wyjściowe powinny wyglądać podobnie do tych:
access-key-id=RFdJMzRROVdWWjFYNTJFTzJaTk0= access-key=U3dSdm5FRU5WdDhMckRMRW1QRGV0bE9MRHpCZ0Ntc0cxVFJQdktqdg==
- Utwórz klucz tajny, który będzie używany przez program przesyłający w klastrze GKE użytkownika:
- Uwierzytelnij się w klastrze użytkownika GKE:
gdcloud clusters get-credentials USER_CLUSTER
gdzie USER_CLUSTER to nazwa klastra GKE użytkownika.
- Zastosuj konfigurację tajnego klucza:
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
Gdzie:
- ACCESS_KEY_ID to identyfikator klucza dostępu uzyskany w poprzednim kroku.
- ACCESS_KEY to klucz dostępu uzyskany w poprzednim kroku.
- Uwierzytelnij się w klastrze użytkownika GKE:
- Pobierz punkt końcowy pamięci, pełną i jednoznaczną nazwę domeny (FQDN) oraz region zasobnika:
- Uwierzytelnij się w klastrze administratora organizacji:
gdcloud clusters get-credentials ORG_ADMIN_CLUSTER
gdzie ORG_ADMIN_CLUSTER to nazwa klastra GKE administratora organizacji.
- Pobierz punkt końcowy pamięci, pełną i jednoznaczną nazwę domeny (FQDN) oraz region zasobnika:
kubectl get buckets ${BUCKET} -n $PROJECT -o jsonpath="{'endpoint: '}{.status.endpoint}{'\n'}{'bucket: '}{.status.fullyQualifiedName}{'\n'}{'region: '}{.status.region}{'\n'}"
Dane wyjściowe powinny wyglądać podobnie do tych:
endpoint: https://objectstorage.gpu-org.cookie.sesame.street bucket: ez9wo-apigee-backup-bucket region: cookie
- Uwierzytelnij się w klastrze administratora organizacji:
- Zmień te wartości w pliku
apigee/helm_user_cluster/values-cookie-air-gapped.yaml:objectstorekeyname: "apigee-backup-bucket-secret" objectstoreurl: "BUCKET_ENDPOINT" objectstorebucket: "BUCKET_FQDN"
Gdzie:
- BUCKET_ENDPOINT to punkt końcowy zasobnika uzyskany w poprzednim kroku.
- BUCKET_FQDN to pełna i jednoznaczna nazwa domeny zasobnika uzyskana w poprzednim kroku.
- Zaktualizuj
apigee/helm_user_cluster/values-cookie-air-gapped.yamlw ten sposób:repo_node: enabled: true apigee_node: enabled: false control_node: enabled: false
Sprawdź, czy
repo_nodejest włączony, aapigee_nodeicontrol_nodesą wyłączone. Te węzły zostaną wdrożone w późniejszym kroku. - Pobierz dane logowania do klastra administratora organizacji:
gdcloud clusters get-credentials ORG_ADMIN_CLUSTER
gdzie ORG_ADMIN_CLUSTER to nazwa klastra GKE administratora organizacji.
- Utwórz środowisko wirtualne Pythona:
python3 -m venv venv / source venv/bin/activate
- Uruchom skrypt wdrażania, aby utworzyć węzeł repozytorium:
python apigee/solution_deploy.py gdc-air-gapped
- Skonfiguruj SSH dla węzła repozytorium:
export NODE=repokubectl 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 EOFgdzie SSH_PUBLIC_KEY_FILE to nazwa pliku zawierającego Twój publiczny klucz SSH.
- Uzyskaj zewnętrzny adres IP węzła repozytorium:
kubectl get virtualmachineexternalaccess -n $PROJECT $NODE -ojsonpath='{.status.ingressIP}' - Uzyskaj wewnętrzny adres IP węzła repozytorium:
kubectl get virtualmachines.virtualmachine.gdc.goog -n $PROJECT $NODE -ojsonpath='{.status.network.interfaces[1].ipAddresses[0]}' apigee-4.53.01apigee-nginx.tarpostgresql14.tarfluentbit.taransible-rpms.tarapigee-repos.tar- Skopiuj plik klucza prywatnego SSH do węzła repozytorium:
scp -i SSH_PRIVATE_KEY_FILE ~/apigee-files/* admin@REPO_EXTERNAL_IP:/tmp
Gdzie:
- SSH_PRIVATE_KEY_FILE to nazwa pliku zawierającego prywatny klucz SSH.
- REPO_EXTERNAL_IP to zewnętrzny adres IP węzła repozytorium uzyskany w poprzednim kroku.
- Prześlij folder zawierający konfiguracje Fluent Bit do węzła repozytorium:
scp -i SSH-PRIVATE-KEY-FILE -r apigee/scripts/fluent-bit admin@REPO_EXTERNAL_IP:/tmp/fluent-bit
Gdzie:
- SSH_PRIVATE_KEY_FILE to nazwa pliku zawierającego prywatny klucz SSH.
- REPO_EXTERNAL_IP to zewnętrzny adres IP węzła repozytorium.
- Skopiuj identyfikator
apigee/scripts/repo_setup.shdo węzła repozytorium. - W skrypcie zastąp REPO_USER i REPO_PASSWORD odpowiednią nazwą użytkownika i hasłem do repozytorium kopii.
- Uruchom skrypt:
chmod a+x repo_setup.sh./repo_setup.shJeśli pojawi się błąd
No such file or directory, uruchom skrypt ponownie. - Przetestuj połączenie z repozytorium kopii lokalnie z węzła repozytorium.
curl http://REPO_USER:REPO_PASSWORD@REPO_INTERNAL_IP:3939/bootstrap_VERSION.sh -o /tmp/bootstrap_VERSION.shcurl http://REPO_USER:REPO_PASSWORD@REPO_INTERNAL_IP:3939/apigee/release/VERSION/repodata/repomd.xmlZastąp VERSION wersją Apigee Edge for Private Cloud, którą chcesz zainstalować.
- Zastąp parametry
REPO_INTERNAL_IP,REPO_USER_NAMEiREPO_PASSWORDwapigee/helm/scripts/apigee_setup.shodpowiednimi wartościami. - Wyeksportuj wartości jako zmienne środowiskowe:
export REPO_IP=REPO_INTERNAL_IPexport REPO_USER=REPO_USER_NAMEexport REPO_PASSWORD=REPO_PASSWORD - Włącz
apigee_nodewapigee/helm/values-cookie-air-gapped.yaml, jak pokazano poniżej:apigee_node: enabled: true
- Uruchom skrypt wdrażania, aby utworzyć węzły Apigee:
source venv/bin/activatepython apigee/solution_deploy.py gdc-air-gapped - Uwierzytelnij się w klastrze administratora organizacji:
gdcloud clusters get-credentials ORG_ADMIN_CLUSTER
gdzie ORG_ADMIN_CLUSTER to nazwa klastra GKE administratora organizacji.
- Utwórz klucz SSH dla każdego węzła:
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 donegdzie SSH_PUBLIC_KEY_FILE to nazwa pliku zawierającego Twój publiczny klucz SSH.
- Pobierz zewnętrzne adresy IP węzłów Apigee:
for i in 1 2 3 4 5; do kubectl get virtualmachineexternalaccess -n $PROJECT node$i -ojsonpath='{.status.ingressIP}' echo done - Uzyskaj wewnętrzne adresy IP węzłów 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 - (Opcjonalnie) Sprawdź, czy skrypty uruchamiania działają prawidłowo na węzłach Apigee:
- Nawiąż połączenie SSH z węzłem i uruchom to polecenie:
sudo journalctl -u cloud-final -f
- Poszukaj logów podobnych do tych:
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
- Nawiąż połączenie SSH z węzłem i uruchom to polecenie:
- Zastąp parametry
REPO_INTERNAL_IP,REPO_USER_NAMEiREPO_PASSWORDwapigee/helm/scripts/control_setup.shwybranymi wartościami. - Włącz funkcję
control_nodewapigee/helm/values-cookie-air-gapped.yaml, jak pokazano poniżej:control_node: enabled: true
- Uruchom skrypt wdrażania, aby utworzyć węzeł sterujący:
source venv/bin/activatepython apigee/solution_deploy.py gdc-air-gapped - Skonfiguruj dostęp SSH do węzła sterującego:
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 - Uzyskaj zewnętrzny adres IP węzła sterującego:
kubectl get virtualmachineexternalaccess -n $PROJECT control -ojsonpath='{.status.ingressIP}' - Uzyskaj wewnętrzny adres IP węzła sterującego:
kubectl get virtualmachines.virtualmachine.GDC.goog -n $PROJECT control -ojsonpath='{.status.network.interfaces[1].ipAddresses[0]}' - Połącz się z węzłem sterującym przez SSH i skonfiguruj środowisko Ansible:
cd /home/admincp -r /tmp/apigee-repos .cd apigee-repos/ansible-opdk-accelerator/setup - Zastąp zdalne repozytoria Git plikiem lokalnym:
sed -i 's/https:\/\/github.com\/carlosfrias/git+file:\/\/\/home\/admin\/apigee-repos/g' requirements.ymlsed -i 's/\.git$//g' requirements.yml - Install Ansible requirements:
sudo chown -R admin /home/admin/apigee-reposansible-galaxy install -r requirements.yml -f - Zaktualizuj konfigurację:
- Edytuj plik
main.yml:vi ~/apigee-repos/ansible-opdk-accelerator/setup/roles/apigee-opdk-setup-ansible-controller/tasks/main.yml
- Usuń zadania, które wymagają dostępu do GitHub:
- Wyewidencjonowywanie repozytoriów konfiguracji za pomocą SSH w Git
- Wyewidencjonowywanie repozytoriów konfiguracji z Git przez HTTPS
- Uruchom scenariusz konfiguracji:
cd ~/apigee-repos/ansible-opdk-accelerator/setupansible-playbook setup.yml
- Edytuj plik
- Prześlij klucz SSH dla węzłów Apigee do węzła sterującego:
scp -i CONTROL_SSH_PRIVATE_KEY_FILE APIGEE_NODE_SSH_PRIVATE_KEY_FILE admin@CONTROL_EXTERNAL_IP:/home/admin/.ssh/id_rsa
Gdzie:
- CONTROL_SSH_PRIVATE_KEY_FILE to nazwa pliku zawierającego klucz prywatny SSH węzła sterującego.
- APIGEE_NODE_SSH_PRIVATE_KEY_FILE to nazwa pliku zawierającego klucz prywatny SSH węzła Apigee.
- CONTROL_EXTERNAL_IP to zewnętrzny adres IP węzła sterującego.
- Utwórz plik konfiguracji zasobów Ansible:
- Skopiuj zawartość pliku
apigee/scripts/ansible/prod.cfgdo plikuprod.cfg:vi ~/.ansible/multi-planet-configurations/prod.cfg
- Utwórz folder
edge-dc1i skopiuj do niego zawartość plikuapigee/scripts/ansible/edge-dc1:edge-dc1mkdir ~/.ansible/inventory/prodvi ~/.ansible/inventory/prod/edge-dc1
- Skopiuj zawartość pliku
- Zaktualizuj wewnętrzne adresy IP węzłów Apigee w
edge-dc1:apigee_000 ansible_host=APIGEE_NODE1_INTERNAL_IPapigee_001 ansible_host=APIGEE_NODE2_INTERNAL_IPapigee_002 ansible_host=APIGEE_NODE3_INTERNAL_IPapigee_003 ansible_host=APIGEE_NODE4_INTERNAL_IPapigee_004 ansible_host=APIGEE_NODE5_INTERNAL_IPWartości APIGEE_NODE*_INTERNAL_IP to wewnętrzne adresy IP węzłów Apigee uzyskane w poprzednim kroku.
- Skonfiguruj plik
~/.apigee-secure/credentials.yml, używając tych wartości:- 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'
Gdzie:
- APIGEE_REPO_USER to nazwa użytkownika repozytorium Apigee.
- APIGEE_REPO_PASSWORD to hasło do repozytorium Apigee.
- OPDK_QPID_MGMT_USERNAME to nazwa użytkownika serwera zarządzania Apigee QPID.
- OPDK_QPID_MGMT_PASSWORD to hasło serwera zarządzania Apigee QPID.
- Dodaj plik licencji z prawidłowym plikiem licencji Apigee Edge for Private Cloud. Nazwa pliku musi mieć postać
license.txt. - Skopiuj zawartość pliku
~/.apigee-secure/license.txtdo utworzonego przed chwilą plikulicense.txt. - Skonfiguruj te wartości w pliku
~/.apigee/custom-properties.yml:- opdk_version: 'OPDK_VERSION'
- apigee_repo_url: 'APIGEE_REPO_URL'
Gdzie:
- OPDK_VERSION to wersja Apigee Edge for Private Cloud, którą chcesz zainstalować.
- APIGEE_REPO_URL to adres URL repozytorium Apigee.
- Wyeksportuj plik konfiguracji jako zmienną środowiskową:
export ANSIBLE_CONFIG=~/.ansible/multi-planet-configurations/prod.cfg
- Zastąp zdalne repozytoria Git plikami lokalnymi:
cd ~/apigee-repos/ansible-opdk-accelerator/installations/multi-node/sed -i 's/https:\/\/github.com\/carlosfrias/git+file:\/\/\/home\/admin\/apigee-repos/g' requirements.ymlsed -i 's/\.git$//g' requirements.yml - Zainstaluj wymagania Ansible:
ansible-galaxy install -r requirements.yml -f
- Zastosuj poprawki do ról Ansible:
sed -i 's/private_address/inventory_hostname/g' ~/.ansible/roles/apigee-opdk-settings-cassandra/tasks/main.ymlsed -i 's/include/include_tasks/g' ~/.ansible/roles/apigee-opdk-server-self/tasks/main.ymlsed -i 's/include/include_tasks/g' ~/.ansible/roles/apigee-opdk-setup-silent-installation-config/tasks/main.ymlcat << 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 EOFsed -i 's/mode: 0700/mode: 0700\n recurse: yes/g' ~/.ansible/roles/apigee-opdk-setup-postgres-config/tasks/main.yml - Zastąp zawartość pliku
install.ymlzawartością plikuapigee/scripts/ansible/install.yml. - Uruchom scenariusz, aby zainstalować komponenty Apigee:
ansible-playbook install.yml
- Wyłącz link do resetowania hasła użytkownika w interfejsie Edge. Apigee w GDC w trybie air-gapped nie zawiera serwera SMTP. Wykonaj czynności opisane w artykule Wyłączanie linku do resetowania hasła w interfejsie Edge.
- Aby utworzyć instancję Harbor w projekcie GDC
dev-apigee, postępuj zgodnie z instrukcjami w artykule Tworzenie instancji rejestru Harbor. - Postępuj zgodnie z instrukcjami w artykule
Tworzenie projektów Harbor, aby utworzyć projekt Harbor o nazwie
apigee. - Aby skonfigurować kontrolę dostępu do projektu Harbor, postępuj zgodnie z instrukcjami w artykule Konfigurowanie kontroli dostępu.
- Aby skonfigurować uwierzytelnianie Dockera, postępuj zgodnie z instrukcjami w artykule Logowanie się w Dockerze i Helmie.
- Zaktualizuj adresy IP w pliku
apigee/apigee_user_cluster.tomlw ten sposób:mgmt-server-proxy = "APIGEE_NODE1_EXTERNAL_IP" router-proxy1 = "APIGEE_NODE2_EXTERNAL_IP" router-proxy2 = "APIGEE_NODE3_EXTERNAL_IP"
Gdzie:
- APIGEE_NODE1_EXTERNAL_IP to zewnętrzny adres IP węzła Apigee node1 uzyskany w poprzednim kroku.
- APIGEE_NODE2_EXTERNAL_IP to zewnętrzny adres IP węzła Apigee 2 uzyskany w poprzednim kroku.
- APIGEE_NODE3_EXTERNAL_IP to zewnętrzny adres IP węzła Apigee3 uzyskany w poprzednim kroku.
- Umieść plik certyfikatu SSL (
server.crt) i plik klucza (server.key) do skonfigurowania protokołu HTTPS w folderachapigee/mgmt-server-proxyiapigee/router-proxy.Aby wygenerować podpisane samodzielnie certyfikaty, użyj tego polecenia:
openssl req -newkey rsa:4096 -x509 -nodes -keyout server.key -new -out server.crt -subj "/CN=*.apigeetest.com" -sha256 -days 365
- Zaktualizuj wartość
SSH-PASSWORDdla użytkownika root w kontenerze przesyłającym w plikuapigee/uploader/Dockerfile:RUN echo 'root:SSH_PASSWORD' | chpasswd
- Pobierz dane logowania do klastra użytkownika:
gdcloud clusters get-credentials USER_CLUSTER
gdzie USER_CLUSTER to nazwa klastra GKE użytkownika.
- Aby wdrożyć pody i usługi, uruchom skrypt wdrażania:
source venv/bin/activatepython apigee/solution_deploy_user_cluster.py gdc-air-gapped - Sprawdź zewnętrzne adresy IP usług:
kubectl get svc -n $PROJECT_ID
- Zaktualizować:
SSH_PASSWORD,rootiUPLOADER_EXTERNAL_IPw:apigee/helm/scripts/backup_setup.sh:sshpass -p SSH_PASSWORD scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null apigee-backup* root@UPLOADER_EXTERNAL_IP:/temp/
Gdzie:
- SSH_PASSWORD to hasło roota.
- UPLOADER_EXTERNAL_IP to zewnętrzny adres IP usługi przesyłania uzyskany w poprzednim kroku.
- Zaktualizować:
FLUENTBIT_EXTERNAL_IPw:apigee/helm/scripts/apigee_setup.sh:export FLUENTBIT_EXTERNAL_IP=FLUENTBIT_EXTERNAL_IP
- Zatrzymaj maszyny wirtualne:
gdcloud clusters get-credentials ORG_ADMIN_CLUSTERexport PROJECT=dev-apigeefor i in 1 2 3 4 5; do gdcloud compute instances stop node$i --project $PROJECT done - Ponownie wdróż kartę Helm:
python apigee/solution_deploy.py gdc-air-gapped
- Uruchom maszyny wirtualne:
for i in 1 2 3 4 5; do GDCloud compute instances start node$i --project $PROJECT done
- Zaktualizuj te wartości w pliku
apigee/scripts/apigee_org_setup.sh. W razie potrzeby zaktualizuj inne parametry.IP1=APIGEE_NODE1_INTERNAL_IP VHOST_ALIAS="APIGEE_NODE2_EXTERNAL_IP:9001 APIGEE_NODE3_EXTERNAL_IP:9001"
Gdzie:
- APIGEE_NODE1_INTERNAL_IP to wewnętrzny adres IP węzła Apigee node1 uzyskany w poprzednim kroku.
- APIGEE_NODE2_EXTERNAL_IP to zewnętrzny adres IP węzła Apigee 2 uzyskany w poprzednim kroku.
- APIGEE_NODE3_EXTERNAL_IP to zewnętrzny adres IP węzła Apigee3 uzyskany w poprzednim kroku.
- Uruchom skrypt na node1, aby wdrożyć organizację:
chmod a+x apigee_org_setup.sh./apigee_org_setup.sh - Sprawdź zewnętrzny adres IP usługi
apigee-elb:gdcloud clusters get-credentials USER_CLUSTERexport PROJECT=dev-apigeekubectl get svc apigee-elb -n $PROJECTgdzie USER_CLUSTER to nazwa klastra GKE użytkownika.
Ta usługa działa jako punkt końcowy interfejsu Edge, interfejsu Management API i proxy interfejsu API.
- APIGEE_ELB_EXTERNAL_IP to zewnętrzny adres IP usługi
apigee-elbuzyskany w poprzednim kroku. - ORG_NAME to nazwa organizacji w Apigee.
- ENV_NAME to nazwa środowiska Apigee.
- Zaloguj się w interfejsie Edge.
- Na stronie API Proxies (Proxy interfejsu API) kliknij Create (Utwórz), aby utworzyć nowy proxy interfejsu API.
- Na stronie Szczegóły serwera proxy wpisz te wartości:
- Typ serwera proxy: wybierz Brak celu.
- Nazwa serwera proxy:
ok - Ścieżka podstawowa:
/ok - Cel:
http://APIGEE_ELB_EXTERNAL_IP:9001
- Aby utworzyć serwer proxy interfejsu API, kliknij Utwórz.
- Wyślij żądanie HTTP do
/ok:curl -i http://APIGEE_ELB_EXTERNAL_IP:9001/ok
- Sprawdź, czy odpowiedź to
200 OK. - Aby utworzyć certyfikat podpisany samodzielnie, wykonaj czynności opisane w artykule Tworzenie magazynu kluczy lub magazynu zaufanych certyfikatów i aliasu, używając tych wartości:
- KeyStore: myTestKeystore
- KeyAlias: myKeyAlias
- Nazwa zwyczajowa: apigeetest.com
- Wywołaj interfejs API, aby utworzyć host wirtualny o nazwie
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>'
Gdzie:
- APIGEE_ELB_EXTERNAL_IP to zewnętrzny adres IP usługi
apigee-elbuzyskany w poprzednim kroku. - ORG_NAME to nazwa organizacji w Apigee.
- ENV_NAME to nazwa środowiska Apigee, w którym ma zostać utworzony host wirtualny.
- APIGEE_ELB_EXTERNAL_IP to zewnętrzny adres IP usługi
- Utwórz serwer proxy interfejsu API za pomocą bezpiecznego hosta wirtualnego.
- Na routerach skonfiguruj rozpoznawanie nazw DNS dla hostów wirtualnych:
echo '127.0.0.1 api.apigeetest.com' | sudo tee -a /etc/hosts
- Sprawdź, czy wirtualni hostowie działają lokalnie, wysyłając żądanie HTTPS do punktu końcowego:
curl https://api.apigeetest.com:9005/ok -v -k
- Skonfiguruj rozpoznawanie nazw DNS dla punktu końcowego:
echo 'APIGEE_ELB_EXTERNAL_IP apigeetest.com' | sudo tee -a /etc/hosts
gdzie APIGEE_ELB_EXTERNAL_IP to zewnętrzny adres IP usługi
apigee-elbuzyskany w poprzednim kroku. - Otwórz
https://apigeetest.com/okw przeglądarce i sprawdź, czy działa. - Wygeneruj plik magazynu kluczy z pliku certyfikatu SSL i pliku klucza:
openssl pkcs12 -export -clcerts -in server.crt -inkey server.key -out keystore.pkcs12keytool -importkeystore -srckeystore keystore.pkcs12 -srcstoretype pkcs12 -destkeystore keystore.jks -deststoretype jks - Umieść plik magazynu kluczy w folderze Apigee na serwerze node1:
scp -i SSH_PRIVATE_KEY_FILE keystore.jks admin@APIGEE_NODE1_EXTERNAL_IP:/home/admin/
Gdzie:
- SSH_PRIVATE_KEY_FILE to nazwa pliku zawierającego klucz prywatny SSH węzła Apigee.
- APIGEE_NODE1_EXTERNAL_IP to zewnętrzny adres IP węzła Apigee node1 uzyskany w poprzednim kroku.
- Połącz się przez SSH z node1 i przenieś plik magazynu kluczy do folderu Apigee:
sudo mv keystore.jks /opt/apigee/customer/application/
- Utwórz plik konfiguracyjny SSL:
sudo vi /tmp/sslConfigFile
- Zmień wartość
KEY-PASS-PHRASEw ten sposób:HTTPSPORT=9443 DISABLE_HTTP=n KEY_ALGO=JKS KEY_FILE_PATH=/opt/apigee/customer/application/keystore.jks KEY_PASS=KEY_PASS_PHRASE
- Skonfiguruj SSL za pomocą pliku konfiguracji:
sudo chown apigee:apigee /tmp/sslConfigFile/opt/apigee/apigee-service/bin/apigee-service edge-ui configure-ssl -f /tmp/sslConfigFile - Skonfiguruj rozpoznawanie nazw DNS dla interfejsu Edge:
echo 'APIGEE_ELB_EXTERNAL_IP ui.apigeetest.com' | sudo tee -a /etc/hosts
gdzie APIGEE_ELB_EXTERNAL_IP to zewnętrzny adres IP usługi
apigee-elbuzyskany w poprzednim kroku. - Otwórz
https://ui.apigeetest.com:9443w przeglądarce i sprawdź, czy działa. Więcej informacji znajdziesz w przewodniku. - Skonfiguruj właściciela pliku magazynu kluczy (użyj tego samego co w przypadku interfejsu Edge):
sudo chown apigee:apigee /opt/apigee/customer/application/keystore.jks
- Utwórz plik właściwości:
sudo vi /opt/apigee/customer/application/management-server.properties
- Aby zastosować zmiany, ponownie uruchom serwer zarządzający:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- Sprawdź, czy HTTPS działa lokalnie:
curl -u "opdk@apigee.com:Apigee123!" "https://localhost:8443/v1/users" -k
- Na kliencie otwórz w przeglądarce stronę https://apigeetest.com:8443/v1/users. Wpisz nazwę użytkownika i hasło administratora, aby potwierdzić, że dane logowania są prawidłowo skonfigurowane.
Więcej informacji o przyznawaniu ról i uprawnień w przypadku odciętej od internetu wersji GDC znajdziesz w artykule Przyznawanie i odbieranie dostępu.
Ograniczenia
W przypadku Apigee na odseparowanej sieci GDC obowiązują te ograniczenia:
Pobierz wymagane pliki
Aby uzyskać pliki instalacyjne, musisz najpierw skonfigurować połączony węzeł, a potem pobrać pliki.
Konfigurowanie połączonego węzła
Połączony węzeł to pojedyncza maszyna wirtualna poza GDC, której używasz do pobierania plików instalacyjnych. Ta maszyna wirtualna wymaga dostępu do internetu i jest używana tylko w procesie instalacji.
Połączony węzeł wymaga następującej pojemności i konfiguracji:
Aby utworzyć połączony węzeł, postępuj zgodnie z instrukcjami w artykule Tworzenie i uruchamianie instancji maszyny wirtualnej. Po utworzeniu maszyny wirtualnej postępuj zgodnie z instrukcjami w artykule Łączenie się z maszynami wirtualnymi z systemem Linux. aby połączyć się z maszyną wirtualną. Listę obsługiwanych systemów operacyjnych znajdziesz w artykule Obsługiwane systemy operacyjne GDC.
Pobieranie plików instalacyjnych
Aby pobrać pliki instalacyjne:
Konfigurowanie zasobnika na dane
W tym kroku operator GDC konfiguruje w projekcie GDC zasobnik pamięci do przechowywania plików kopii zapasowych Apigee Edge dla chmury prywatnej.
Utwórz zasobnik na dane
Aby utworzyć zasobnik pamięci w projekcie GDC:
Konfigurowanie dostępu do zasobnika
Aby skonfigurować dostęp do zasobnika pamięci:
Konfigurowanie węzła repozytorium
W tym kroku operator GDC konfiguruje węzeł repozytorium, w którym będzie hostowane repozytorium kopii Apigee Edge dla Private Cloud.
Tworzenie węzła repozytorium
Aby utworzyć węzeł repozytorium:
Konfigurowanie dostępu do węzła repozytorium
Aby skonfigurować dostęp do węzła repozytorium:
Przesyłanie plików instalacyjnych
W tym kroku operator GDC przesyła do węzła repozytorium najnowszą wersję tych plików:
Aby przesłać pliki instalacyjne:
Konfigurowanie repozytorium kopii
Aby skonfigurować repozytorium kopii:
Wdrażanie węzłów Apigee
W tym kroku operator GDC wdraża węzły zarządzania interfejsem API Apigee.
Tworzenie węzłów Apigee
Aby utworzyć węzły zarządzania interfejsem API Apigee:
Konfigurowanie dostępu do węzła Apigee
Skonfiguruj dostęp do węzłów zarządzania interfejsami API Apigee:
Konfigurowanie węzła sterującego
W tym kroku operator GDC konfiguruje węzeł sterujący do zarządzania instalacjami Apigee.
Tworzenie węzła sterującego
Aby utworzyć węzeł sterujący:
Konfigurowanie dostępu do węzła sterującego
Aby skonfigurować dostęp do węzła sterującego:
Konfigurowanie Ansible
W tym kroku operator GDC konfiguruje środowisko na węźle sterującym.
Aby skonfigurować środowisko Ansible:
Instalowanie komponentów Apigee
W tym kroku operator GDC instaluje komponenty Apigee za pomocą Ansible.
Aby zainstalować komponenty Apigee:
Wdrażanie podów i usług
W tym kroku wdrożysz pody i usługi przesyłania, serwera proxy, systemu równoważenia obciążenia i logowania.
Aby wdrożyć pody i usługi:
Aktualizowanie adresów IP przesyłającego i przekazującego Fluent Bit
W tym kroku zaktualizujesz adresy IP narzędzia do przesyłania i przekazywania Fluent Bit w skryptach kopii zapasowej i konfiguracji Apigee.
Aktualizacja skryptu uruchamiania wymaga ponownego uruchomienia węzłów Apigee. Aby ponownie uruchomić węzły:
Wprowadzanie organizacji Apigee
W tym kroku operator GDC wdraża organizację Apigee, uruchamiając skrypt konfiguracji na node1.
Aby wdrożyć organizację Apigee:
Testowanie połączeń HTTP
W tym kroku przetestujesz połączenie HTTP z interfejsem Management API i serwerem proxy interfejsu API.
Aby przetestować połączenie HTTP:
Testowanie interfejsu Management API
Aby przetestować interfejs Management API, wyślij żądanie HTTP do punktu końcowego:
curl -u "opdk@apigee.com:Apigee123!" "http://APIGEE_ELB_EXTERNAL_IP:8080/v1/o/ORG_NAME/e/ENV_NAME/provisioning/axstatus"
Gdzie:
Testowanie proxy interfejsu API
Aby przetestować proxy interfejsu API:
Konfigurowanie protokołu TLS i testowanie protokołu HTTPS
W tym kroku operator GDC konfiguruje protokół Transport Layer Security (TLS) dla serwera proxy interfejsu API, interfejsu Edge UI i interfejsu Management API.
Konfigurowanie protokołu TLS dla serwera proxy interfejsu API
Konfigurowanie protokołu TLS w interfejsie Edge
Aby skonfigurować TLS w interfejsie Edge:
Konfigurowanie protokołu TLS dla interfejsu Management API
Aby skonfigurować TLS dla interfejsu Management API:
Zastąp wartość KEY_PASS_PHRASE hasłem do magazynu kluczy, jak pokazano poniżej:
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