Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
© 2022 ООО «Яндекс.Облако»
Yandex Managed Service for Kubernetes
  • Сопоставление с другими сервисами Yandex Cloud
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Подключение к узлу по SSH
    • Обновление Kubernetes
    • Настройка автомасштабирования
    • Подключение к кластеру
      • Обзор способов подключения
      • Настройка групп безопасности
      • Создание статического файла конфигурации
    • Установка приложений
      • Основы работы с Yandex Cloud Marketplace
      • Установка Jaeger
      • Установка Metrics Provider
    • Сетевые сценарии
      • Обеспечение доступа к приложению, запущенному в кластере Kubernetes
      • Настройка контроллера сетевых политик Calico
      • Настройка контроллера сетевых политик Cilium
      • Настройка Node Local DNS для контроллера сетевых политик Cilium
    • Работа с постоянными томами
      • Динамическая подготовка тома
      • Статическая подготовка тома
      • Управление классами хранилищ
      • Увеличение размера тома для подов
      • Увеличение размера тома для контроллера StatefulSet
      • Подключение тома в блочном режиме
      • Интеграция с Object Storage
    • Управление кластером Kubernetes
      • Получение информации о кластере Kubernetes
      • Создание кластера Kubernetes
      • Изменение кластера Kubernetes
      • Создание пространства имен в кластере Kubernetes
      • Удаление кластера Kubernetes
    • Управление группой узлов
      • Информация об имеющихся группах узлов
      • Создание группы узлов
      • Подключение к узлу по SSH
      • Настройка автомасштабирования
      • Изменение группы узлов
      • Управление метками узлов кластера Kubernetes
      • Удаление группы узлов
    • Подключение внешних узлов к кластеру
  • Практические руководства
    • Все руководства
    • Интеграция с Yandex Container Registry
    • Запуск рабочих нагрузок с GPU
    • Установка NGINX Ingress-контроллера с Let's Encrypt®
    • Настройка Yandex Application Load Balancer Ingress-контроллера
    • Резервное копирование в Object Storage
    • Горизонтальное масштабирование приложения в кластере
    • Работа со снапшотами
    • Интеграция с корпоративной зоной DNS
    • Автоматическое масштабирование DNS по размеру кластера
    • Настройка локального кеширования DNS
    • Настройка Fluent Bit для работы с Yandex Cloud Logging
    • Синхронизация с секретами Yandex Lockbox
    • Использование продуктов Cloud Marketplace
      • Использование Jaeger для трассировки запросов в Managed Service for YDB
  • Концепции
    • Взаимосвязь ресурсов сервиса
    • Релизные каналы и обновления
    • Шифрование секретов
    • Использование объектов API Kubernetes
      • Том
      • Сервис
    • Группа узлов
      • Автоматическое масштабирование группы узлов
      • Расселение подов с узла
      • Динамическое резервирование ресурсов для узла
      • Группы узлов с GPU
    • Сеть в Managed Service for Kubernetes
    • Внешние узлы кластера
    • Сетевые настройки и политики кластера
    • Автоматическое масштабирование
    • Квоты и лимиты
    • Рекомендации по использованию Managed Service for Kubernetes
  • Управление доступом
  • Правила тарификации
  • Справочник API
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • ClusterService
      • NodeGroupService
      • VersionService
      • OperationService
    • REST (англ.)
      • Overview
      • Cluster
        • Overview
        • create
        • delete
        • get
        • list
        • listNodeGroups
        • listNodes
        • listOperations
        • start
        • stop
        • update
      • NodeGroup
        • Overview
        • create
        • delete
        • get
        • list
        • listNodes
        • listOperations
        • update
      • Version
        • Overview
        • list
  • Вопросы и ответы
    • Общие вопросы
    • Хранилище данных
    • Настройка и обновление
    • Автоматическое масштабирование
    • Ресурсы
    • Логи
    • Все вопросы на одной странице
  1. Практические руководства
  2. Установка NGINX Ingress-контроллера с Let's Encrypt®

Установка NGINX Ingress-контроллера с менеджером для сертификатов Let's Encrypt®

Статья создана
Yandex Cloud
  • Перед началом работы
  • Установите NGINX Ingress Controller
  • Установите менеджер сертификатов
  • Создайте объекты
  • Настройте DNS-запись для Ingress-контроллера
  • Проверьте работоспособность TLS
  • Удалите созданные ресурсы

Чтобы с помощью Kubernetes создать NGINX Ingress-контроллер и защитить его сертификатом Let's Encrypt®, выполните следующие действия.

Перед началом работы

  1. Установите kubectl и настройте его на работу с созданным кластером.

  2. Установите менеджер пакетов Kubernetes Helm 3.

  3. Добавьте в Helm репозиторий для NGINX:

    helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
    

    Результат выполнения команды:

    "ingress-nginx" has been added to your repositories
    
  4. Обновите набор данных для создания экземпляра приложения в кластере Kubernetes:

    helm repo update
    

    Результат выполнения команды:

    Hang tight while we grab the latest from your chart repositories...
    ...Successfully got an update from the "ingress-nginx" chart repository
    Update Complete. ⎈Happy Helming!⎈
    

Установите NGINX Ingress Controller

Установите контроллер в стандартной конфигурации:

helm install ingress-nginx ingress-nginx/ingress-nginx

Результат выполнения команды:

NAME: ingress-nginx
LAST DEPLOYED: Sun Jul 18 22:35:37 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
The ingress-nginx controller has been installed.
It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status by running 'kubectl --namespace default get services -o wide -w ingress-nginx-controller'
...

Созданный контроллер будет установлен за Yandex Network Load Balancer.

Чтобы настроить конфигурацию контроллера самостоятельно, обратитесь к документации Helm и отредактируйте файл values.yaml.

Установите менеджер сертификатов

  1. Установите менеджер сертификатов версии 1.6.1, настроенный для выпуска сертификатов от Let's Encrypt® (проверьте наличие более новой версии на странице проекта):

    kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.6.1/cert-manager.yaml
    

    Результат выполнения команды:

    customresourcedefinition.apiextensions.k8s.io/certificaterequests.cert-manager.io created
    ...
    validatingwebhookconfiguration.admissionregistration.k8s.io/cert-manager-webhook created
    
  2. Убедитесь, что в пространстве имен cert-manager создано три пода с готовностью 1/1 и статусом Running:

    kubectl get pods -n cert-manager --watch
    

    Результат выполнения команды:

    NAME                                      READY  STATUS   RESTARTS  AGE
    cert-manager-69cf79df7f-ghw6s             1/1    Running  0         54s
    cert-manager-cainjector-7648dc6696-gnrzz  1/1    Running  0         55s
    cert-manager-webhook-7746f64877-wz9bh     1/1    Running  0         54s
    

Создайте объекты

Чтобы протестировать работу менеджера сертификатов, необходимо создать объекты ClusterIssuer, Ingress, Service и Deployment.

  1. Создайте YAML-файл acme-issuer.yaml с манифестом объекта ClusterIssuer:

    apiVersion: cert-manager.io/v1
    kind: ClusterIssuer
    metadata:
      name: letsencrypt
      namespace: cert-manager
    spec:
      acme:
        server: https://acme-v02.api.letsencrypt.org/directory
        email: <ваш email>
        privateKeySecretRef:
          name: letsencrypt
        solvers:
        - http01:
            ingress:
              class: nginx
    
  2. Создайте YAML-файл app.yaml с манифестами объектов Ingress, Service и Deployment:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: minimal-ingress
      annotations:
        kubernetes.io/ingress.class: "nginx"
        cert-manager.io/cluster-issuer: "letsencrypt"
    spec:
      tls:
        - hosts:
          - <URL адрес вашего домена>
          secretName: letsencrypt
      rules:
        - host: <URL адрес вашего домена>
          http:
            paths:
            - path: /
              pathType: Prefix
              backend:
                service:
                  name: app
                  port:
                    number: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: app
    spec:
      selector:
        app: app
      ports:
        - protocol: TCP
          port: 80
          targetPort: 80
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: app-deployment
      labels:
        app: app
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: app
      template:
        metadata:
          labels:
            app: app
        spec:
          containers:
          - name: app
            image: nginx:latest
            ports:
            - containerPort: 80
    
  3. Создайте объекты в кластере Kubernetes:

    kubectl apply -f acme-issuer.yaml && \
    kubectl apply -f app.yaml
    

Настройте DNS-запись для Ingress-контроллера

  1. Узнайте IP-адрес Ingress-контроллера (значение в колонке EXTERNAL-IP):

    kubectl get svc
    

    Результат выполнения команды:

    NAME                      TYPE          CLUSTER-IP     EXTERNAL-IP     PORT(S)                     AGE
    ...
    ingress-nginx-controller  LoadBalancer  10.96.164.252  84.201.153.122  80:31248/TCP,443:31151/TCP  2m19s
    ...
    
  2. Разместите у своего DNS-провайдера или на собственном DNS-сервере A-запись, указывающую на публичный IP-адрес Ingress-контроллера:

    <ваш домен> IN A 84.201.153.122
    

Примечание

Регистрация сертификата Let's Encrypt® и A-записи может занять несколько минут.

Проверьте работоспособность TLS

curl https://<ваш домен>

Удалите созданные ресурсы

Если созданные ресурсы вам больше не нужны, удалите кластер Managed Service for Kubernetes.

Была ли статья полезна?

Language / Region
© 2022 ООО «Яндекс.Облако»
В этой статье:
  • Перед началом работы
  • Установите NGINX Ingress Controller
  • Установите менеджер сертификатов
  • Создайте объекты
  • Настройте DNS-запись для Ingress-контроллера
  • Проверьте работоспособность TLS
  • Удалите созданные ресурсы