啟用非 SNI 用戶端

本主題說明如何啟用非 SNI 用戶端,以便搭配 Apigee Hybrid 使用。

如何設定非 SNI 用戶端

本節說明如何在 Apigee Hybrid 中啟用對非 SNI (伺服器名稱指示) 用戶端的支援。非 SNI 用戶端使用連接埠 443,如果您想將混合式執行階段例項與 Google Cloud Load Balancing 整合,或用於不支援 SNI 的用戶端,則必須使用非 SNI 用戶端。
  1. 建立 ApigeeRoute 自訂資源定義 (CRD)。請務必將 enableNonSniClient 設為 true
    apiVersion: apigee.cloud.google.com/v1alpha1
    kind: ApigeeRoute
    metadata:
      name: route_name
      namespace: apigee
    spec:
      hostnames:
      - "*"
      ports:
      - number: 443
        protocol: HTTPS
        tls:
          credentialName: credential_name
          mode: SIMPLE
          #optional
          minProtocolVersion: TLS_AUTO
      selector:
        app: apigee-ingressgateway
      enableNonSniClient: true

    其中:

    • route_name 是您為自訂資源 (CR) 提供的名稱。
    • credential_name 是部署至叢集的 Kubernetes 密鑰名稱,其中包含虛擬主機的 TLS 憑證。您可以使用下列 kubectl 指令找出憑證名稱:
      kubectl -n apigee get ApigeeRoutes -o=yaml | grep credentialName
    • hostnames 必須設為萬用字元「*」。
  2. 開啟覆寫檔案,然後進行下一個步驟所述的變更。
  3. 針對每個環境群組,將 ApigeeRoute 名稱新增至 additionalGateways 屬性。例如:
    virtualhosts:
      - name: default
        sslCertPath: ./certs/fullchain.pem
        sslKeyPath: ./certs/privkey.pem
        additionalGateways: ["route_name"]
  4. 儲存 CRD 檔案。例如:ApigeeRoute.yaml
  5. 將 CRD 套用至叢集:
    kubectl apply -f ApigeeRoute.yaml -n apigee
  6. 將變更套用至「virtualhosts」。如果您已在殼層中設定 $ENV_GROUP 環境變數,可以在下列指令中使用該變數:
    helm upgrade $ENV_GROUP apigee-virtualhost/ \
      --namespace apigee \
      --atomic \
      --set envgroup=$ENV_GROUP \
      -f OVERRIDES_FILE.yaml
    

使用須知

  • 如果叢集有多個機構,會發生什麼情況?

    由於特定連接埠 (443) 的 Ingress 位於叢集層級,且 ApigeeRoute CRD 只能有一組金鑰/憑證,因此所有機構都必須共用同一組金鑰/憑證。

  • 如果叢集有多個環境群組,會發生什麼事?如果虛擬主機共用同一組金鑰/憑證,是否會正常運作?

    所有環境群組中的所有主機名稱都必須使用相同的金鑰/憑證組合。

  • 為什麼要建立 ApigeeRoute,而不是 Gateway?

    Apigee 可以驗證 ApigeeRoutes,但無法驗證 Gateway (Istio CRD)。從技術上來說,即使是 Gateway 也能運作,但我們可以透過驗證 Webhook 避免潛在的設定錯誤。

  • 如何為 Apigee 設定非 SNI 用戶端?

    如果您的 Apigee 執行個體是透過 Google 負載平衡器公開,則負載平衡器支援非 SNI 用戶端,如負載平衡說明文件所述。否則,如果您透過內部 PSC 端點或虛擬私有雲公開 Apigee 執行個體,Apigee 執行個體預設會支援非 SNI 用戶端。