將多個混合式機構新增至叢集

本主題將說明如何在現有的 Kubernetes 叢集中新增第二個 Apigee Hybrid 機構 (org)。在這種多機構設定中,兩個機構都會使用及共用相同的 Cassandra 環。每個組織都可以設定多個環境和環境群組。

限制

系統支援每個叢集的多個機構設定,但有下列限制。在這些限制緩解之前,我們不建議您使用這項設定:

  • 如果您要建立多個 Apigee 混合執行個體,每個執行個體都應有自己的叢集。在同一個 Kubernetes 叢集中執行多個 Apigee 混合式執行個體,可能會導致不穩定的問題,進而導致服務中斷。
  • 所有 Pod 記錄都會傳送至第一個已設定的 Google Cloud 專案。這項限制在 Cloud Logging 工具中最為明顯。其他 Apigee 機構的記錄不會傳送至相符的 Google Cloud 專案。記錄仍會在 Pod 層級擷取,並可透過 kubectl 指令擷取。不過,這些記錄並未透過 Cloud Logging 傳送至正確的雲端專案。
  • 您無法只刪除 Cassandra 資料庫中某個機構的資料。也就是說,您無法選擇性地移除機構。任何資料庫設定變更都會影響部署至該叢集的所有機構。
  • 混合升級程序會一次升級整個叢集。
  • 備份和還原作業是以叢集為單位進行,無法針對特定組織執行。
  • Apigee API Monitoring 功能 (時間軸、近期、調查) 僅適用於所設定及部署的第一個機構。但不適用於多機構叢集中的其他機構。

多機構選項

本節說明 Apigee 支援團隊如何處理現有的多機構叢集,以及日後部署作業的建議:

  • 如果您在非正式環境和正式環境中部署了現有的多機構 Kubernetes 叢集,Apigee 支援團隊將繼續提供支援。不過,請注意下一節所述的技術限制。建議您將日後的正式部署作業變更為每個叢集使用一個 Apigee 機構。
  • 如果您在非正式作業環境中擁有現有的多機構叢集,Apigee 支援團隊仍會繼續提供支援。建議您將所有正式叢集遷移至新設定,以便每個叢集使用一個 Apigee 機構。

先決條件

繼續操作前,請注意下列事項:

  • 您必須擁有現有的混合式機構,並在現有的 Kubernetes 叢集中安裝及設定一或多個環境。請參閱混合式安裝作業說明
  • 在單一叢集中合併多個組織時,混合版本必須全部相符。在叢集中新增第二個機構前,請視需要升級現有的混合式安裝作業。請參閱「升級 Apigee Hybrid」。

建立要新增至現有叢集的機構

如要建立其他機構,請按照「第 1 部分:專案和機構設定」中的步驟操作。

設定新機構

在後續步驟中,您將建立新的覆寫檔案,並為新機構設定該檔案。overrides.yaml 檔案只能支援一個機構的資訊。因此,您必須建立新的 overrides.yaml 檔案,並將其套用至現有的 Kubernetes 叢集。

  1. 建立服務帳戶,以便與新機構搭配使用。請參閱「建立服務帳戶」。
  2. 請記下 certs 目錄中的 TLS 憑證檔案 (.key.pem)。如果您需要再次建立憑證,請按照「建立 TLS 憑證」中的操作說明進行。
  3. 將現有的 overrides.yaml 複製到新檔案,做為設定新機構的起點。例如:new-overrides.yaml
  4. 使用下列設定編輯新的覆寫檔案:
    org: "new-org-name"
    instanceID: "instance-id"   ## Must match the instanceID of your existing org.
    
    multiOrgCluster: true ## Enables exporting metrics for this org to the Google Cloud Project named with gcp:projectID
    
    k8sCluster:
      name: "existing-cluster-name"
      region: "existing-cluster-analytics-region"
    
    gcp:
      projectID: "new-project-id"
      name: "new-project-id"
      region: "new-project-default-location"
    
    namespace: namespace ## must be the same for both new and existing orgs
    
    virtualhosts:
      - name: new-environment-group-name
        sslCertPath: ./certs/cert-file-name # .crt or .pem
        sslKeyPath: ./certs/key-file-name # .key
    
    envs:
      - name: new-environment-name
        serviceAccountPaths:
          runtime: ./new-service-accounts-directory/new-project-id-apigee-runtime.json
          synchronizer: ./new-service-accounts-directory/new-project-id-apigee-synchronizer.json
          udca: ./new-service-accounts-directory/new-project-id-apigee-udca.json
    
    connectAgent:
      serviceAccountPath: ./new-service-accounts-directory/new-project-id-apigee-mart.json
    
    mart:
      serviceAccountPath: ./new-service-accounts-directory/new-project-id-apigee-mart.json
    
    metrics:
      serviceAccountPath: ./new-service-accounts-directory/new-project-id-apigee-metrics.json
    
    watcher:
      serviceAccountPath: ./new-service-accounts-directory/new-project-id-apigee-watcher.json

    下表說明您必須在覆寫檔案中提供的每個屬性值。詳情請參閱「設定屬性參考資料」。

    變數 說明
    new-org-name 新機構的名稱。
    instance-id 這個叢集中的所有機構都必須使用相同的執行個體 ID。因此,這必須與原始機構的覆寫檔案中的 instanceID 項目相符。
    existing-cluster-name 您要新增這個機構的叢集名稱。必須與原始叢集中覆寫檔案中的 k8sCluster.name 項目相符。
    existing-cluster-analytics-region 原始叢集的布建區域。必須與原始叢集中覆寫檔案中的 k8sCluster.region 項目相符。
    new-project-id 新專案的專案 ID。專案 ID 和組織名稱相同。
    new-project-default-location 您在建立新機構時指定的數據分析區域。不必與現有機構的區域相同。
    namespace 叢集中的所有機構都必須共用相同的命名空間。請務必使用原始機構使用的相同命名空間。大多數安裝作業的命名空間為 apigee
    new-environment-group-name 您為新組織建立的新環境群組。
    cert-file-name
    key-file-name
    您在本節步驟 1 中檢查或建立的叢集的 TLS 憑證和金鑰檔案。
    new-environment-name 您為新機構建立的環境名稱。
    new-service-accounts-directory 您為新機構建立的服務帳戶金鑰檔案所在的目錄。

套用設定

將新的機構設定套用至叢集:

  1. 進行模擬安裝作業,檢查是否有任何問題:
    helm upgrade ORG_NAME apigee-org/ \
      --install \
      --namespace apigee \
      --atomic \
      -f OVERRIDES_FILE.yaml \
      --dry-run=server
    
  2. 如果沒有任何問題,請套用機構層級元件。這個步驟會安裝 Cassandra 工作 (使用者和結構定義)、Apigee Connect、Apigee Watcher 和 MART 服務:
    helm upgrade ORG_NAME apigee-org/ \
      --install \
      --namespace apigee \
      --atomic \
      -f NEW_OVERRIDES_FILE.yaml
    
  3. 安裝環境。這個步驟會依照環境安裝 apigee-runtime、Synchronizer 和 UDCA 元件:
    helm upgrade ENV_NAME apigee-env/ \
      --install \
      --namespace apigee \
      --atomic \
      --set env=ENV_NAME \
      -f overrides.yaml \
      --dry-run=server
    
    helm upgrade ENV_NAME apigee-env/ \
      --install \
      --namespace apigee \
      --atomic \
      --set env=ENV_NAME \
      -f overrides.yaml
    
  4. 套用負載平衡器變更。這個步驟會設定 ingress,讓其監聽第二個機構的新虛擬主機:
    helm upgrade NEW_ENV_GROUP_NAME apigee-virtualhost/ \
      --install \
      --namespace apigee \
      --atomic \
      --set envgroup=NEW_ENV_GROUP_NAME \
      -f overrides.yaml \
      --dry-run=server
    
    helm upgrade NEW_ENV_GROUP_NAME apigee-virtualhost/ \
      --install \
      --namespace apigee \
      --atomic \
      --set envgroup=NEW_ENV_GROUP_NAME \
      -f overrides.yaml
    
  5. 按照「啟用控制層存取權」中的步驟,為新機構啟用同步處理工具存取權。
  6. 根據預設,首次安裝 Apigee 混合式執行階段時,系統會將追蹤元件設為停用 multiOrgCluster。請按照下列步驟,為叢集中的每個機構組織啟用多機構追蹤記錄:
    1. 使用下列指令刪除現有的遙測元件:
      helm delete telemetry
      
    2. 在現有機構的 overrides.yaml 檔案中新增下列程式碼行。
      multiOrgCluster: true
    3. 套用變更,為機構安裝追蹤元件。

      請先執行模擬測試:

      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace apigee \
        --atomic \
        -f FIRST_OVERRIDES_FILE.yaml \
        --dry-run=server
      

      如果模擬執行成功,請套用變更並安裝遙測元件:

      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace apigee \
        --atomic \
        -f FIRST_OVERRIDES_FILE.yaml
      
    4. 請確認每個新組織的 overrides.yaml 檔案中都包含以下程式碼行:
      multiOrgCluster: true
    5. 套用變更,為每個新機構安裝追蹤元件。針對多機構叢集中的每個新機構重複執行這項操作。

      請先執行模擬測試:

      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace apigee \
        --atomic \
        -f NEW_OVERRIDES_FILE.yaml \
        --dry-run=server
      

      如果模擬執行成功,請套用變更並安裝遙測元件:

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