這個步驟說明如何為 Apigee 輸入閘道設定 Kubernetes 服務。每個 ingress 部署作業都需要 Kubernetes 服務,才能取得可公開的 IP 位址。用戶端對 Proxy 的呼叫會叫用主機名稱,該主機名稱會解析為這個 IP 位址。
Apigee ingress 閘道的 Kubernetes 服務選項
提供 Kubernetes Service 來指派 IP 位址的方法有兩種 ...
- 為每個 Apigee 輸入閘道建立自訂 Kubernetes 服務 (建議做法)。
- 使用預設 Kubernetes 服務。
建立自己的 Kubernetes 服務
如果是正式環境,Apigee 建議您為每個輸入閘道建立自訂 Kubernetes 服務。
- Apigee 會刪除預設服務,但不會在清除時刪除自訂 Kubernetes 服務。 因此,重新安裝 Apigee hybrid 時,系統不會釋出 IP 位址。
- 如果是 EKS、AKS 和 OpenShift 等非 Google Cloud 平台,您必須自訂 Kubernetes 服務,才能與雲端服務供應商搭配使用。因此,建議您建立自訂 Kubernetes 服務,而非使用預設服務,因為 Apigee 不支援對預設 Kubernetes 服務進行所有自訂。
請按照下列步驟設定新的輸入閘道,並將流量轉送至該閘道。
- 建立 Kubernetes 服務,並加上必要的 Pod 選取器標籤:
app、ingress_name和org。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 輸入閘道的名稱。這個名稱必須與您在
overrides.yaml檔案中為ingressGateways.name提供的名稱相符。詳情請參閱設定屬性參考資料中的ingressGateways。 - ORG_NAME 是 Apigee 組織的名稱。這個名稱必須與您在
overrides.yaml檔案中為org提供的名稱相符。詳情請參閱設定屬性參考資料中的org。 - LOAD_BALANCER_IP 是負載平衡器的 IP 位址。
如果您已為負載平衡器保留 IP 位址,請輸入該位址。
如果您尚未保留 IP 位址,可以使用預設 Apigee 輸入服務傳回的 IP 位址。使用下列指令傳回的
EXTERNAL-IP:kubectl get svc -n APIGEE_NAMESPACE -l app=apigee-ingressgateway
Apigee 輸入閘道會公開下列通訊埠:
通訊埠 說明 443 執行階段流量。 15021 健康狀態檢查。 status-port會公開/healthz/ready端點,可與 GKE Ingress 健康狀態檢查搭配使用。 - SERVICE_NAME 是用來識別這項服務的名稱。例如:
- 套用
SERVICE_FILENAME.yaml來建立服務:kubectl apply -f SERVICE_FILENAME.yaml
- 使用下列指令,找出 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
-
停用預設 Apigee ingress 閘道服務的負載平衡器:
- 在覆寫檔案中,將
ingressGateways[].svcType屬性更新為ClusterIP:ingressGateways: svcType: ClusterIP
-
升級
apigee-org圖表以套用變更:helm upgrade ORG_NAME apigee-org/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides.yaml
詳情請參閱「停用預設 Apigee 輸入閘道服務的負載平衡器」。
- 在覆寫檔案中,將
進行健康狀態檢查呼叫,測試輸入閘道。
curl -H 'User-Agent: GoogleHC' https://DOMAIN/healthz/ingress -k \ --resolve "DOMAIN:443:INGRESS_IP_ADDRESS"
地點
- DOMAIN 是您在「專案和組織設定 - 步驟 3:建立環境群組」中,為建立的環境群組提供的主機名稱網域。
- INGRESS_IP_ADDRESS 是輸入 IP 位址,例如
233.252.0.123。
如果成功,指令會傳回:
Apigee Ingress is healthy
- 請使用這個 IP 位址,在註冊商或 DNS 供應商處更新 DNS 記錄 (通常是
A或CNAME記錄)。
使用預設 Kubernetes 服務
如果是用於非正式環境,或要測試透過 Apigee 輸入閘道傳送的初始流量,Apigee hybrid 會為每個輸入部署作業提供預設 Kubernetes 服務。
您可以在 overrides.yaml 檔案中對預設服務進行有限的設定變更。如要瞭解可用的設定選項,請參閱「管理 Apigee 輸入閘道」。例如,您可以新增註解。
在正式環境中,建議您為 Ingress 提供 Kubernetes 服務。按照「建立自己的 Kubernetes 服務」中的步驟操作。
- 使用下列指令,找出預設 Apigee 輸入服務的外部 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
進行健康狀態檢查呼叫,測試輸入閘道。
curl -H 'User-Agent: GoogleHC' https://DOMAIN/healthz/ingress -k \ --resolve "DOMAIN:443:INGRESS_IP_ADDRESS"
地點
- DOMAIN 是您在「專案和組織設定 - 步驟 3:建立環境群組」中,為建立的環境群組提供的主機名稱網域。
- INGRESS_IP_ADDRESS 是 ingress IP 位址,例如
233.252.0.123。
如果成功,指令會傳回:
Apigee Ingress is healthy
- 使用這個 IP 位址,在註冊商或 DNS 供應商處更新 DNS 記錄 (通常是
A或CNAME記錄)。