使用 Helm 資訊套件安裝及管理 Apigee Hybrid

本文件會逐步引導您使用 Helm 圖表安裝 Apigee hybrid 1.10 版。

版本

Apigee Hybrid Helm 圖表適用於 Apigee Hybrid 1.10.x 版。如需混合版本清單,請參閱 Apigee Hybrid 版本記錄

必要條件

範圍

支援的 Kubernetes 平台和版本

平台 版本
GKE 1.24、1.25、1.26
AKS 1.24、1.25、1.26
EKS 1.24、1.25、1.26
OpenShift 4.11、4.12

限制

  • Helm 圖表不完全支援 CRD,因此我們會使用 kubectl -k 指令安裝及升級 CRD。我們希望遵循 Kubernetes 管理方面的社群和 Google 最佳做法。透過 Helm 部署的 CRD 尚未達到社群狀態,因此我們無法提供廣泛支援,也無法提供這類模型的相關要求。因此,請按照本文件所述,使用 kubectl 管理 Apigee CRD。
  • apigeectl 中,我們使用了 overrides.yaml 中的檔案來建立服務帳戶和憑證,但 Helm 不支援參照資訊套件目錄以外的檔案。請為服務帳戶和憑證檔案選取下列其中一個選項:
    • 將相關檔案的副本放入每個圖表目錄中
    • 為每個檔案或資料夾在各個圖表目錄中建立符號連結。Helm 會追蹤圖表目錄中的符號連結,但會輸出以下警告:
      apigee-operator/gsa -> ../gsa
    • 使用 Kubernetes 密鑰。例如,服務帳戶:
      kubectl create secret generic SECRET_NAME \
        --from-file="client_secret.json=CLOUD_IAM_FILE_NAME.json" \
        -n apigee
      
        替換下列項目:
      • SECRET_NAME 與您建立的 Kubernetes 密鑰名稱。
      • CLOUD_IAM_FILE_NAME.json,名稱為下載的 JSON 檔案名稱。

支援的 Kubernetes 平台和版本

如需支援平台的清單,請參閱 Apigee hybrid 支援平台表格中的 v1.10 欄。

必要權限

下表列出 Kubernetes 和 Apigee 所需的資源和權限。

如要篩選這個表格,請執行下列一或多項操作:選取類別、輸入搜尋字詞,或按一下資料欄標題進行排序。

類別 資源 資源類型 Kubernetes RBAC 權限
Datastore apigeedatastores.apigee.cloud.google.com Apigee create delete patch update
Datastore certificates.cert-manager.io Kubernetes create delete patch update
Datastore cronjobs.batch Kubernetes create delete patch update
Datastore jobs.batch Kubernetes create delete patch update
Datastore secrets Kubernetes create delete patch update
Env apigeeenvironments.apigee.cloud.google.com Apigee create delete patch update
Env secrets Kubernetes create delete patch update
Env serviceaccounts Kubernetes create delete patch update
Ingress 管理工具 certificates.cert-manager.io Kubernetes create delete patch update
Ingress 管理工具 configmaps Kubernetes create delete patch update
Ingress 管理工具 deployments.apps Kubernetes create get delete patch update
Ingress 管理工具 horizontalpodautoscalers.autoscaling Kubernetes create delete patch update
Ingress 管理工具 issuers.cert-manager.io Kubernetes create delete patch update
Ingress 管理工具 serviceaccounts Kubernetes create delete patch update
Ingress 管理工具 services Kubernetes create delete patch update
運算子 apigeedatastores.apigee.cloud.google.com Apigee create delete get list patch update watch
運算子 apigeedatastores.apigee.cloud.google.com/finalizers Apigee get patch update
運算子 apigeedatastores.apigee.cloud.google.com/status Apigee get patch update
運算子 apigeedeployments.apigee.cloud.google.com Apigee create delete get list patch update watch
運算子 apigeedeployments.apigee.cloud.google.com/finalizers Apigee get patch update
運算子 apigeedeployments.apigee.cloud.google.com/status Apigee get patch update
運算子 apigeeenvironments.apigee.cloud.google.com Apigee create delete get list patch update watch
運算子 apigeeenvironments.apigee.cloud.google.com/finalizers Apigee get patch update
運算子 apigeeenvironments.apigee.cloud.google.com/status Apigee get patch update
運算子 apigeeissues.apigee.cloud.google.com Apigee create delete get list watch
運算子 apigeeorganizations.apigee.cloud.google.com Apigee create delete get list patch update watch
運算子 apigeeorganizations.apigee.cloud.google.com/finalizers Apigee get patch update
運算子 apigeeorganizations.apigee.cloud.google.com/status Apigee get patch update
運算子 apigeeredis.apigee.cloud.google.com Apigee create delete get list patch update watch
運算子 apigeeredis.apigee.cloud.google.com/finalizers Apigee get patch update
運算子 apigeeredis.apigee.cloud.google.com/status Apigee get patch update
運算子 apigeerouteconfigs.apigee.cloud.google.com Apigee get list
運算子 apigeeroutes.apigee.cloud.google.com Apigee create delete get list patch update watch
運算子 apigeeroutes.apigee.cloud.google.com/finalizers Apigee get patch update
運算子 apigeeroutes.apigee.cloud.google.com/status Apigee get patch update
運算子 apigeetelemetries.apigee.cloud.google.com Apigee create delete get list patch update watch
運算子 apigeetelemetries.apigee.cloud.google.com/finalizers Apigee get patch update
運算子 apigeetelemetries.apigee.cloud.google.com/status Apigee get list patch update
運算子 cassandradatareplications.apigee.cloud.google.com Apigee get list patch update watch
運算子 cassandradatareplications.apigee.cloud.google.com/finalizers Apigee get patch update
運算子 cassandradatareplications.apigee.cloud.google.com/status Apigee get patch update
運算子 *.networking.x.k8s.io Kubernetes get list watch
運算子 apiservices.apiregistration.k8s.io Kubernetes create delete get list patch update watch
運算子 certificates.cert-manager.io Kubernetes create delete get list patch update watch
運算子 certificates.cert-manager.io/finalizers Kubernetes create delete get list patch update watch
運算子 certificatesigningrequests.certificates.k8s.io Kubernetes create delete get update watch
運算子 certificatesigningrequests.certificates.k8s.io/approval Kubernetes create delete get update watch
運算子 certificatesigningrequests.certificates.k8s.io/status Kubernetes create delete get update watch
運算子 clusterissuers.cert-manager.io Kubernetes create get watch
運算子 clusterrolebindings.rbac.authorization.k8s.io Kubernetes create delete get list patch update watch
運算子 clusterroles.rbac.authorization.k8s.io Kubernetes create delete get list patch update watch
運算子 configmaps Kubernetes create delete get list patch update watch
運算子 configmaps/status Kubernetes get patch update
運算子 cronjobs.batch Kubernetes create delete get list patch update watch
運算子 customresourcedefinitions.apiextensions.k8s.io Kubernetes get list watch
運算子 daemonsets.apps Kubernetes create delete get list patch update watch
運算子 deployments.apps Kubernetes get list watch
運算子 deployments.extensions Kubernetes get list watch
運算子 destinationrules.networking.istio.io Kubernetes create delete get list patch update watch
運算子 endpoints Kubernetes get list watch
運算子 endpointslices.discovery.k8s.io Kubernetes get list watch
運算子 events Kubernetes create delete get list patch update watch
運算子 gateways.networking.istio.io Kubernetes create delete get list patch update watch
運算子 horizontalpodautoscalers.autoscaling Kubernetes create delete get list patch update watch
運算子 ingressclasses.networking.k8s.io Kubernetes get list watch
運算子 ingresses.networking.k8s.io/status Kubernetes all verbs
運算子 issuers.cert-manager.io Kubernetes create delete get list patch update watch
運算子 jobs.batch Kubernetes create delete get list patch update watch
運算子 leases.coordination.k8s.io Kubernetes create get list update
運算子 namespaces Kubernetes create get list watch
運算子 nodes Kubernetes get list watch
運算子 peerauthentications.security.istio.io Kubernetes create delete get list patch update watch
運算子 persistentvolumeclaims Kubernetes create delete get list patch update watch
運算子 persistentvolumes Kubernetes get list watch
運算子 poddisruptionbudgets.policy Kubernetes create delete get list patch update watch
運算子 pods Kubernetes create delete get list patch update watch
運算子 pods/exec Kubernetes create
運算子 replicasets.apps Kubernetes create delete get list patch update watch
運算子 replicasets.extensions Kubernetes get list watch
運算子 resourcequotas Kubernetes create delete get list patch update watch
運算子 rolebindings.rbac.authorization.k8s.io Kubernetes create delete get list patch update watch
運算子 roles.rbac.authorization.k8s.io Kubernetes create delete get list patch update watch
運算子 secrets Kubernetes batch create delete get list patch update watch
運算子 securitycontextconstraints.security.openshift.io Kubernetes create get list
運算子 serviceaccounts Kubernetes create delete get list patch update watch
運算子 services Kubernetes batch create delete get list patch update watch
運算子 signers.certificates.k8s.io Kubernetes approve
運算子 statefulsets.apps Kubernetes create delete get list patch update watch
運算子 subjectaccessreviews.authorization.k8s.io Kubernetes create get list
運算子 tokenreviews.authentication.k8s.io Kubernetes create
運算子 virtualservices.networking.istio.io Kubernetes create delete get list patch update watch
機構 apigeeorganizations.apigee.cloud.google.com Apigee create delete patch update
機構 secrets Kubernetes create delete patch update
機構 serviceaccounts Kubernetes create delete patch update
Redis apigeeredis.apigee.cloud.google.com Apigee create delete patch update
Redis secrets Kubernetes create delete patch update
遙測 apigeetelemetry.apigee.cloud.google.com Apigee create delete patch update
遙測 secrets Kubernetes create delete patch update
遙測 serviceaccounts Kubernetes create delete patch update
虛擬主機 apigeerouteconfigs.apigee.cloud.google.com Apigee create delete patch update
虛擬主機 secrets Kubernetes create delete patch update

另請參閱:

準備安裝

Apigee Hybrid 圖表會託管在 Google Artifact Registry 中:

oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts

提取 Apigee Helm 資訊套件

使用 pull 指令,並使用下列指令將所有 Apigee 混合 Helm 圖表複製到本機儲存空間:

export CHART_REPO=oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts
export CHART_VERSION=1.10.5
helm pull $CHART_REPO/apigee-operator --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-datastore --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-env --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-ingress-manager --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-org --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-redis --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-telemetry --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-virtualhost --version $CHART_VERSION --untar

安裝 Apigee Hybrid

安裝程序總覽

元件的安裝順序為從左到右,如下圖所示。圖中的垂直堆疊元件可一起安裝,安裝順序不拘。安裝任何元件後,您隨時可以個別更新該元件,例如複本、記憶體、CPU 等。

安裝順序:cert manager、CRD、Apigee 操作員、堆疊元件 (Redis、資料儲存庫、遙測和 ingress manager)、組織、堆疊元件 (env 和虛擬主機)

準備使用 Helm 資訊套件安裝 Apigee Hybrid

  1. 建立要用於 apigee 資源的命名空間。這個值應與 overrides.yaml 檔案中的命名空間欄位相符。如果 overrides.yaml 中未提供此值,則預設值為 apigee
    1. 檢查命名空間是否已存在:

      kubectl get namespace apigee

      如果命名空間存在,輸出內容會包含:

        NAME     STATUS   AGE
        apigee   Active   1d
    2. 如果命名空間不存在,請建立一個:

      kubectl create namespace apigee
  2. 建立 Apigee 操作員資源使用的 apigee-system 命名空間。
    1. 檢查命名空間是否已存在:

      kubectl get namespace apigee-system
    2. 如果命名空間不存在,請建立一個:

      kubectl create namespace apigee-system
  3. 建立服務帳戶,並指派適當的 IAM 角色給這些帳戶。Apigee hybrid 會使用下列服務帳戶:

    服務帳戶 IAM 角色
    apigee-cassandra Storage 物件管理員
    apigee-logger 記錄寫入者
    apigee-mart Apigee Connect 代理人
    apigee-metrics Monitoring 指標寫入者
    apigee-runtime 不需要角色
    apigee-synchronizer Apigee 同步處理工具管理員
    apigee-udca Apigee 數據分析代理人
    apigee-watcher Apigee 執行階段代理人

    Apigee 在 apigee-operator/etc/tools 目錄中提供 create-service-account 工具:

    APIGEE_HELM_CHARTS_HOME/
    └── apigee-operator/
        └── etc/
            └── tools/
                └── create-service-account
    

    這項工具會建立服務帳戶、為每個帳戶指派 IAM 角色,並下載每個帳戶的 JSON 格式憑證檔案。

    1. 建立要下載服務帳戶憑證檔案的目錄。您將在以下指令中指定此值,並將其放在 SERVICE_ACCOUNTS_PATH 的位置。
    2. 您可以使用單一指令搭配下列選項,建立所有服務帳戶:
      APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account --env prod --dir SERVICE_ACCOUNTS_PATH
      
    3. 在覆寫檔案中列出服務帳戶名稱:
      ls service-accounts
      
      my_project-apigee-cassandra.json    my_project-apigee-runtime.json
      my_project-apigee-logger.json       my_project-apigee-synchronizer.json
      my_project-apigee-mart.json         my_project-apigee-udca.json
      my_project-apigee-metrics.json      my_project-apigee-watcher.json

      如需詳細資訊,請參閱:

  4. 安裝前,請查看 overrides.yaml 檔案,確認設定:
    instanceID: UNIQUE_ID_TO_IDENTIFY_THIS_CLUSTER
    namespace: apigee # required for Helm charts installation
    
    # By default, logger and metrics are enabled and requires below details
    # Google Cloud project and cluster
    gcp:
      projectID: PROJECT_ID
      region: REGION
    
    k8sCluster:
      name: CLUSTER_NAME
      region: REGION
    
    org: ORG_NAME
    
    envs:
    - name: "ENV_NAME"
      serviceAccountPaths:
        runtime: "PATH_TO_RUNTIME_SVC_ACCOUNT"
        synchronizer: "PATH_TO_SYNCHRONIZER_SVC_ACCOUNT"
        udca: "PATH_TO_UDCA_SVC_ACCOUNT"
    
    ingressGateways:
    - name: GATEWAY_NAME # maximum 17 characters, eg: "ingress-1". See Known issue 243167389.
      replicaCountMin: 1
      replicaCountMax: 2
      svcType: LoadBalancer
    
    virtualhosts:
    - name: ENV_GROUP_NAME
      selector:
        app: apigee-ingressgateway
        ingress_name: GATEWAY_NAME
      sslSecret: SECRET_NAME
    
    mart:
      serviceAccountPath: "PATH_TO_MART_SVC_ACCOUNT"
    
    logger:
      enabled: TRUE_FALSE # lowercase without quotes, eg: true
      serviceAccountPath: "PATH_TO_LOGGER_SVC_ACCOUNT"
    
    metrics:
      enabled: TRUE_FALSE # lowercase without quotes, eg: true
      serviceAccountPath: "PATH_TO_METRICS_SVC_ACCOUNT"
    
    udca:
      serviceAccountPath: "PATH_TO_UDCA_SVC_ACCOUNT"
    
    connectAgent:
      serviceAccountPath: "PATH_TO_MART_SVC_ACCOUNT"
    
    watcher:
      serviceAccountPath: "PATH_TO_WATCHER_SVC_ACCOUNT"

    這與您要用於此 Helm 安裝作業的覆寫設定相同。如需其他設定,請參閱設定屬性參考資料

    如需其他覆寫檔案範例,請參閱「步驟 6:設定混合式執行階段」。

  5. 啟用同步器存取權。這是安裝 Apigee Hybrid 的必要條件。
    1. 請使用下列指令,檢查同步器存取權是否已啟用:

      export TOKEN=$(gcloud auth print-access-token)
      
      curl -X POST -H "Authorization: Bearer $TOKEN" \
        -H "Content-Type:application/json" \
        "https://apigee.googleapis.com/v1/organizations/ORG_NAME:getSyncAuthorization" \
        -d ''
      

      輸出內容應如下所示:

      {
        "identities":[
           "serviceAccount:SYNCHRONIZER_SERVICE_ACCOUNT_ID"
        ],
        "etag":"BwWJgyS8I4w="
      }
    2. 如果輸出內容不含服務帳戶 ID,請啟用同步器存取權。您的帳戶必須具備 Apigee 機構管理員 IAM 角色 (roles/apigee.admin),才能執行這項工作。

      curl -X POST -H "Authorization: Bearer $TOKEN" \
        -H "Content-Type:application/json" \
        "https://apigee.googleapis.com/v1/organizations/ORG_NAME:setSyncAuthorization" \
        -d '{"identities":["'"serviceAccount:SYNCHRONIZER_SERVICE_ACCOUNT_ID"'"]}'
      

      詳情請參閱 Apigee hybrid 安裝說明文件中的「 步驟 7:啟用同步處理工具存取權」。

  6. 使用下列指令安裝 Cert Manager:
    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.1/cert-manager.yaml
    
  7. 安裝 Apigee CRD:

    1. 執行下列指令,使用 kubectl 模擬測試功能:

      kubectl apply -k  apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false --dry-run=server
      
    2. 使用模擬執行指令驗證後,請執行下列指令:

      kubectl apply -k  apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false
      
    3. 使用 kubectl get crds 指令驗證安裝作業:
      kubectl get crds | grep apigee

      輸出內容應如下所示:

      apigeedatastores.apigee.cloud.google.com                    2023-10-09T14:48:30Z
      apigeedeployments.apigee.cloud.google.com                   2023-10-09T14:48:30Z
      apigeeenvironments.apigee.cloud.google.com                  2023-10-09T14:48:31Z
      apigeeissues.apigee.cloud.google.com                        2023-10-09T14:48:31Z
      apigeeorganizations.apigee.cloud.google.com                 2023-10-09T14:48:32Z
      apigeeredis.apigee.cloud.google.com                         2023-10-09T14:48:33Z
      apigeerouteconfigs.apigee.cloud.google.com                  2023-10-09T14:48:33Z
      apigeeroutes.apigee.cloud.google.com                        2023-10-09T14:48:33Z
      apigeetelemetries.apigee.cloud.google.com                   2023-10-09T14:48:34Z
      cassandradatareplications.apigee.cloud.google.com           2023-10-09T14:48:35Z
      
  8. 查看叢集節點上的現有標籤。 根據預設,Apigee 會在標記為 cloud.google.com/gke-nodepool=apigee-data 的節點上排定資料 Pod,並在標記為 cloud.google.com/gke-nodepool=apigee-runtime 的節點上排定執行階段 Pod。您可以在 overrides.yaml 檔案中自訂節點集區標籤。

    詳情請參閱「 設定專屬節點叢集」。

安裝 Apigee Hybrid Helm 資訊套件

  1. 安裝 Apigee Operator/Controller:

    helm upgrade operator apigee-operator/ \
      --install \
      --namespace apigee-system \
      --atomic \
      -f overrides.yaml
    

    確認 Apigee Operator 安裝作業:

    helm ls -n apigee-system
    
    NAME           NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                   APP VERSION
    operator    apigee-system   3               2023-06-26 00:42:44.492009 -0800 PST    deployed        apigee-operator-1.10.5   1.10.5

    確認可用性,確認該服務是否已啟用:

    kubectl -n apigee-system get deploy apigee-controller-manager
    
    NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
    apigee-controller-manager   1/1     1            1           7d20h
  2. 安裝 Apigee 資料儲存庫:

    helm upgrade datastore apigee-datastore/ \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides.yaml
    

    檢查 apigeedatastore 的狀態,確認其已啟用並執行:

    kubectl -n apigee get apigeedatastore default
    
    NAME      STATE       AGE
    default   running    2d
  3. 安裝 Apigee 遙測:

    helm upgrade telemetry apigee-telemetry/ \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides.yaml
    

    查看狀態,確認服務已啟用及執行:

    kubectl -n apigee get apigeetelemetry apigee-telemetry
    
    NAME               STATE     AGE
    apigee-telemetry   running   2d
  4. 安裝 Apigee Redis:

    helm upgrade redis apigee-redis/ \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides.yaml
    

    查看狀態,確認服務已啟用及執行:

    kubectl -n apigee get apigeeredis default
    
    NAME      STATE     AGE
    default   running   2d
  5. 安裝 Apigee 入口管理工具:

    helm upgrade ingress-manager apigee-ingress-manager/ \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides.yaml
    

    確認可用性,確認該服務是否已啟用:

    kubectl -n apigee get deployment apigee-ingressgateway-manager
    
    NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
    apigee-ingressgateway-manager   2/2     2            2           2d
  6. 安裝 Apigee 機構:

    helm upgrade ORG_NAME apigee-org/ \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides.yaml
    

    檢查相關機構的狀態,確認該機構是否已啟用及運作:

    kubectl -n apigee get apigeeorg
    
    NAME                      STATE     AGE
    apigee-org1-xxxxx          running   2d
  7. 安裝環境。

    您一次只能安裝一個環境。使用 --set env=ENV_NAME 指定環境:

    helm upgrade apigee-env-ENV_NAME apigee-env/ \
      --install \
      --namespace apigee \
      --atomic \
      --set env=ENV_NAME \
      -f overrides.yaml
    

    檢查相應環境的狀態,確認環境已啟用並執行:

    kubectl -n apigee get apigeeenv
    
    NAME                          STATE       AGE   GATEWAYTYPE
    apigee-org1-dev-xxx            running     2d
  8. 建立 TLS 憑證。您必須在 Apigee 混合型設定中,為執行階段入口網關提供 TLS 憑證。
    1. 建立憑證。在實際工作環境中,您必須使用已簽署的憑證。您可以使用憑證和金鑰組合,也可以使用 Kubernetes 密鑰。

      為了示範及測試安裝作業,執行階段閘道可接受自行簽署的憑證。在以下範例中,我們使用 openssl 產生自行簽署的憑證:

      openssl req -nodes -new -x509 \
        -keyout PATH_TO_CERTS_DIRECTORY/keystore_ENV_GROUP_NAME.key \
        -out PATH_TO_CERTS_DIRECTORY/keystore_ENV_GROUP_NAME.pem \
        -subj '/CN='YOUR_DOMAIN'' -days 3650
      

      詳情請參閱「步驟 5:建立 TLS 憑證」。

    2. 建立 Kubernetes 密鑰以參照憑證:

      kubectl create secret generic NAME \
        --from-file="cert=PATH_TO_CRT_FILE" \
        --from-file="key=PATH_TO_KEY_FILE" \
        -n apigee
      
  9. 安裝虛擬主機。

    您必須一次安裝一個環境群組 (虛擬主機)。使用 --set envgroup=ENV_GROUP_NAME 指定環境群組:

    # repeat the following command for each env group mentioned in the overrides.yaml file
    helm upgrade apigee-virtualhost-ENV_GROUP_NAME apigee-virtualhost/ \
      --install \
      --namespace apigee \
      --atomic \
      --set envgroup=ENV_GROUP_NAME \
      -f overrides.yaml
    

    這會建立 ApigeeRouteConfig (ARC),當 Apigee 監控器從控管層擷取環境群組相關詳細資料時,ARC 會在內部建立 ApigeeRoute (AR)。因此,請檢查對應的 AR 狀態是否正在執行:

    kubectl -n apigee get arc
    
    NAME                                STATE   AGE
    apigee-org1-dev-egroup                       2d
    kubectl -n apigee get ar
    
    NAME                                        STATE     AGE
    apigee-org1-dev-egroup-xxxxxx                running   2d

搭配 Apigee hybrid 使用 Helm 圖表的其他用途

Cassandra 備份與還原

  1. 如要啟用備份功能,請按照下列步驟操作:
    1. 更新 overrides.yaml 檔案中的 Cassandra 備份詳細資料:

      cassandra:
        backup:
          enabled: true
          serviceAccountPath: PATH_TO_GSA_FILE
          dbStorageBucket: BUCKET_LINK
          schedule: "45 23 * * 6"
    2. apigee-datastore 資訊套件上執行 Helm 升級:

      helm upgrade datastore apigee-datastore/ \
        --namespace apigee \
        --atomic \
        -f overrides.yaml
      
  2. 同樣地,如要啟用還原功能:
    1. 更新 overrides.yaml 檔案中的 Cassandra 還原詳細資料:

      cassandra:
        restore:
          enabled: true
          snapshotTimestamp: TIMESTAMP
          serviceAccountPath: PATH_TO_GSA_FILE
          cloudProvider: "CSI"
    2. apigee-datastore 資訊套件上執行 Helm 升級:

      helm upgrade datastore apigee-datastore/ \
        --namespace apigee \
        --atomic \
        -f overrides.yaml
      

如要進一步瞭解 Cassandra 備份與還原作業,請參閱「Cassandra 備份總覽」。

多區域擴充

使用 Helm 圖表設定多個區域時,需要的先決條件與目前的 apigeectl 程序相同。詳情請參閱多地區部署的 必要條件

為多區域設定混合式服務的程序,與設定多區域種子主機和 Kubernetes 叢集與情境的現有程序相同。

設定第一個區域

請按照下列步驟設定第一個區域,並準備設定第二個區域:

  1. 請按照「 為多區域設定 Apigee hybrid」一文中的步驟,在平台上設定多區域種子主機。
  2. 針對建立的第一個區域,取得 apigee 命名空間中的 Pod:

    kubectl get pods -o wide -n apigee
    
  3. 找出這個區域中 Cassandra 的多區域種子主機位址,例如 10.0.0.11
  4. 為第二個區域準備 overrides.yaml 檔案,並新增種子主機 IP 位址,如下所示:

    cassandra:
      multiRegionSeedHost: "SEED_HOST_IP_ADDRESS"
      datacenter: "DATACENTER_NAME"
      rack: "RACK_NAME"
      clusterName: CLUSTER_NAME
      hostNetwork: false

    更改下列內容:

    • SEED_HOST_IP_ADDRESS 與種子主機 IP 位址,例如 10.0.0.11
    • DATACENTER_NAME 與資料中心名稱,例如 dc-2
    • RACK_NAME 加上機架名稱,例如 ra-1
    • CLUSTER_NAME 改為 Apigee 叢集的名稱。根據預設,這個值為 apigeecluster。如果您使用其他叢集名稱,則必須為 cassandra.clusterName 指定值。這個值在所有地區都必須相同。

設定第二個區域

如要設定新的區域,請按照下列步驟操作:

  1. 在區域 2 中安裝 cert-manager

    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.1/cert-manager.yaml
    
  2. 將憑證從現有叢集複製到新叢集。 Cassandra 和其他混合式元件會使用新的 CA 根目錄,用於 mTLS。因此,叢集中的憑證必須保持一致。
    1. 將內容設定為原始命名空間:

      kubectl config use-context ORIGINAL_CLUSTER_NAME
      
    2. 將目前的命名空間設定匯出至檔案:

      kubectl get namespace apigee -o yaml > apigee-namespace.yaml
      
    3. apigee-ca 密鑰匯出至檔案:

      kubectl -n cert-manager get secret apigee-ca -o yaml > apigee-ca.yaml
      
    4. 將結構定義設為新區域的叢集名稱:

      kubectl config use-context NEW_CLUSTER_NAME
      
    5. 將命名空間設定匯入新叢集。如果您在新區域中使用其他命名空間,請務必更新檔案中的命名空間:

      kubectl apply -f apigee-namespace.yaml
      
    6. 將 Secret 匯入新叢集:

      kubectl -n cert-manager apply -f apigee-ca.yaml
      
  3. 接著,使用 Helm 圖表在新的區域安裝 Apigee hybrid,並執行下列 Helm 圖表指令 (如在區域 1 所示):

    helm upgrade operator apigee-operator \
      --install \
      --namespace apigee-system \
      --atomic
      -f overrides-DATACENTER_NAME.yaml
    helm upgrade datastore apigee-datastore \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides-DATACENTER_NAME.yaml
    helm upgrade telemetry apigee-telemetry \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides-DATACENTER_NAME.yaml
    helm upgrade redis apigee-redis \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides-DATACENTER_NAME.yaml
    helm upgrade ingress-manager apigee-ingress-manager \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides-DATACENTER_NAME.yaml
    helm upgrade ORG_NAME apigee-org \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides-DATACENTER_NAME.yaml
    # repeat the below command for each env mentioned on the overrides
    helm upgrade apigee-env-ENV_NAME apigee-env/ \
      --install \
      --namespace apigee \
      --atomic \
      --set env=ENV_NAME \
      -f overrides-DATACENTER_NAME.yaml
    # repeat the below command for each env group mentioned on the overrides
    helm upgrade apigee-virtualhost-ENV_GROUP_NAME apigee-virtualhost/ \
      --install \
      --namespace apigee \
      --atomic \
      --set envgroup=ENV_GROUP_NAME \
      -f overrides-DATACENTER_NAME.yaml
    
  4. 安裝所有元件後,請在新資料中心的所有 Pod 上設定 Cassandra。如需操作說明,請參閱「 為多區域設定 Apigee hybrid」,選取您的平台,捲動至「設定新的區域」,然後找出步驟 5。
  5. 資料複製完成並經過驗證後,請更新種子主機:
    1. overrides-DATACENTER_NAME.yaml 中移除 multiRegionSeedHost: 10.0.0.11

      建立資料複製作業後,就不需要 multiRegionSeedHost 項目,且 Pod IP 應會隨時間變更。

    2. 重新套用變更,更新 apigee 資料儲存庫 CR:

      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace apigee \
        --atomic \
        -f overrides-DATACENTER_NAME.yaml
      

私人代管圖片

您可以選擇不使用公開的 Google Cloud 存放區,改為私下代管圖片。您可以選擇在覆寫值中新增中樞詳細資料,而非覆寫每個元件:

hub: PRIVATE_REPO

舉例來說,如果提供下列中樞,系統會自動解析圖片路徑:

hub: private-docker-host.com

為:

## an example of internal component vs 3rd party
containers:
- name: apigee-udca
  image: private-docker-host.com/apigee-udca:1.10.5
  imagePullPolicy: IfNotPresent

containers:
- name: apigee-ingressgateway
  image: private-docker-host.com/apigee-asm-ingress:1.17.2-asm.8-distroless
  imagePullPolicy: IfNotPresent

如要在指令列上顯示 Google Cloud 存放區中託管的 Apigee 映像檔清單,請按照下列步驟操作:

./apigee-operator/etc/tools/apigee-pull-push.sh --list

容許條件

如要使用 Kubernetes 的 Taint 和容許值功能,您必須為每個 Apigee 混合元件定義 tolerations 覆寫屬性。下列元件可支援定義容忍度:

  • ao
  • apigeeIngressGateway
  • cassandra
  • cassandraSchemaSetup
  • cassandraSchemaValidation
  • cassandraUserSetup
  • connectAgent
  • istiod
  • logger
  • mart
  • metrics
  • mintTaskScheduler
  • redis
  • runtime
  • synchronizer
  • udca
  • Watcher

如要進一步瞭解這些元件,請參閱 設定屬性參考資料

例如,將容忍度套用至 Apigee 操作員部署作業:

ao:
  tolerations:
  - key: "key1"
    operator: "Equal"
    value: "value1"
    effect: "NoExecute"
    tolerationSeconds: 3600

如要將容忍度套用至 Cassandra StatefulSet,請按照下列步驟操作:

cassandra:
  tolerations:
  - key: "key1"
    operator: "Equal"
    value: "value1"
    effect: "NoExecute"
    tolerationSeconds: 3600

使用 Helm 解除安裝 Apigee Hybrid

如要解除安裝特定更新或發布,您可以使用 helm [uninstall/delete] RELEASE-NAME -n NAMESPACE 指令。

請按照下列步驟從叢集中完全解除安裝 Apigee Hybrid:

  1. 刪除 virtualhosts。針對每個虛擬主機執行下列指令:
    helm -n apigee delete VIRTUALHOST_RELEASE-NAME
    
  2. 刪除環境。針對每個環境執行下列指令:
    helm -n apigee delete ENV_RELEASE-NAME
    
  3. 刪除 Apigee 機構:
    helm -n apigee delete ORG_RELEASE-NAME
    
  4. 刪除遙測資料:
    helm -n apigee delete TELEMETRY_RELEASE-NAME
    
  5. 刪除 Redis:
    helm -n apigee delete REDIS_RELEASE-NAME
    
  6. 刪除 ingress 管理工具:
    helm -n apigee delete INGRESS_MANAGER_RELEASE-NAME
    
  7. 刪除資料儲存庫:
    helm -n apigee delete DATASTORE_RELEASE-NAME
    
  8. 刪除運算子。
    1. 請務必先刪除所有 CR,再執行下列操作:
      kubectl -n apigee get apigeeds, apigeetelemetry, apigeeorg, apigreeenv, arc, apigeeredis
      
    2. 刪除 Apigee Operator:
      helm -n apigee-system delete OPERATOR_RELEASE-NAME
      
  9. 刪除 Apigee Hybrid CRD:
    kubectl delete -k  apigee-operator/etc/crds/default/