本主題說明如何安裝 Cloud Service Mesh,其中已預先安裝 Ingress Gateway。如需 Ingress 控制器,您可以使用 Cloud Service Mesh 為 Deployment 設定 Kubernetes Ingress 資源。本主題提供範例,說明如何設定範例 Deployment 和 Ingress 資源。
安裝 Cloud Service Mesh 主要分為兩個部分:
如果您只需要使用 Ingress 控制器中的 Ingress 物件,就不必將 Sidecar Proxy 插入工作負載 Pod。不過,如要享有 Cloud Service Mesh 提供的安全性優勢,並使用流量路徑功能,就必須注入 Sidecar Proxy。
事前準備
開始使用 GKE on AWS 前,請務必完成下列工作:
- 完成必要條件。
- 安裝管理服務。
- 建立使用者叢集。
- 按照「使用 Cloud Console 連線至叢集」一文中的步驟,透過 Connect 註冊叢集。
- 設定叢集,以搭配使用 Workload Identity 與 Google Cloud。
如果使用者叢集對網際網路的出站存取權設有限制,請允許存取下列容器存放區網域:
docker.io
quay.io
在
anthos-aws
目錄中,使用anthos-gke
將環境切換至使用者叢集。 將 CLUSTER_NAME 替換為使用者叢集名稱。cd anthos-aws env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME
安裝 Anthos 服務網格
按照「安裝 Cloud Service Mesh」中的步驟操作。
建立 Deployment 範例
在本節中,您將安裝範例應用程式,並為該應用程式建立 Ingress 端點。
建立
hello-app
的 Deployment,以及該 Deployment 的 ClusterIP。 將下列 YAML 複製到名為hello-app.yaml
的檔案。apiVersion: apps/v1 kind: Deployment metadata: labels: app: hello-app name: hello-app spec: selector: matchLabels: app: hello-app replicas: 3 template: metadata: labels: app: hello-app spec: containers: - name: hello image: "gcr.io/google-samples/hello-app:2.0" --- apiVersion: v1 kind: Service metadata: labels: app: hello-app name: hello-app spec: type: ClusterIP selector: app: hello-app ports: - protocol: TCP port: 8080 targetPort: 8080
使用
kubectl apply
將 YAML 套用至叢集。env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f hello-app.yaml
為範例應用程式建立 Kubernetes Ingress。將下列 YAML 複製到名為
hello-app-ingress.yaml
的檔案中apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: annotations: kubernetes.io/ingress.class: istio labels: app: hello-app name: hello-app spec: rules: - host: http: paths: - backend: serviceName: hello-app servicePort: 8080
使用
kubectl apply
套用設定,建立 Ingress。env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f hello-app-ingress.yaml
請向「
kubectl get svc
」查詢閘道狀態。env HTTPS_PROXY=http://localhost:8118 \ kubectl get ingress hello-app
ADDRESS
欄位應包含 ELB 網域名稱。如果ADDRESS
仍為pending
,請確認 VPC 和子網路標籤。您可以組合主機和通訊埠,檢查 Ingress 閘道網址。 如要取得閘道網址,請執行下列指令:
export INGRESS_URL=$(env HTTPS_PROXY=http://localhost:8118 \ kubectl get ingress hello-app -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') echo "Your hello-app Ingress URL is: http://"$INGRESS_URL
最後一個指令會列印 Ingress 的端點。
如果您建立了公開 Ingress,可以前往
http://$INGRESS_URL/
,在curl
中查看hello-app
預設網頁 。curl $INGRESS_URL/
正在清除所用資源
使用 kubectl delete
移除 hello-app
元件。
env HTTPS_PROXY=http://localhost:8118 \
kubectl delete -f hello-app.yaml &&\
kubectl delete -f hello-app-ingress.yaml
如要移除 Cloud Service Mesh,請參閱「解除安裝 Cloud Service Mesh」。
後續步驟
請點選下列連結瞭解更多資訊: