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