管理執行階段層元件

本主題說明如何設定及管理 Apigee Hybrid 執行階段平面元件。如需可設定的執行階段平面元件清單,請參閱「執行階段服務設定總覽」。

關於覆寫檔案

第一次將混合式執行階段安裝到叢集時,您必須建立設定覆寫檔案。您可以使用這個檔案視需要覆寫預設設定值、設定環境、參照 TLS 憑證和服務帳戶金鑰,以及將 Kubernetes 節點叢集指派給特定混合元件等等。

混合式安裝步驟會逐步引導您建立覆寫檔案,並將設定套用至叢集。如果之後想變更設定,請修改您建立的覆寫檔案,然後重新套用。

變更設定

如要對混合式執行階段平面元件進行設定變更,請根據管理工具編輯覆寫檔案,然後使用 Helm 或 apigeectl 套用變更。

舉例來說,如要變更訊息處理器的複本數量,請按照下列步驟操作:

  1. 開啟 OVERRIDES.yaml 檔案。請務必使用用於將混合式執行階段安裝至叢集的覆寫檔案。
  2. 找出檔案中的 runtime 元素。例如:
    ...
    runtime:
      nodeSelector:
        key: cloud.google.com/gke-nodepool
        value: apigee-runtime
      replicaCountMin: 1
      replicaCountMax: 2
    ...
  3. 視需要變更備用資源數量屬性。例如:
    runtime:
      nodeSelector:
        key: cloud.google.com/gke-nodepool
        value: apigee-runtime
      replicaCountMin: 2
      replicaCountMax: 20
    
  4. 使用下列指令套用變更:

    Helm

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

    1. 請先執行模擬測試:
      helm upgrade ENV_RELEASE_NAME apigee-env/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      --set env=ENV_NAME \
      -f OVERRIDES_FILE \
      --dry-run
      
      • ENV_RELEASE_NAME 是先前用來安裝 apigee-env 圖表的名稱。在 hybrid v1.10 中,通常是 apigee-env-ENV_NAME。在 Hybrid 1.11 以上版本中,通常是 ENV_NAME
      • ENV_NAME 是您要升級的環境名稱。
      • OVERRIDES_FILE 是覆寫檔案的路徑。1.3.6
    2. 升級圖表:
      helm upgrade ENV_RELEASE_NAME apigee-env/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      --set env=ENV_NAME \
      -f OVERRIDES_FILE
      

    apigeectl

    使用 apigeectl 將變更套用至叢集:

    apigeectl apply -f OVERRIDES.yaml --org --env apigee-env
  5. 檢查相應環境的狀態,確認環境已啟用並執行:
    kubectl -n APIGEE_NAMESPACE get apigeeenv
    
    NAME                          STATE       AGE   GATEWAYTYPE
    apigee-org1-dev-xxx            running     2d

您可以修改哪些設定屬性?

如需可設定屬性的完整清單,請參閱設定屬性參考資料。參考檔案只會列出您可以修改的屬性;如果您嘗試修改不在參考檔案中的屬性,系統會忽略該項變更。

如何使用設定參照資料

設定屬性參照使用點號符號描述設定元素,其中第一個項目是頂層元素名稱,後面接著屬性和子項屬性。例如:

ao.image.pullPolicy

在覆寫檔案中,屬性會以適當的 YAML 格式進行設定。在上述範例中,頂層 ao 元素會向左縮排,子元素屬性則會在其下方縮排。此外,YAML 要求每個元素和子元素的結尾都加上冒號。

舉例來說,如要將 ao.image.pullPolicy 屬性設為 Always,請在覆寫檔案中找出這個 YAML 段落,然後依下列方式設定:

ao:
  image:
    pullPolicy: Always

舉例來說,cassandra.auth.admin.password 屬性 (如設定屬性參考資料所列) 可用於設定 Cassandra 管理員密碼。如要變更,請在覆寫檔案中找出下列 YAML,並將其設為以下內容:

cassandra:
  auth:
    admin:
      password: abc123

請注意,設定屬性參考資料說明瞭您可以在混合式執行階段平面元件上設定的所有屬性。請按照上述模式修改覆寫檔案中的這些元素,然後再將變更套用至叢集。

使用預先定義的範例覆寫檔案

首次安裝混合式執行階段時,Apigee 建議您使用其中一個預先設定的範例覆寫檔案。這些範例提供一組完整的設定屬性,適用於特定安裝情境,例如設定正式或測試安裝作業。您只需為屬性提供適當的值,並將覆寫檔案套用至叢集。詳情請參閱「步驟 6:設定叢集」。

關於設定預設值

Apigee 會在 HYBRID_ROOT_DIR/config/values.yaml 檔案中維護預設元件設定。覆寫檔案會遵循與 values.yaml 相同的 YAML 結構。

覆寫檔案通常只包含 values.yaml 中部分的設定屬性。請注意,並非所有屬性都能編輯。將設定套用至叢集時,系統會將覆寫值與預設值合併,以建立完整的 Kubernetes 叢集設定。另請參閱「測試合併的設定」。

以下程式碼顯示 values.yamlmart 元件的預設設定。請注意,部分值有預設值,但 sslCertPathsslKeyPath 則沒有。您必須在覆寫檔案中提供這些缺少的值,詳情請參閱安裝步驟。如要變更任何預設值,請確認這些值可供編輯,方法是檢查設定資源參照

...
mart:
  replicaCountMin: 2
  replicaCountMax: 4
  targetCPUUtilizationPercentage: 75
  terminationGracePeriodSeconds: 30
  sslCertPath:
  sslKeyPath:
  hostAlias:
  nodeSelector:
    key:
    value:
  revision: blue
  image:
    url: "gcr.io/apigee-release/hybrid/apigee-mart-server"
    tag: "1.3.6"
    pullPolicy: IfNotPresent
  resources:
    requests:
      cpu: 500m
      memory: 512Mi
  initCheckCF:
    resources:
      requests:
        cpu: 10m
  livenessProbe:
    timeoutSeconds: 1
    failureThreshold: 12
    periodSeconds: 5
    initialDelaySeconds: 15
  readinessProbe:
    timeoutSeconds: 1
    successThreshold: 1
    failureThreshold: 2
    periodSeconds: 5
    initialDelaySeconds: 15
  metricsURL: "/v1/server/metrics"
  cwcAppend: |
...

如果您想修改元件的預設值,但該元件尚未在覆寫檔案中,可以將其 YAML 從 values.yaml 複製到覆寫檔案中,然後在該檔案中進行修改。

覆寫檔案範例

Apigee 提供一組範例覆寫檔案,協助您設定混合式部署作業。建議您複製並修改最符合安裝需求的覆寫檔案。

目錄 HYBRID_ROOT_DIR/examples 包含下列範例:

覆寫檔案範例 說明
overrides-small.yaml 這個範例非常適合快速上手。它會使用建議的最小足跡啟動混合式執行階段元件。這個範例設定盡可能採用預設設定和值。所有副本數量下限都設為 1
overrides-medium.yaml 這個範例是測試和品質確保環境的良好起點。個別元件已獲得更高層級的資源,可處理額外流量。Cassandra 會使用 SSD 磁碟來提升效能。在這種環境中,建議使用者在個別節點上安裝有狀態和無狀態元件。請參閱「 設定專用節點」。
overrides-large.yaml 這個範例是高效能環境 (例如預先製作和實際運作) 的良好起點。範例包含設定加密金鑰、密碼和其他項目的屬性。個別元件至少有兩個副本。

自訂註解

註解是鍵/值對應,用於將中繼資料附加至 Apigee Hybrid Kubernetes Pod。您可以為設定屬性參考資料中列出的下列屬性建立自訂註解:

如要新增自訂註解,請為相應元件在 OVERRIDES.yaml 檔案中新增節。

以下範例說明如何在 runtime 容器中指定註解:

runtime:
  annotations:
    businessunit: "bu1"

測試合併設定

您可以使用 --dry-run 標記來測試已合併的設定檔,而不必實際將檔案套用至叢集。這個選項可用於偵錯安裝問題,因為它會明確顯示叢集會套用的內容。建議您測試設定並儲存在來源控制中,以便取得叢集中已安裝及設定的資源參照。

Helm

kubectl apply -k  apigee-operator/etc/crds/default/
      
helm upgrade operator apigee-operator/ \
  --install \
  --namespace apigee-system \
  --atomic \
  -f OVERRIDES_FILE.yaml \
  --dry-run
helm upgrade ingress-manager apigee-ingress-manager/ /
  --install \
  --namespace apigee \
  --atomic \
  -f OVERRIDES_FILE.yaml \
  --dry-run

apigeectl

APIGEECTL_HOME/apigeectl init -f overrides/OVERRIDES.yaml --dry-run=client

詳情請參閱 apigeectl

視需要建立多個覆寫檔案

您可以建立任意數量的覆寫檔案,每個檔案都會滿足特定需求。舉例來說,您可能會有一個覆寫檔案,用於針對實際工作環境調整叢集,以及另一個用於建立測試叢集。接著,您就可以在原始碼管控系統中維護這些檔案。

例如:

Helm

helm upgrade test-1-env apigee-env/ \
  --namespace apigee \
  --atomic \
  --set env=test-1-env \
  -f test-1-env-overrides.yaml

apigeectl

$APIGEECTL_HOME/apigeectl apply -f test-1-env-overrides.yaml --env test-1-env

刪除 Hybrid 專屬的執行階段層元件

執行階段平面元件包括 synchronizermartruntimecassandraudca

如要從叢集中刪除混合專屬的執行階段平面元件,請使用 helm deleteapigeectl delete 指令。請務必指定與用於安裝執行階段元件的覆寫檔案相同的檔案。

例如:

Helm

使用 Helm 時,您必須個別刪除每個元件。例如,如要刪除 cassandra 元件,請使用下列指令:
helm -n apigee delete datastore

在上述範例中,資料儲存庫元件是以「datastore」這個名稱安裝。如果您以其他名稱安裝,請提供該名稱來刪除元件。舉例來說,如果您使用 helm install my-cassandra-storage apigee-datastore/ 安裝 apigee-datastore 圖表,您可以使用下列指令刪除:

helm delete -n apigee my-cassandra-storage

apigeectl

使用 apigeectl 時,您可以一次刪除所有執行階段元件,也可以限制範圍,一次刪除一個元件。舉例來說,如要一次刪除所有元件:
$APIGEECTL_HOME/apigeectl delete -f OVERRIDES_FILE.yaml

如要刪除 cassandra 元件,請按照下列步驟操作:

$APIGEECTL_HOME/apigeectl delete -f OVERRIDES_FILE.yaml --datastore

如要重新建立特定元件 (本例中的環境群組):

Helm

helm upgrade ENV_GROUP apigee-virtualhost/ \
  --install \
  --namespace apigee \
  --atomic \
  --set envgroup=ENV_GROUP_NAME \
  -f OVERRIDES_FILE.yaml

apigeectl

$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE.yaml --env ENV_NAME --settings virtualhosts