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

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

限制

叢集支援多個機構設定,但有以下限制。在這些限制獲得緩解之前,我們不建議您使用這項設定。

  • 如果您要使用多個 Apigee Hybrid 執行個體,每個執行個體都應有自己的叢集。在同一個 Kubernetes 叢集上執行多個 Apigee Hybrid 例項,可能會導致不穩定,進而造成停機。
  • Pod 指標只會傳送至第一個設定的 Google Cloud 專案。這項限制在 Cloud Monitoring 工具中最為明顯。這項異動只會影響叢集指標,不會影響 API 數據分析。其他 Apigee 機構的指標不會傳送至相符的 Google Cloud 專案。
  • 所有來自 Pod 的記錄檔都會傳送至第一個設定的 Google Cloud 專案。這項限制在 Cloud Logging 工具中最為明顯。其他 Apigee 機構的記錄不會傳送至相符的 Google Cloud 專案。系統仍會在 Pod 層級擷取記錄,並可使用 kubectl 指令擷取記錄。不過,這些記錄檔不會透過 Cloud Logging 傳送至正確的 Cloud 專案。
  • 您無法只刪除單一機構的 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.
    
    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. 執行模擬安裝,檢查是否有任何問題:
    apigeectl apply -f overrides/new-overrides.yaml --org --dry-run=client
  2. 如果沒有問題,請套用機構層級的元件。這個步驟會安裝 Cassandra 工作 (使用者和結構定義)、Apigee Connect、Apigee Watcher 和 MART 服務:
    apigeectl apply -f overrides/new-overrides.yaml --org
  3. 安裝環境。這個步驟會為每個環境安裝 apigee-runtime、同步器和 UDCA 元件:
    apigeectl apply -f overrides/new-overrides.yaml --env ${ENV_NAME} --dry-run=client
    apigeectl apply -f overrides/new-overrides.yaml --env ${ENV_NAME}
  4. 套用負載平衡器變更。這個步驟會設定 Ingress,以便監聽第二個機構的新虛擬主機:
    apigeectl apply -f overrides/new-overrides.yaml --settings virtualhosts --dry-run=client
    apigeectl apply -f overrides/new-overrides.yaml --settings virtualhosts
  5. 按照「啟用同步處理工具存取權」一文中的步驟,為新機構啟用同步處理工具存取權。