Hướng dẫn này mô tả cách cài đặt và triển khai Apigee Edge cho Đám mây riêng tư và các proxy API trong môi trường Google Distributed Cloud (GDC) không có kết nối Internet. Các dịch vụ GDC không có kết nối Internet, bao gồm cả Apigee Edge cho Đám mây riêng tư, không yêu cầu kết nối với Google Cloud để quản lý cơ sở hạ tầng và dịch vụ. Bạn có thể sử dụng một mặt phẳng điều khiển cục bộ được lưu trữ tại cơ sở của mình cho tất cả các hoạt động. Để biết thông tin tổng quan về GDC không có kết nối Internet, hãy xem phần tổng quan.
Hướng dẫn này dành cho những người vận hành Apigee đã quen thuộc với Apigee Edge cho Đám mây riêng tư và có hiểu biết cơ bản về Kubernetes.
Tổng quan về các bước bắt buộc
Để cài đặt và triển khai Apigee Edge cho Đám mây riêng trong môi trường GDC không có kết nối Internet, nhân viên vận hành phải hoàn tất các bước sau:
- Lấy các tệp cài đặt cho Apigee Edge cho Đám mây riêng tư.
- Thiết lập một vùng lưu trữ.
- Thiết lập một nút kho lưu trữ.
- Triển khai các nút Apigee.
- Thiết lập một nút kiểm soát.
- Định cấu hình Ansible.
- Cài đặt các thành phần Apigee.
- Triển khai các nhóm và dịch vụ.
- Cập nhật địa chỉ IP của trình tải lên và trình chuyển tiếp Fluent Bit.
- Tham gia một tổ chức Apigee.
- Kiểm tra khả năng kết nối HTTP.
- Định cấu hình TLS và kiểm thử HTTPS.
Trước khi bắt đầu
Trước khi bắt đầu quy trình cài đặt, hãy nhớ hoàn tất các bước sau:
- Tạo một dự án GDC để sử dụng cho quá trình cài đặt, nếu bạn chưa có dự án. Để biết thêm thông tin, hãy xem bài viết Tạo dự án.
- Tải xuống, cài đặt và định cấu hình
gdcloud
CLI trên một máy trạm được kết nối với GDC hoặc trong môi trường triển khai liên tục của tổ chức. - Lấy thông tin đăng nhập cần thiết để sử dụng CLI
gdcloud
và APIkubectl
. Xem phần Xác thực tài khoản để có quyền truy cập để biết các bước bắt buộc. - Xác nhận tên người dùng và mật khẩu Apigee mà bạn nhận được từ người quản lý tài khoản Apigee.
- Xác nhận tên của cụm quản trị GKE và tên của cụm người dùng GKE.
Yêu cầu về dung lượng
Việc cài đặt Apigee Edge cho Đám mây riêng tư trên GDC yêu cầu một số máy ảo (VM) có mức phân bổ tài nguyên cụ thể. Các VM này sẽ phát sinh phí dựa trên tài nguyên điện toán (RAM, lõi vCPU) và bộ nhớ ổ đĩa cục bộ. Để biết thêm thông tin, hãy xem phần Định giá.
Bảng sau đây cho biết các yêu cầu về tài nguyên cho từng máy ảo:
Loại máy ảo | RAM | Số lõi vCPU | Bộ nhớ trên ổ đĩa |
---|---|---|---|
Nút Repo | 8 GB | 2 lõi vCPU | 64GB |
Nút điều khiển | 8 GB | 2 lõi vCPU | 64GB |
Nút quản lý API Apigee 1, 2 và 3 | RAM 16GB | 8 lõi vCPU | 670 GB |
Nút quản lý API Apigee 4 và 5 | RAM 16GB | 8 lõi vCPU | 500 GB – 1 TB |
Vai trò và quyền
Bạn cần có các vai trò và quyền sau đây để triển khai Apigee Edge cho Đám mây riêng trong môi trường GDC không có kết nối Internet:
- Quản trị viên nền tảng (PA): Chỉ định vai trò
IAM Admin
. - Người vận hành ứng dụng (AO): Chỉ định các vai trò sau:
Harbor Instance Admin
: Có toàn quyền quản lý các phiên bản Harbor trong một dự án.LoggingTarget Creator
: Tạo tài nguyên tuỳ chỉnhLoggingTarget
trong không gian tên dự án.LoggingTarget Editor
: Chỉnh sửa tài nguyên tuỳ chỉnhLoggingTarget
trong không gian tên dự án.Project Bucket Admin
: Quản lý các nhóm lưu trữ và đối tượng trong nhómProject Grafana Viewer
: Truy cập vào phiên bản giám sát trong không gian tên dự án.Project NetworkPolicy Admin
: Quản lý các chính sách mạng của dự án trong không gian tên của dự án.Project VirtualMachine Admin
: Quản lý các máy ảo trong không gian tên dự án.Secret Admin
: Quản lý các khoá bí mật của Kubernetes trong các dự án.Service Configuration Admin
: Có quyền đọc và ghi đối với các cấu hình dịch vụ trong một không gian tên dự án.Namespace Admin
: Quản lý tất cả tài nguyên trong không gian tên của dự án.
- Apigee trên GDC không có máy chủ DNS và sử dụng tính năng phân giải DNS cục bộ làm giải pháp thay thế. Nếu Apigee trên GDC không có kết nối Internet được triển khai trong một môi trường có máy chủ DNS bên ngoài, hãy thay thế các bước định cấu hình DNS cục bộ bằng cách định cấu hình các mục DNS trong máy chủ DNS.
- Apigee trên GDC không có kết nối Internet không bao gồm máy chủ SMTP độc lập. Bạn có thể định cấu hình máy chủ SMTP bất cứ lúc nào để bật thông báo qua email gửi đi cho việc tạo tài khoản và đặt lại mật khẩu từ Máy chủ quản lý và Giao diện người dùng quản lý. Các API quản lý vẫn có sẵn để quản lý tài khoản người dùng Apigee. Hãy xem phần Định cấu hình máy chủ SMTP Edge để biết thêm thông tin.
- Apigee trên GDC không có kết nối Internet không triển khai tính năng phát hiện và ngăn chặn xâm nhập. Cài đặt và định cấu hình Hệ thống ngăn chặn xâm nhập (IPS), chẳng hạn như Snort, để phát hiện và ngăn chặn các hoạt động độc hại.
- Hệ điều hành: Rocky Linux 8
- Kích thước máy: RAM 8 GB; 2 lõi vCPU; bộ nhớ đĩa cục bộ 64 GB
- Khả năng kết nối:
- Ingress: TCP 22 (SSH)
- Đầu ra: Internet
- Hãy xem ghi chú phát hành của Apigee Edge cho Private Cloud để biết phiên bản phát hành chính thức mới nhất được hỗ trợ cho GDC, như đã nêu trong cột Edge cho Private Cloud.
- Tải tệp thiết lập Edge xuống:
curl https://software.apigee.com/apigee/tarball/VERSION/rocky8/archive.tar -o /tmp/archive.tar -u 'APIGEE_USER:APIGEE_PASSWORD'
Trong trường hợp:
- APIGEE_USER là tên người dùng mà bạn nhận được cho tổ chức Apigee.
- APIGEE_PASSWORD là mật khẩu bạn nhận được cho tổ chức Apigee.
- VERSION là phiên bản phát hành Apigee Edge cho Đám mây riêng để sử dụng trên GDC mà bạn dự định cài đặt, ví dụ: 4.53.01.
- Tải tệp Apigee Edge for Private Cloud
bootstrap_VERSION.sh
mới nhất xuống/tmp/bootstrap_VERSION.sh
:curl https://software.apigee.com/bootstrap_VERSION.sh -o /tmp/bootstrap_VERSION.sh
Trong đó, VERSION là phiên bản phát hành mới nhất của Apigee Edge cho Đám mây riêng để sử dụng trên GDC mà bạn dự định cài đặt, ví dụ: 4.53.01.
- Cài đặt tiện ích
apigee-service
và các phần phụ thuộc của Edge:sudo bash /tmp/bootstrap_VERSION.sh apigeeuser=APIGEE_USER apigeepassword=APIGEE_PASSWORD
Trong trường hợp:
- APIGEE_USER là tên người dùng mà bạn nhận được cho tổ chức Apigee.
- APIGEE_PASSWORD là mật khẩu bạn nhận được cho tổ chức Apigee.
- VERSION là phiên bản phát hành Apigee Edge cho Private Cloud để sử dụng trên GDC mà bạn dự định cài đặt.
- Chạy tập lệnh thiết lập trên nút được kết nối:
chmod a+x connected-node_setup.sh \ ./connected-node_setup.sh
Trong bước này, tập lệnh sẽ tạo các tệp cần thiết ở những vị trí sau (ví dụ: đối với phiên bản 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
- Chuyển các tệp cần thiết từ nút đã kết nối sang máy cục bộ qua 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
Trong trường hợp:
- SSH_PRIVATE_KEY_FILE là đường dẫn đến tệp khoá riêng tư SSH.
- USER là tên người dùng cho nút được kết nối.
- CONNECTED_NODE_IP là địa chỉ IP của nút được kết nối.
- Xác thực bằng cụm quản trị viên tổ chức:
gdcloud auth login --login-config-cert WEB_TLS_CERT
gdcloud clusters get-credentials ORG_ADMIN_CLUSTER
Trong trường hợp:
- WEB_TLS_CERT là đường dẫn đến chứng chỉ TLS của web.
- ORG_ADMIN_CLUSTER là tên của cụm GKE quản trị viên tổ chức.
- Đặt các biến môi trường dự án và nhóm lưu trữ:
export PROJECT=PROJECT
export BUCKET=BUCKET_NAME
Trong trường hợp:
- PROJECT là tên của dự án GDC.
- BUCKET_NAME là tên của bộ chứa mà bạn muốn tạo để lưu trữ các tệp sao lưu Apigee Edge cho Private Cloud.
- Áp dụng cấu hình nhóm:
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
Cấu hình này sẽ tạo một vùng chứa có thời gian lưu giữ là 30 ngày.
- Tạo một tài khoản dịch vụ trong dự án:
gdcloud iam service-accounts create $BUCKET-sa \ --project=$PROJECT
- Tạo vai trò và liên kết vai trò để tạo một khoá bí mật nhằm truy cập vào bộ chứa:
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
- Lấy mã khoá truy cập và khoá từ khoá bí mật:
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']}")"
Kết quả đầu ra sẽ có dạng như sau:
access-key-id=RFdJMzRROVdWWjFYNTJFTzJaTk0= access-key=U3dSdm5FRU5WdDhMckRMRW1QRGV0bE9MRHpCZ0Ntc0cxVFJQdktqdg==
- Tạo một khoá bí mật để trình tải lên sử dụng trong cụm GKE của người dùng:
- Xác thực bằng cụm GKE của người dùng:
gdcloud clusters get-credentials USER_CLUSTER
Trong đó USER_CLUSTER là tên của cụm GKE người dùng.
- Áp dụng cấu hình bí mật:
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
Trong trường hợp:
- ACCESS_KEY_ID là mã nhận dạng khoá truy cập mà bạn nhận được ở bước trước.
- ACCESS_KEY là khoá truy cập nhận được ở bước trước.
- Xác thực bằng cụm GKE của người dùng:
- Lấy điểm cuối lưu trữ, tên miền đủ điều kiện (FQDN) và khu vực của nhóm:
- Xác thực bằng cụm quản trị viên tổ chức:
gdcloud clusters get-credentials ORG_ADMIN_CLUSTER
Trong đó ORG_ADMIN_CLUSTER là tên của cụm GKE quản trị viên tổ chức.
- Lấy điểm cuối lưu trữ, tên miền đủ điều kiện (FQDN) và khu vực của bộ chứa:
kubectl get buckets ${BUCKET} -n $PROJECT -o jsonpath="{'endpoint: '}{.status.endpoint}{'\n'}{'bucket: '}{.status.fullyQualifiedName}{'\n'}{'region: '}{.status.region}{'\n'}"
Kết quả đầu ra sẽ có dạng như sau:
endpoint: https://objectstorage.gpu-org.cookie.sesame.street bucket: ez9wo-apigee-backup-bucket region: cookie
- Xác thực bằng cụm quản trị viên tổ chức:
- Cập nhật các giá trị sau trong tệp
apigee/helm_user_cluster/values-cookie-air-gapped.yaml
:objectstorekeyname: "apigee-backup-bucket-secret" objectstoreurl: "BUCKET_ENDPOINT" objectstorebucket: "BUCKET_FQDN"
Trong trường hợp:
- BUCKET_ENDPOINT là điểm cuối của nhóm nhận được ở bước trước.
- BUCKET_FQDN là tên miền đủ điều kiện của nhóm lưu trữ thu được ở bước trước.
- Cập nhật
apigee/helm_user_cluster/values-cookie-air-gapped.yaml
như sau:repo_node: enabled: true apigee_node: enabled: false control_node: enabled: false
Đảm bảo rằng
repo_node
đã được bật và cảapigee_node
lẫncontrol_node
đều bị tắt. Các nút này sẽ được triển khai ở bước sau. - Lấy thông tin xác thực cho cụm quản trị viên tổ chức:
gdcloud clusters get-credentials ORG_ADMIN_CLUSTER
Trong đó ORG_ADMIN_CLUSTER là tên của cụm GKE quản trị viên tổ chức.
- Tạo môi trường ảo Python:
python3 -m venv venv / source venv/bin/activate
- Chạy tập lệnh triển khai để tạo nút kho lưu trữ:
python apigee/solution_deploy.py gdc-air-gapped
- Định cấu hình SSH cho nút kho lưu trữ:
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
Trong đó, SSH_PUBLIC_KEY_FILE là tên của tệp chứa khoá SSH công khai của bạn.
- Lấy địa chỉ IP bên ngoài cho nút kho lưu trữ:
kubectl get virtualmachineexternalaccess -n $PROJECT $NODE -ojsonpath='{.status.ingressIP}'
- Lấy địa chỉ IP nội bộ cho nút kho lưu trữ:
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
- Sao chép tệp khoá riêng tư SSH vào nút kho lưu trữ:
scp -i SSH_PRIVATE_KEY_FILE ~/apigee-files/* admin@REPO_EXTERNAL_IP:/tmp
Trong trường hợp:
- SSH_PRIVATE_KEY_FILE là tên của tệp chứa khoá SSH riêng tư của bạn.
- REPO_EXTERNAL_IP là địa chỉ IP bên ngoài của nút kho lưu trữ thu được ở bước trước.
- Tải thư mục chứa cấu hình Fluent Bit lên nút kho lưu trữ:
scp -i SSH-PRIVATE-KEY-FILE -r apigee/scripts/fluent-bit admin@REPO_EXTERNAL_IP:/tmp/fluent-bit
Trong trường hợp:
- SSH_PRIVATE_KEY_FILE là tên của tệp chứa khoá SSH riêng tư của bạn.
- REPO_EXTERNAL_IP là địa chỉ IP bên ngoài của nút kho lưu trữ.
- Sao chép
apigee/scripts/repo_setup.sh
vào nút kho lưu trữ. - Trong tập lệnh, hãy thay thế REPO_USER và REPO_PASSWORD bằng tên người dùng và mật khẩu mong muốn cho kho lưu trữ phản chiếu.
- Chạy tập lệnh:
chmod a+x repo_setup.sh
./repo_setup.sh
Nếu bạn gặp lỗi
No such file or directory
, hãy chạy lại tập lệnh. - Kiểm thử kết nối với kho lưu trữ phản chiếu cục bộ từ nút kho lưu trữ.
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
Thay thế VERSION bằng phiên bản Apigee Edge cho Private Cloud mà bạn muốn cài đặt.
- Thay thế
REPO_INTERNAL_IP
,REPO_USER_NAME
vàREPO_PASSWORD
trongapigee/helm/scripts/apigee_setup.sh
bằng các giá trị mong muốn. - Xuất các giá trị dưới dạng biến môi trường:
export REPO_IP=REPO_INTERNAL_IP
export REPO_USER=REPO_USER_NAME
export REPO_PASSWORD=REPO_PASSWORD
- Bật
apigee_node
trongapigee/helm/values-cookie-air-gapped.yaml
như sau:apigee_node: enabled: true
- Chạy tập lệnh triển khai để tạo các nút Apigee:
source venv/bin/activate
python apigee/solution_deploy.py gdc-air-gapped
- Xác thực bằng cụm quản trị viên tổ chức:
gdcloud clusters get-credentials ORG_ADMIN_CLUSTER
Trong đó ORG_ADMIN_CLUSTER là tên của cụm GKE quản trị viên tổ chức.
- Tạo khoá SSH cho từng nút:
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
Trong đó, SSH_PUBLIC_KEY_FILE là tên của tệp chứa khoá SSH công khai của bạn.
- Lấy địa chỉ IP bên ngoài cho các nút Apigee:
for i in 1 2 3 4 5; do kubectl get virtualmachineexternalaccess -n $PROJECT node$i -ojsonpath='{.status.ingressIP}' echo done
- Lấy địa chỉ IP nội bộ cho các nút 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
- (Không bắt buộc) Kiểm tra xem các tập lệnh khởi động có chạy thành công trên các nút Apigee hay không:
- SSH đến nút và chạy lệnh sau:
sudo journalctl -u cloud-final -f
- Tìm nhật ký tương tự như sau:
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
- SSH đến nút và chạy lệnh sau:
- Thay thế
REPO_INTERNAL_IP
,REPO_USER_NAME
vàREPO_PASSWORD
trongapigee/helm/scripts/control_setup.sh
bằng các giá trị mong muốn. - Bật
control_node
trongapigee/helm/values-cookie-air-gapped.yaml
như sau:control_node: enabled: true
- Chạy tập lệnh triển khai để tạo nút điều khiển:
source venv/bin/activate
python apigee/solution_deploy.py gdc-air-gapped
- Định cấu hình quyền truy cập SSH vào nút điều khiển:
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
- Lấy địa chỉ IP bên ngoài cho nút điều khiển:
kubectl get virtualmachineexternalaccess -n $PROJECT control -ojsonpath='{.status.ingressIP}'
- Lấy IP nội bộ cho nút điều khiển:
kubectl get virtualmachines.virtualmachine.GDC.goog -n $PROJECT control -ojsonpath='{.status.network.interfaces[1].ipAddresses[0]}'
- SSH đến nút điều khiển và thiết lập môi trường Ansible:
cd /home/admin
cp -r /tmp/apigee-repos .
cd apigee-repos/ansible-opdk-accelerator/setup
- Thay thế kho lưu trữ git từ xa bằng tệp cục bộ:
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
- Cập nhật cấu hình thiết lập:
- Chỉnh sửa tệp
main.yml
:vi ~/apigee-repos/ansible-opdk-accelerator/setup/roles/apigee-opdk-setup-ansible-controller/tasks/main.yml
- Xoá những tác vụ cần có quyền truy cập vào GitHub:
- Git SSH checkout của kho lưu trữ cấu hình
- Git HTTPS checkout of configuration repositories
- Chạy cẩm nang thiết lập:
cd ~/apigee-repos/ansible-opdk-accelerator/setup
ansible-playbook setup.yml
- Chỉnh sửa tệp
- Tải khoá SSH cho các nút Apigee lên nút điều khiển:
scp -i CONTROL_SSH_PRIVATE_KEY_FILE APIGEE_NODE_SSH_PRIVATE_KEY_FILE admin@CONTROL_EXTERNAL_IP:/home/admin/.ssh/id_rsa
Trong trường hợp:
- CONTROL_SSH_PRIVATE_KEY_FILE là tên của tệp chứa khoá riêng tư SSH của nút điều khiển.
- APIGEE_NODE_SSH_PRIVATE_KEY_FILE là tên của tệp chứa khoá riêng tư SSH của nút Apigee.
- CONTROL_EXTERNAL_IP là địa chỉ IP bên ngoài của nút điều khiển.
- Tạo tệp cấu hình khoảng không quảng cáo Ansible:
- Sao chép nội dung của tệp
apigee/scripts/ansible/prod.cfg
vào tệpprod.cfg
:vi ~/.ansible/multi-planet-configurations/prod.cfg
- Tạo thư mục
edge-dc1
rồi sao chép nội dung của tệpapigee/scripts/ansible/edge-dc1
vào tệpedge-dc1
:mkdir ~/.ansible/inventory/prod
vi ~/.ansible/inventory/prod/edge-dc1
- Sao chép nội dung của tệp
- Cập nhật địa chỉ IP nội bộ của các nút Apigee trong
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
Trong đó, các giá trị cho APIGEE_NODE*_INTERNAL_IP là địa chỉ IP nội bộ của các nút Apigee thu được ở bước trước.
- Định cấu hình tệp
~/.apigee-secure/credentials.yml
bằng các giá trị sau:- 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"
Trong trường hợp:
- APIGEE_REPO_USER là tên người dùng cho kho lưu trữ Apigee.
- APIGEE_REPO_PASSWORD là mật khẩu cho kho lưu trữ Apigee.
- OPDK_QPID_MGMT_USERNAME là tên người dùng cho máy chủ quản lý Apigee QPID.
- OPDK_QPID_MGMT_PASSWORD là mật khẩu cho máy chủ quản lý Apigee QPID.
- Thêm tệp giấy phép hợp lệ của Apigee Edge cho Private Cloud. Tên tệp phải là
license.txt
. - Sao chép nội dung của tệp
~/.apigee-secure/license.txt
vàolicense.txt
mà bạn vừa tạo. - Định cấu hình các giá trị sau trong tệp
~/.apigee/custom-properties.yml
:- opdk_version: "OPDK_VERSION"
- apigee_repo_url: 'APIGEE_REPO_URL'
Trong trường hợp:
- OPDK_VERSION là phiên bản Apigee Edge cho Private Cloud mà bạn muốn cài đặt.
- APIGEE_REPO_URL là URL của kho lưu trữ Apigee.
- Xuất tệp cấu hình dưới dạng một biến môi trường:
export ANSIBLE_CONFIG=~/.ansible/multi-planet-configurations/prod.cfg
- Thay thế kho lưu trữ git từ xa bằng các tệp cục bộ:
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
- Cài đặt các yêu cầu của Ansible:
ansible-galaxy install -r requirements.yml -f
- Vá các vai trò 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
- Thay thế nội dung của tệp
install.yml
bằng nội dung trongapigee/scripts/ansible/install.yml
. - Chạy sổ tay để cài đặt các thành phần Apigee:
ansible-playbook install.yml
- Tắt đường liên kết đặt lại mật khẩu của người dùng trong Giao diện người dùng Edge. Apigee trên GDC không có kết nối Internet không bao gồm máy chủ SMTP. Làm theo các bước trong phần Tắt đường liên kết đặt lại mật khẩu trong Giao diện người dùng Edge.
- Làm theo hướng dẫn trong phần
Tạo các phiên bản sổ đăng ký Harbor để tạo một phiên bản Harbor trong dự án GDC
dev-apigee
. - Làm theo hướng dẫn trong phần
Tạo dự án Harbor để tạo một dự án Harbor có tên là
apigee
. - Làm theo hướng dẫn trong phần Định cấu hình quyền kiểm soát truy cập để thiết lập quyền kiểm soát truy cập cho dự án Harbor.
- Làm theo hướng dẫn trong phần Đăng nhập vào Docker và Helm để định cấu hình quy trình xác thực Docker.
- Cập nhật địa chỉ IP trong tệp
apigee/apigee_user_cluster.toml
như sau:mgmt-server-proxy = "APIGEE_NODE1_EXTERNAL_IP" router-proxy1 = "APIGEE_NODE2_EXTERNAL_IP" router-proxy2 = "APIGEE_NODE3_EXTERNAL_IP"
Trong trường hợp:
- APIGEE_NODE1_EXTERNAL_IP là địa chỉ IP bên ngoài của node1 Apigee mà bạn đã nhận được ở bước trước.
- APIGEE_NODE2_EXTERNAL_IP là địa chỉ IP bên ngoài của Apigee node2 mà bạn đã nhận được ở bước trước.
- APIGEE_NODE3_EXTERNAL_IP là địa chỉ IP bên ngoài của node3 Apigee mà bạn đã nhận được ở bước trước.
- Đặt tệp chứng chỉ SSL (
server.crt
) và tệp khoá (server.key
) để định cấu hình HTTPS trong thư mụcapigee/mgmt-server-proxy
vàapigee/router-proxy
.Để tạo chứng chỉ tự ký, hãy dùng lệnh sau:
openssl req -newkey rsa:4096 -x509 -nodes -keyout server.key -new -out server.crt -subj "/CN=*.apigeetest.com" -sha256 -days 365
- Cập nhật giá trị của
SSH-PASSWORD
cho người dùng gốc trong vùng chứa trình tải lên trong tệpapigee/uploader/Dockerfile
:RUN echo 'root:SSH_PASSWORD' | chpasswd
- Lấy thông tin đăng nhập cho cụm người dùng:
gdcloud clusters get-credentials USER_CLUSTER
Trong đó USER_CLUSTER là tên của cụm GKE người dùng.
- Chạy tập lệnh triển khai để triển khai các nhóm và dịch vụ:
source venv/bin/activate
python apigee/solution_deploy_user_cluster.py gdc-air-gapped
- Lấy địa chỉ IP bên ngoài của các dịch vụ:
kubectl get svc -n $PROJECT_ID
- Cập nhật
SSH_PASSWORD
,root
vàUPLOADER_EXTERNAL_IP
trongapigee/helm/scripts/backup_setup.sh
:sshpass -p SSH_PASSWORD scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null apigee-backup* root@UPLOADER_EXTERNAL_IP:/temp/
Trong trường hợp:
- SSH_PASSWORD là mật khẩu của người dùng root.
- UPLOADER_EXTERNAL_IP là địa chỉ IP bên ngoài của dịch vụ tải lên mà bạn đã nhận được ở một bước trước đó.
- Cập nhật
FLUENTBIT_EXTERNAL_IP
trongapigee/helm/scripts/apigee_setup.sh
:export FLUENTBIT_EXTERNAL_IP=FLUENTBIT_EXTERNAL_IP
- Dừng các máy ảo:
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
- Triển khai lại biểu đồ Helm:
python apigee/solution_deploy.py gdc-air-gapped
- Khởi động các VM:
for i in 1 2 3 4 5; do GDCloud compute instances start node$i --project $PROJECT done
- Cập nhật các giá trị sau trong
apigee/scripts/apigee_org_setup.sh
như minh hoạ. Cập nhật các thông số khác nếu cần.IP1=APIGEE_NODE1_INTERNAL_IP VHOST_ALIAS="APIGEE_NODE2_EXTERNAL_IP:9001 APIGEE_NODE3_EXTERNAL_IP:9001"
Trong trường hợp:
- APIGEE_NODE1_INTERNAL_IP là địa chỉ IP nội bộ của node1 Apigee mà bạn đã nhận được ở bước trước.
- APIGEE_NODE2_EXTERNAL_IP là địa chỉ IP bên ngoài của Apigee node2 mà bạn đã nhận được ở bước trước.
- APIGEE_NODE3_EXTERNAL_IP là địa chỉ IP bên ngoài của node3 Apigee mà bạn đã nhận được ở bước trước.
- Chạy tập lệnh trên node1 để tham gia tổ chức:
chmod a+x apigee_org_setup.sh
./apigee_org_setup.sh
- Lấy địa chỉ IP bên ngoài của dịch vụ
apigee-elb
:gdcloud clusters get-credentials USER_CLUSTER
export PROJECT=dev-apigee
kubectl get svc apigee-elb -n $PROJECT
Trong đó USER_CLUSTER là tên của cụm GKE người dùng.
Dịch vụ này đóng vai trò là điểm cuối cho Giao diện người dùng Edge, Management API và API proxy.
- APIGEE_ELB_EXTERNAL_IP là địa chỉ IP bên ngoài của dịch vụ
apigee-elb
mà bạn đã nhận được ở bước trước. - ORG_NAME là tên của tổ chức Apigee.
- ENV_NAME là tên của môi trường Apigee.
- Đăng nhập vào Giao diện người dùng Edge.
- Trên trang API Proxies (API Proxy), hãy nhấp vào Create (Tạo) để tạo một API proxy mới.
- Trong trang Thông tin chi tiết về proxy, hãy nhập các giá trị sau:
- Loại proxy: Chọn Không có mục tiêu.
- Tên proxy:
ok
- Đường dẫn cơ sở:
/ok
- Mục tiêu:
http://APIGEE_ELB_EXTERNAL_IP:9001
- Nhấp vào Create (Tạo) để tạo API proxy.
- Gửi yêu cầu HTTP đến
/ok
:curl -i http://APIGEE_ELB_EXTERNAL_IP:9001/ok
- Xác nhận rằng phản hồi là
200 OK
. - Làm theo các bước trong phần Tạo kho khoá/kho lưu trữ đáng tin cậy và bí danh để tạo một chứng chỉ tự ký bằng các giá trị sau:
- KeyStore: myTestKeystore
- KeyAlias: myKeyAlias
- Tên chung: apigeetest.com
- Thực hiện lệnh gọi API để tạo máy chủ lưu trữ ảo có tên là
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>'
Trong trường hợp:
- APIGEE_ELB_EXTERNAL_IP là địa chỉ IP bên ngoài của dịch vụ
apigee-elb
mà bạn đã nhận được ở bước trước. - ORG_NAME là tên của tổ chức Apigee.
- ENV_NAME là tên của môi trường Apigee nơi máy chủ ảo sẽ được tạo.
- APIGEE_ELB_EXTERNAL_IP là địa chỉ IP bên ngoài của dịch vụ
- Tạo một proxy API bằng máy chủ ảo bảo mật.
- Trên bộ định tuyến, hãy định cấu hình tính năng phân giải DNS cho máy chủ ảo:
echo '127.0.0.1 api.apigeetest.com' | sudo tee -a /etc/hosts
- Xác nhận rằng các máy chủ ảo hoạt động cục bộ bằng cách gửi một yêu cầu HTTPS đến điểm cuối:
curl https://api.apigeetest.com:9005/ok -v -k
- Định cấu hình quá trình phân giải DNS cho thiết bị đầu cuối:
echo 'APIGEE_ELB_EXTERNAL_IP apigeetest.com' | sudo tee -a /etc/hosts
Trong đó APIGEE_ELB_EXTERNAL_IP là địa chỉ IP bên ngoài của dịch vụ
apigee-elb
mà bạn đã nhận được ở bước trước. - Chuyển đến
https://apigeetest.com/ok
trong trình duyệt web và xác nhận rằng trình duyệt này hoạt động. - Tạo tệp kho khoá từ tệp chứng chỉ SSL và tệp khoá:
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
- Đặt tệp kho khoá trong thư mục Apigee trên node1:
scp -i SSH_PRIVATE_KEY_FILE keystore.jks admin@APIGEE_NODE1_EXTERNAL_IP:/home/admin/
Trong trường hợp:
- SSH_PRIVATE_KEY_FILE là tên của tệp chứa khoá riêng tư SSH của nút Apigee.
- APIGEE_NODE1_EXTERNAL_IP là địa chỉ IP bên ngoài của node1 Apigee mà bạn đã nhận được ở bước trước.
- SSH đến node1 và di chuyển tệp kho khoá đến thư mục Apigee:
sudo mv keystore.jks /opt/apigee/customer/application/
- Tạo tệp cấu hình SSL:
sudo vi /tmp/sslConfigFile
- Cập nhật giá trị của
KEY-PASS-PHRASE
như minh hoạ:HTTPSPORT=9443 DISABLE_HTTP=n KEY_ALGO=JKS KEY_FILE_PATH=/opt/apigee/customer/application/keystore.jks KEY_PASS=KEY_PASS_PHRASE
- Định cấu hình SSL bằng tệp cấu hình:
sudo chown apigee:apigee /tmp/sslConfigFile
/opt/apigee/apigee-service/bin/apigee-service edge-ui configure-ssl -f /tmp/sslConfigFile
- Định cấu hình quá trình phân giải DNS cho Giao diện người dùng Edge:
echo 'APIGEE_ELB_EXTERNAL_IP ui.apigeetest.com' | sudo tee -a /etc/hosts
Trong đó APIGEE_ELB_EXTERNAL_IP là địa chỉ IP bên ngoài của dịch vụ
apigee-elb
mà bạn đã nhận được ở bước trước. - Truy cập vào
https://ui.apigeetest.com:9443
trong một trình duyệt web và xác nhận rằng trình duyệt này hoạt động. Để biết thêm thông tin chi tiết, hãy tham khảo hướng dẫn. - Định cấu hình chủ sở hữu cho tệp kho khoá (sử dụng cùng một chủ sở hữu như Giao diện người dùng Edge):
sudo chown apigee:apigee /opt/apigee/customer/application/keystore.jks
- Tạo tệp thuộc tính:
sudo vi /opt/apigee/customer/application/management-server.properties
- Khởi động lại máy chủ quản lý để các thay đổi có hiệu lực:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- Xác nhận rằng HTTPS hoạt động cục bộ:
curl -u "opdk@apigee.com:Apigee123!" "https://localhost:8443/v1/users" -k
- Từ ứng dụng khách, hãy truy cập vào https://apigeetest.com:8443/v1/users trong trình duyệt. Nhập tên người dùng và mật khẩu quản trị để xác nhận rằng thông tin đăng nhập được định cấu hình chính xác.
Để tìm hiểu thêm về cách cấp quyền và vai trò cho GDC không có kết nối Internet, hãy xem phần Cấp và thu hồi quyền truy cập.
Các điểm hạn chế
Apigee trên GDC không có kết nối Internet có các hạn chế sau:
Lấy các tệp bắt buộc
Để nhận các tệp cài đặt, trước tiên, bạn phải thiết lập một nút được kết nối rồi tải các tệp xuống.
Thiết lập một nút được kết nối
Nút được kết nối là một VM duy nhất bên ngoài GDC mà bạn dùng để tải tệp cài đặt xuống. Máy ảo này cần có quyền truy cập vào Internet và chỉ được dùng cho quy trình cài đặt.
Nút được kết nối yêu cầu dung lượng và cấu hình sau:
Để tạo nút được kết nối, hãy làm theo hướng dẫn trong bài viết Tạo và khởi động một phiên bản máy ảo. Sau khi tạo máy ảo, hãy làm theo hướng dẫn trong bài viết Kết nối với máy ảo Linux. để kết nối với máy ảo. Hãy xem bài viết Các hệ điều hành được GDC hỗ trợ để biết danh sách các hệ điều hành được hỗ trợ.
Tải tệp cài đặt xuống
Cách tải tệp cài đặt xuống:
Thiết lập vùng lưu trữ
Trong bước này, người vận hành GDC sẽ thiết lập một bộ chứa lưu trữ trong dự án GDC để lưu trữ các tệp sao lưu Apigee Edge cho Đám mây riêng tư.
Tạo bộ chứa lưu trữ
Cách tạo bộ chứa lưu trữ trong dự án GDC:
Định cấu hình quyền truy cập vào nhóm
Cách định cấu hình quyền truy cập vào bộ chứa lưu trữ:
Thiết lập nút kho lưu trữ
Trong bước này, người vận hành GDC sẽ thiết lập một nút kho lưu trữ để lưu trữ kho lưu trữ phản chiếu Apigee Edge cho Đám mây riêng tư.
Tạo một nút kho lưu trữ
Cách tạo một nút kho lưu trữ:
Định cấu hình quyền truy cập vào nút kho lưu trữ
Cách định cấu hình quyền truy cập vào nút kho lưu trữ:
Tải tệp cài đặt lên
Ở bước này, người vận hành GDC sẽ tải phiên bản mới nhất của các tệp sau đây lên nút kho lưu trữ:
Cách tải tệp cài đặt lên:
Định cấu hình kho lưu trữ phản chiếu
Cách định cấu hình kho lưu trữ phản chiếu:
Triển khai các nút Apigee
Trong bước này, toán tử GDC sẽ triển khai các nút quản lý API Apigee.
Tạo các nút Apigee
Cách tạo các nút quản lý API Apigee:
Định cấu hình quyền truy cập vào nút Apigee
Định cấu hình quyền truy cập vào các nút quản lý API Apigee:
Thiết lập nút điều khiển
Trong bước này, người vận hành GDC thiết lập một nút điều khiển để quản lý các bản cài đặt Apigee.
Tạo một nút điều khiển
Cách tạo một nút điều khiển:
Định cấu hình quyền truy cập vào nút điều khiển
Cách định cấu hình quyền truy cập vào nút kiểm soát:
Định cấu hình Ansible
Ở bước này, toán tử GDC sẽ thiết lập môi trường trên nút điều khiển.
Cách định cấu hình môi trường Ansible:
Cài đặt các thành phần Apigee
Trong bước này, nhân viên vận hành GDC sẽ cài đặt các thành phần Apigee bằng Ansible.
Cách cài đặt các thành phần Apigee:
Triển khai các nhóm và dịch vụ
Ở bước này, bạn sẽ triển khai trình tải lên, proxy đảo ngược, trình cân bằng tải và các dịch vụ cũng như nhóm ghi nhật ký.
Cách triển khai các nhóm và dịch vụ:
Cập nhật IP của trình tải lên và trình chuyển tiếp Fluent Bit
Ở bước này, bạn sẽ cập nhật IP của trình tải lên và trình chuyển tiếp Fluent Bit trong tập lệnh sao lưu và thiết lập Apigee.
Để cập nhật tập lệnh khởi động, bạn cần khởi động lại các nút Apigee. Cách khởi động lại các nút:
Tham gia tổ chức Apigee
Trong bước này, toán tử GDC sẽ tham gia tổ chức Apigee bằng cách chạy một tập lệnh thiết lập trên node1.
Cách tham gia tổ chức Apigee:
Kiểm tra khả năng kết nối HTTP
Trong bước này, bạn sẽ kiểm thử khả năng kết nối HTTP cho Management API và API proxy.
Cách kiểm tra khả năng kết nối HTTP:
Kiểm thử Management API
Để kiểm thử Management API, hãy gửi một yêu cầu HTTP đến điểm cuối:
curl -u "opdk@apigee.com:Apigee123!" "http://APIGEE_ELB_EXTERNAL_IP:8080/v1/o/ORG_NAME/e/ENV_NAME/provisioning/axstatus"
Trong trường hợp:
Kiểm thử proxy API
Cách kiểm thử proxy API:
Định cấu hình TLS và kiểm thử HTTPS
Trong bước này, toán tử GDC sẽ định cấu hình giao thức Bảo mật tầng truyền tải (TLS) cho API proxy, Giao diện người dùng Edge và Management API.
Định cấu hình TLS cho proxy API
Định cấu hình TLS cho Giao diện người dùng Edge
Cách định cấu hình TLS cho giao diện người dùng Edge:
Định cấu hình TLS cho Management API
Cách định cấu hình TLS cho Management API:
Thay thế giá trị của KEY_PASS_PHRASE
bằng mật khẩu kho khoá, như minh hoạ:
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