步驟 1:公開 Apigee 入口閘道

這個步驟說明如何為 Apigee Ingress 閘道設定 Kubernetes 服務。 每個 Ingress 部署作業都需要 Kubernetes 服務,才能取得可公開的 IP 位址。用戶端呼叫 Proxy 時會叫用主機名稱,該名稱會解析為這個 IP 位址。

Apigee 輸入閘道的 Kubernetes 服務選項

您可以透過兩種方式提供 Kubernetes 服務,指派 IP 位址 ...

建立自己的 Kubernetes 服務

在實際工作環境中,Apigee 建議您為每個 Ingress 閘道建立自訂 Kubernetes 服務。

  • Apigee 會刪除預設服務,但不會在清除時刪除自訂 Kubernetes 服務。 因此,重新安裝 Apigee Hybrid 時,系統不會釋出 IP 位址。
  • 如果平台不在 Google Cloud 上 (例如 EKS、AKS 和 OpenShift),您需要自訂 Kubernetes 服務,才能與雲端供應商搭配使用。因此,建議您建立自訂 Kubernetes 服務,而非使用預設服務,因為 Apigee 不支援對預設 Kubernetes 服務進行所有自訂作業。

請按照下列步驟設定新的 Ingress 閘道,並將流量導向該閘道。

  1. 使用必要的 Pod 選擇器標籤 appingress_nameorg 建立 Kubernetes 服務。Apigee 進入閘道 Pod 中已存在這些標籤。

    使用下列範本建立服務檔案:

    apiVersion: v1
    kind: Service
    metadata:
      name: SERVICE_NAME
      namespace: APIGEE_NAMESPACE
    spec:
      ports:
      - name: status-port
        port: 15021
        protocol: TCP
        targetPort: 15021
      - name: https
        port: 443
        protocol: TCP
        targetPort: 8443
      selector:
        app: apigee-ingressgateway #required
        ingress_name: INGRESS_NAME
        org: ORG_NAME
      type: LoadBalancer
      loadBalancerIP: LOAD_BALANCER_IP
    • SERVICE_NAME 是用來識別這項服務的名稱。例如: apigee-prod-1
    • INGRESS_NAME 是這個 Apigee Ingress 閘道的名稱。這個名稱必須與您在 overrides.yaml 檔案中為 ingressGateways.name 提供的名稱相符。詳情請參閱「ingressGateways」中的「設定屬性參考資料」
    • ORG_NAME 是 Apigee 機構的名稱。這個名稱必須與您在 overrides.yaml 檔案中為 org 提供的名稱相符。詳情請參閱「org」中的「設定屬性參考資料」
    • LOAD_BALANCER_IP 是負載平衡器的 IP 位址。

      如果您已為負載平衡器保留 IP 位址,請輸入該位址。

      如果您沒有預留 IP 位址,可以使用預設 Apigee Ingress 服務傳回的 IP 位址。使用下列指令傳回的 EXTERNAL-IP

      kubectl get svc -n APIGEE_NAMESPACE -l app=apigee-ingressgateway

    Apigee Ingress 閘道會公開下列通訊埠:

    通訊埠 說明
    443 執行階段流量。
    15021 健康狀態檢查。status-port 會公開 /healthz/ready 端點,可用於 GKE Ingress 健康狀態檢查。
  2. 套用 SERVICE_FILENAME.yaml 建立服務:
    kubectl apply -f SERVICE_FILENAME.yaml
  3. 使用下列指令找出 Apigee 輸入閘道的外部 IP:
    kubectl get svc -n APIGEE_NAMESPACE SERVICE_NAME

    輸出內容應如下所示:

    NAME                                        TYPE           CLUSTER-IP    EXTERNAL-IP     PORT(S)                                      AGE
    apigee-ingressgateway-prod-hybrid-37a39bd   LoadBalancer   192.0.2.123   233.252.0.123   15021:32049/TCP,80:31624/TCP,443:30723/TCP   16h
  4. 為預設 Apigee Ingress 閘道服務停用負載平衡器:
    1. 在覆寫檔案中,將 ingressGateways[].svcType 屬性更新為 ClusterIP
      ingressGateways:
        svcType: ClusterIP
    2. 升級 apigee-org 圖表以套用變更:
      helm upgrade ORG_NAME apigee-org/ \
        --install \
        --namespace apigee \
        --atomic \
        -f overrides.yaml
      

    詳情請參閱「為預設 Apigee Ingress 閘道服務停用負載平衡器」。

  5. 發出健康狀態檢查呼叫,測試 Ingress 閘道。

    curl -H 'User-Agent: GoogleHC' https://DOMAIN/healthz/ingress -k \
      --resolve "DOMAIN:443:INGRESS_IP_ADDRESS"

    地點

    如果成功,指令會傳回:

    Apigee Ingress is healthy
  6. 使用這個 IP 位址,在註冊商或 DNS 供應商更新 DNS 記錄 (通常是 ACNAME 記錄)。

使用預設 Kubernetes 服務

對於非正式環境,或要透過 Apigee Ingress 閘道測試初始流量,Apigee Hybrid 會為每個 Ingress 部署作業提供預設的 Kubernetes 服務。

您可以在 overrides.yaml 檔案中,對預設服務進行有限的設定變更。如要瞭解可用的設定選項,請參閱「管理 Apigee Ingress 閘道」。例如,您可以新增註解。

如果是正式環境,建議您提供 Kubernetes 服務做為 Ingress。按照「建立自己的 Kubernetes 服務」一文中的步驟操作。

  1. 使用下列指令找出預設 Apigee Ingress 服務的外部 IP:
    kubectl get svc -n APIGEE_NAMESPACE -l app=apigee-ingressgateway

    輸出內容應如下所示:

    NAME                                        TYPE           CLUSTER-IP    EXTERNAL-IP     PORT(S)                                      AGE
    apigee-ingressgateway-prod-hybrid-37a39bd   LoadBalancer   192.0.2.123   233.252.0.123   15021:32049/TCP,80:31624/TCP,443:30723/TCP   16h
  2. 發出健康狀態檢查呼叫,測試 Ingress 閘道。

    curl -H 'User-Agent: GoogleHC' https://DOMAIN/healthz/ingress -k \
      --resolve "DOMAIN:443:INGRESS_IP_ADDRESS"

    地點

    如果成功,指令會傳回:

    Apigee Ingress is healthy
  3. 使用這個 IP 位址,在註冊商或 DNS 供應商更新 DNS 記錄 (通常是 ACNAME 記錄)。

下一步

1 (NEXT) 步驟 2:部署 Proxy