使用 應用程式閘道 透過 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
應用程式:
從此 GitHub 頁面下載
guestbook-all-in-one.yaml
。執行此指令以部署到
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
:
執行此指令來部署
ing-guestbook.yaml
:kubectl apply -f ing-guestbook.yaml
檢查輸入控制器的記錄,以取得部署狀態。
現在,guestbook
應用程式應該可供使用。 您可以造訪 應用程式閘道 部署的公用位址來檢查可用性。
透過 HTTPS 公開服務
沒有指定的主機名
如果您未指定主機名,則會guestbook
在指向 應用程式閘道 部署的所有主機名上使用服務。
部署輸入資源之前,請先建立 Kubernetes 秘密來裝載憑證和私鑰:
kubectl create secret tls <guestbook-secret-name> --key <path-to-key> --cert <path-to-cert>
定義下列輸入資源。 在區
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
將輸入資源儲存在名為
ing-guestbook-tls.yaml
的檔案中。執行此指令來部署
ing-guestbook-tls.yaml
:kubectl apply -f ing-guestbook-tls.yaml
檢查輸入控制器的記錄,以取得部署狀態。
現在 guestbook
應用程式可在 HTTP 和 HTTPS 上使用。
使用指定的主機名
您也可以將輸入資源上的主機名指定為多任務 TLS 組態和服務。 當您指定主機名時, guestbook
服務只能在指定的主機上使用。
定義下列輸入資源。 在區
secretName
段中,將 取代<guestbook-secret-name>
為您的秘密名稱。 在hosts
和host
區段中,將 取代<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
執行此指令來部署
ing-guestbook-tls-sni.yaml
:kubectl apply -f ing-guestbook-tls-sni.yaml
檢查輸入控制器的記錄,以取得部署狀態。
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