Предоставление службы AKS по протоколу HTTP или HTTPS с помощью Шлюз приложений
В этой статье показано использование ресурсов входящего трафика Kubernetes для предоставления примера службы Служба Azure Kubernetes (AKS) через Шлюз приложений Azure по протоколу HTTP или HTTPS.
Совет
Рассмотрите возможность Шлюз приложений для контейнеров для решения входящего трафика Kubernetes.
Необходимые компоненты
- Установленная
ingress-azure
диаграмма Helm:- Развертывание Greenfield: если вы начинаете с нуля, ознакомьтесь с этими инструкциями по установке, которые описывают шаги по развертыванию кластера AKS с Шлюз приложений и установке Шлюз приложений контроллера входящего трафика (AGIC) в кластере AKS.
- Развертывание Brownfield. Если у вас есть существующий кластер AKS и Шлюз приложений развертывание, ознакомьтесь с этими инструкциями по установке AGIC в кластере AKS.
- Сертификат x509 и его закрытый ключ, если вы хотите использовать HTTPS в этом приложении.
Развертывание приложения гостевой книги
Приложение guestbook
— это каноническое приложение Kubernetes, состоящее из интерфейса веб-интерфейса, серверной части и базы данных Redis.
По умолчанию guestbook
предоставляет свое приложение через службу с именем frontend
на порту 80
. Без ресурса входящего трафика Kubernetes служба недоступна за пределами кластера AKS. Вы используете приложение и настраиваете ресурсы входящего трафика для доступа к приложению через HTTP и HTTPS.
Чтобы развернуть guestbook
приложение, выполните следующие действия.
Скачайте
guestbook-all-in-one.yaml
эту страницу GitHub.Разверните
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.
С указанным именем узла
Вы также можете указать имя узла в ресурсе ingress в конфигурации и службах 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