Поделиться через


Предоставление службы AKS по протоколу HTTP или HTTPS с помощью Шлюз приложений

В этой статье показано использование ресурсов входящего трафика Kubernetes для предоставления примера службы Служба Azure Kubernetes (AKS) через Шлюз приложений Azure по протоколу HTTP или HTTPS.

Необходимые компоненты

Развертывание приложения гостевой книги

Приложение guestbook — это каноническое приложение Kubernetes, состоящее из интерфейса веб-интерфейса, серверной части и базы данных Redis.

По умолчанию guestbook предоставляет свое приложение через службу с именем frontend на порту 80. Без ресурса входящего трафика Kubernetes служба недоступна за пределами кластера AKS. Вы используете приложение и настраиваете ресурсы входящего трафика для доступа к приложению через HTTP и HTTPS.

Чтобы развернуть guestbook приложение, выполните следующие действия.

  1. Скачайте guestbook-all-in-one.yaml эту страницу GitHub.

  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.

С указанным именем узла

Вы также можете указать имя узла в ресурсе ingress в конфигурации и службах TLS для мультиплексирования. При указании имени guestbook узла служба доступна только на указанном узле.

  1. Определите следующий ресурс входящего трафика. 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
    
  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