共用方式為


使用 應用程式閘道 透過 HTTP 或 HTTPS 公開 AKS 服務

本文說明 Kubernetes 輸入資源的使用方式,透過 HTTP 或 HTTPS Azure 應用程式閘道 公開 Azure Kubernetes Service (AKS) 服務的範例。

提示

請考慮針對 Kubernetes 輸入解決方案的容器 應用程式閘道。

必要條件

  • 已安裝 ingress-azure 的 Helm 圖表:
    • Greenfield 部署:如果您從頭開始,請參閱這些安裝指示,其中概述在 AKS 叢集上部署具有 應用程式閘道 的 AKS 叢集,並在 AKS 叢集上安裝 應用程式閘道 輸入控制器 (AGIC) 的步驟。
    • Brownfield 部署:如果您有現有的 AKS 叢集和 應用程式閘道 部署,請參閱這些指示,在 AKS 叢集上安裝 AGIC。
  • 如果您想要在此應用程式上使用 HTTPS,則為 x509 憑證及其私鑰。

部署客體簿應用程式

應用程式 guestbook 是標準 Kubernetes 應用程式,其中包含 Web UI 前端、後端和 Redis 資料庫。

根據預設,guestbook會透過在埠 80上具有名稱frontend的服務公開其應用程式。 如果沒有 Kubernetes 輸入資源,就無法從 AKS 叢集外部存取服務。 您可以使用應用程式,並設定輸入資源,以透過 HTTP 和 HTTPS 存取應用程式。

若要部署 guestbook 應用程式:

  1. 此 GitHub 頁面下載guestbook-all-in-one.yaml

  2. 執行此指令以部署到 guestbook-all-in-one.yaml 您的 AKS 叢集:

    kubectl apply -f guestbook-all-in-one.yaml
    

透過 HTTP 公開服務

若要公開 guestbook 應用程式,請使用下列輸入資源:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: guestbook
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
spec:
  rules:
  - http:
      paths:
      - backend:
          serviceName: frontend
          servicePort: 80

此輸入會將frontend部署的服務guestbook-all-in-one公開為 應用程式閘道 部署的預設後端。

將上述輸入資源儲存為 ing-guestbook.yaml

  1. 執行此指令來部署 ing-guestbook.yaml

    kubectl apply -f ing-guestbook.yaml
    
  2. 檢查輸入控制器的記錄,以取得部署狀態。

現在,guestbook 應用程式應該可供使用。 您可以造訪 應用程式閘道 部署的公用位址來檢查可用性。

透過 HTTPS 公開服務

沒有指定的主機名

如果您未指定主機名,則會guestbook在指向 應用程式閘道 部署的所有主機名上使用服務。

  1. 部署輸入資源之前,請先建立 Kubernetes 秘密來裝載憑證和私鑰:

    kubectl create secret tls <guestbook-secret-name> --key <path-to-key> --cert <path-to-cert>
    
  2. 定義下列輸入資源。 在區 secretName 段中,將 取代 <guestbook-secret-name> 為您的秘密名稱。

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: guestbook
      annotations:
        kubernetes.io/ingress.class: azure/application-gateway
    spec:
      tls:
        - secretName: <guestbook-secret-name>
      rules:
      - http:
          paths:
          - backend:
              serviceName: frontend
              servicePort: 80
    
  3. 將輸入資源儲存在名為 ing-guestbook-tls.yaml的檔案中。

  4. 執行此指令來部署 ing-guestbook-tls.yaml

    kubectl apply -f ing-guestbook-tls.yaml
    
  5. 檢查輸入控制器的記錄,以取得部署狀態。

現在 guestbook 應用程式可在 HTTP 和 HTTPS 上使用。

使用指定的主機名

您也可以將輸入資源上的主機名指定為多任務 TLS 組態和服務。 當您指定主機名時, guestbook 服務只能在指定的主機上使用。

  1. 定義下列輸入資源。 在區 secretName 段中,將 取代 <guestbook-secret-name> 為您的秘密名稱。 在 hostshost 區段中,將 取代 <guestbook.contoso.com> 為您的主機名。

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: guestbook
      annotations:
        kubernetes.io/ingress.class: azure/application-gateway
    spec:
      tls:
        - hosts:
          - <guestbook.contoso.com>
          secretName: <guestbook-secret-name>
      rules:
      - host: <guestbook.contoso.com>
        http:
          paths:
          - backend:
              serviceName: frontend
              servicePort: 80
    
  2. 執行此指令來部署 ing-guestbook-tls-sni.yaml

    kubectl apply -f ing-guestbook-tls-sni.yaml
    
  3. 檢查輸入控制器的記錄,以取得部署狀態。

guestbook現在應用程式可在 HTTP 和 HTTPS 上使用,僅適用於指定的主機。

與其他服務整合

使用下列輸入資源來新增路徑,並將這些路徑重新導向至其他服務:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: guestbook
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
spec:
  rules:
  - http:
      paths:
      - path: </other/*>
        backend:
          serviceName: <other-service>
          servicePort: 80
       - backend:
          serviceName: frontend
          servicePort: 80