透過 Cloud Service Mesh 啟用 Ingress

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

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

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

如果您只需要使用 Ingress 控制器中的 Ingress 物件,就不必將 Sidecar Proxy 插入工作負載 Pod。不過,如要享有 Cloud Service Mesh 提供的安全效益,並使用流量路由功能,就必須注入 Sidecar Proxy。

事前準備

開始使用 GKE on AWS 前,請務必完成下列工作:

  • 安裝管理服務
  • 建立使用者叢集
  • 按照「使用 Cloud 控制台 連線至叢集」一文中的步驟,透過 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」。

後續步驟

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