Cài đặt Apigee trên Google Distributed Cloud không có kết nối Internet

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:

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:

  1. 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.
  2. Tải xuống, cài đặtđị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.
  3. Lấy thông tin đăng nhập cần thiết để sử dụng CLI gdcloud và API kubectl. 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.
  4. 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.
  5. 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ỉnh LoggingTarget trong không gian tên dự án.
    • LoggingTarget Editor: Chỉnh sửa tài nguyên tuỳ chỉnh LoggingTarget 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óm
    • Project 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.
  • Để 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:

    • 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.

    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:

    • 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

    Để 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:

    1. 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.
    2. 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.
    3. 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.

    4. 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.

    5. 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
    6. 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.

    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:

    1. 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.

    2. Đặ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.
    3. Á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.

    Đị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ữ:

    1. Tạo một tài khoản dịch vụ trong dự án:
      gdcloud iam service-accounts create $BUCKET-sa \
          --project=$PROJECT
    2. 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
    3. 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==
    4. 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:
      1. 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.

      2. Á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.
    5. 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:
      1. 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.

      2. 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
    6. 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.

    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ữ:

    1. 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ẫn control_node đều bị tắt. Các nút này sẽ được triển khai ở bước sau.

    2. 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.

    3. Tạo môi trường ảo Python:
      python3 -m venv venv /
      source venv/bin/activate
    4. 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 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ữ:

    1. Đị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.

    2. 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}'
    3. 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]}'

    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ữ:

    • apigee-4.53.01
    • apigee-nginx.tar
    • postgresql14.tar
    • fluentbit.tar
    • ansible-rpms.tar
    • apigee-repos.tar

    Cách tải tệp cài đặt lên:

    1. 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.
    2. 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ữ.

    Đị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:

    1. Sao chép apigee/scripts/repo_setup.sh vào nút kho lưu trữ.
    2. Trong tập lệnh, hãy thay thế REPO_USERREPO_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.
    3. 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.

    4. 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.

    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:

    1. Thay thế REPO_INTERNAL_IP, REPO_USER_NAMEREPO_PASSWORD trong apigee/helm/scripts/apigee_setup.sh bằng các giá trị mong muốn.
    2. 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
    3. Bật apigee_node trong apigee/helm/values-cookie-air-gapped.yaml như sau:
      apigee_node:
        enabled: true
      
    4. 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

    Đị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:

    1. 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.

    2. 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.

    3. 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
    4. 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
    5. (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:
      1. SSH đến nút và chạy lệnh sau:
        sudo journalctl -u cloud-final -f
      2. 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

    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:

    1. Thay thế REPO_INTERNAL_IP, REPO_USER_NAMEREPO_PASSWORD trong apigee/helm/scripts/control_setup.sh bằng các giá trị mong muốn.
    2. Bật control_node trong apigee/helm/values-cookie-air-gapped.yaml như sau:
      control_node:
        enabled: true
      
    3. 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 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:

    1. Đị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
    2. 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}'
    3. 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]}'

    Đị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:

    1. 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
    2. 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
      
    3. Install Ansible requirements:
        sudo chown -R admin /home/admin/apigee-repos
        ansible-galaxy install -r requirements.yml -f
    4. Cập nhật cấu hình thiết lập:
      1. Chỉnh sửa tệp main.yml:
        vi ~/apigee-repos/ansible-opdk-accelerator/setup/roles/apigee-opdk-setup-ansible-controller/tasks/main.yml
      2. 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
      3. Chạy cẩm nang thiết lập:
        cd ~/apigee-repos/ansible-opdk-accelerator/setup
        ansible-playbook setup.yml
    5. 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.
    6. Tạo tệp cấu hình khoảng không quảng cáo Ansible:
      1. Sao chép nội dung của tệp apigee/scripts/ansible/prod.cfg vào tệp prod.cfg:
        vi ~/.ansible/multi-planet-configurations/prod.cfg
      2. Tạo thư mục edge-dc1 rồi sao chép nội dung của tệp apigee/scripts/ansible/edge-dc1 vào tệp edge-dc1:
        mkdir ~/.ansible/inventory/prod
        vi ~/.ansible/inventory/prod/edge-dc1
    7. 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.

    8. Đị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.

    9. 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.
    10. Sao chép nội dung của tệp ~/.apigee-secure/license.txt vào license.txt mà bạn vừa tạo.
    11. Đị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.

    12. 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

    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:

    1. 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
    2. Cài đặt các yêu cầu của Ansible:
      ansible-galaxy install -r requirements.yml -f
    3. 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
    4. Thay thế nội dung của tệp install.yml bằng nội dung trong apigee/scripts/ansible/install.yml.
    5. Chạy sổ tay để cài đặt các thành phần Apigee:
      ansible-playbook install.yml
    6. 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.

    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ụ:

    1. 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.
    2. 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.
    3. 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.
    4. 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.
    5. 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.

    6. Đặt tệp chứng chỉ SSL (server.crt) và tệp khoá (server.key) để định cấu hình HTTPS trong thư mục apigee/mgmt-server-proxyapigee/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
    7. 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ệp apigee/uploader/Dockerfile:
      RUN echo 'root:SSH_PASSWORD' | chpasswd
    8. 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.

    9. 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
    10. 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 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.

    1. Cập nhật SSH_PASSWORD, rootUPLOADER_EXTERNAL_IP trong 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/

      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 đó.

    2. Cập nhật FLUENTBIT_EXTERNAL_IP trong apigee/helm/scripts/apigee_setup.sh:
      export FLUENTBIT_EXTERNAL_IP=FLUENTBIT_EXTERNAL_IP

    Để 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:

    1. 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
    2. Triển khai lại biểu đồ Helm:
      python apigee/solution_deploy.py gdc-air-gapped
    3. Khởi động các VM:
      for i in 1 2 3 4 5; do
        GDCloud compute instances start node$i --project $PROJECT
        done

    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:

    1. 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.

    2. 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

    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:

    1. 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.

    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:

    • 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.

    Kiểm thử proxy API

    Cách kiểm thử proxy API:

    1. Đăng nhập vào Giao diện người dùng Edge.
    2. Trên trang API Proxies (API Proxy), hãy nhấp vào Create (Tạo) để tạo một API proxy mới.
    3. 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
    4. Nhấp vào Create (Tạo) để tạo API proxy.
    5. Gửi yêu cầu HTTP đến /ok:
      curl -i http://APIGEE_ELB_EXTERNAL_IP:9001/ok
    6. Xác nhận rằng phản hồi là 200 OK.

    Đị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

    1. 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
    2. 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.
    3. Tạo một proxy API bằng máy chủ ảo bảo mật.
    4. 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
    5. 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
    6. Đị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.

    7. 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.

    Đị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:

    1. 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
    2. Đặ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.

    3. SSH đến node1 và di chuyển tệp kho khoá đến thư mục Apigee:
      sudo mv keystore.jks /opt/apigee/customer/application/
    4. Tạo tệp cấu hình SSL:
      sudo vi /tmp/sslConfigFile
    5. 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
    6. Đị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
    7. Đị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.

    8. 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 TLS cho Management API

    Cách định cấu hình TLS cho Management API:

    1. Đị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
    2. Tạo tệp thuộc tính:
      sudo vi /opt/apigee/customer/application/management-server.properties
    3. 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
    4. 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
    5. 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
    6. 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.

    Bước tiếp theo