透過 Cloud Service Mesh 啟用 Ingress

本主題說明如何安裝 Cloud Service Mesh,其中已預先安裝 Ingress Gateway。如需 Ingress 控制器,您可以使用 Cloud Service Mesh 為 Deployment 設定 Kubernetes Ingress 資源。本主題提供範例,說明如何設定範例 Deployment 和 Ingress 資源。

安裝 Cloud Service Mesh 主要分為兩個部分:

  1. 安裝特定版本的 Cloud Service Mesh客戶管理控制層和 Ingress Gateway。
  2. 使用修訂版本標籤標記命名空間,並重新部署工作負載,以插入隨附代理程式

如果您只需要使用 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 將環境切換至使用者叢集。

    cd anthos-aws
    env HTTPS_PROXY=http://localhost:8118 \
      anthos-gke aws clusters get-credentials CLUSTER_NAME
    CLUSTER_NAME 替換為使用者叢集名稱。

安裝 Anthos 服務網格

按照「安裝 Cloud Service Mesh」中的步驟操作。

建立 Deployment 範例

在本節中,您將安裝範例應用程式,並為該應用程式建立 Ingress 端點。

  1. 建立 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
    
  2. 使用 kubectl apply 將 YAML 套用至叢集。

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl apply -f hello-app.yaml
    
  3. 為範例應用程式建立 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
    
  4. 使用 kubectl apply 套用設定,建立 Ingress。

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl apply -f hello-app-ingress.yaml
    
  5. 請向「kubectl get svc」查詢閘道狀態。

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl get ingress hello-app
    

    ADDRESS 欄位應包含 ELB 網域名稱。如果 ADDRESS 仍為 pending,請確認 VPC 和子網路標籤。

  6. 您可以組合主機和通訊埠,檢查 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 的端點。

  7. 如果您建立了公開 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」。

後續步驟

請點選下列連結瞭解更多資訊: