Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье показано использование ресурсов входящего трафика Kubernetes для предоставления примера службы Azure Kubernetes (AKS) через шлюз приложений Azure по протоколу HTTP или HTTPS.
Tip
Рассмотрите Шлюз приложений для контейнеров в качестве решения для управления входящим трафиком Kubernetes.
Prerequisites
- Установленная
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, используйте следующий ресурс ingress:
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Проверьте журнал контроллера входящего трафика для состояния развертывания.
Теперь приложение доступно как по протоколу 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