使用應用程式閘道透過 HTTP 或 HTTPS 公開 AKS 服務
這些教學課程可協助說明使用 Kubernetes 輸入資源,從 Azure 應用程式閘道透過 HTTP 或 HTTPS 公開 Kubernetes 服務範例。
提示
另請參閱什麼是適用於容器的應用程式閘道?本文目前為公開預覽狀態。
必要條件
- 已安裝
ingress-azure
helm 圖表。 - 如果您想要在此應用程式上使用 HTTPS,您需要 x509 憑證及其私密金鑰。
部署 guestbook
應用程式
guestbook 應用程式是標準 Kubernetes 應用程式,由 Web UI 前端、後端和 Redis 資料庫組成。 根據預設,guestbook
會在連接埠 80
上,以名稱為 frontend
的服務公開其應用程式。 如果沒有 Kubernetes 輸入資源,服務就無法從 AKS 叢集外部存取。 我們可使用應用程式和設定輸入資源,透過 HTTP 和 HTTPS 存取應用程式。
請遵循指示來部署 guestbook 應用程式。
- 從這裡下載
guestbook-all-in-one.yaml
- 執行下列內容來將
guestbook-all-in-one.yaml
部署至您的 AKS 叢集
kubectl apply -f guestbook-all-in-one.yaml
現在,guestbook
應用程式已部署完成。
透過 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
此輸入會將 guestbook-all-in-one
部署的 frontend
服務公開為應用程式閘道的預設後端。
將上述輸入資源儲存為 ing-guestbook.yaml
。
執行下列內容來部署
ing-guestbook.yaml
:kubectl apply -f ing-guestbook.yaml
檢查輸入控制器的記錄以取得部署狀態。
現在,guestbook
應用程式應該可供使用。 您可以造訪應用程式閘道的公用位址來檢查可用性。
透過 HTTPS 公開服務
沒有指定的主機名稱
若沒有指定主機名稱,guestbook 服務可在指向應用程式閘道的所有主機名稱上使用。
部署輸入之前,您必須建立 kubernetes 祕密來裝載憑證和私密金鑰。 您可以執行下列內容來建立 kubernetes 祕密
kubectl create secret tls <guestbook-secret-name> --key <path-to-key> --cert <path-to-cert>
定義下列輸入。 在輸入中,指定
secretName
區段中的祕密名稱。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
注意
將上述輸入資源中的
<guestbook-secret-name>
取代為您的祕密名稱。 將上述輸入資源儲存在檔案名稱ing-guestbook-tls.yaml
中。執行下列內容來部署 ing-guestbook-tls.yaml
kubectl apply -f ing-guestbook-tls.yaml
檢查輸入控制器的記錄以取得部署狀態。
現在 guestbook
應用程式可在 HTTP 和 HTTPS 上使用。
使用指定的主機名稱
您也可以在輸入上指定主機名稱,以使用多工 TLS 組態和服務。 藉由指定主機名稱,guestbook 服務只能在指定的主機上使用。
定義下列輸入。 在輸入中,指定
secretName
區段中的祕密名稱,並據以取代hosts
區段中的主機名稱。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.contoso.com>
) 上,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