Установка NGINX Ingress Controller с менеджером для сертификатов Let's Encrypt®
Чтобы с помощью Kubernetes создать NGINX Ingress Controller и защитить его сертификатом Let's Encrypt®, выполните следующие действия.
Перед началом работы
-
Установите Kubernetes CLI kubectl.
-
Установите менеджер пакетов Kubernetes Нelm 3.
-
Добавьте в Helm репозиторий для NGINX:
CLIВыполните команду:
helm repo add nginx-stable https://helm.nginx.com/stable
Результат выполнения команды:
"nginx-stable" has been added to your repositories
-
Обновите набор данных для создания экземпляра приложения в кластере Kubernetes:
CLIВыполните команду:
helm repo update
Результат выполнения команды:
Hang tight while we grab the latest from your chart repositories... ...Successfully got an update from the "nginx-stable" chart repository Update Complete. ⎈Happy Helming!⎈
Установите NGINX Ingress Controller
Установите контроллер в стандартной конфигурации:
Выполните команду:
helm install nginx-ingress nginx-stable/nginx-ingress
Результат выполнения команды:
NAME: nginx-ingress
LAST DEPLOYED: Thu Dec 10 18:33:28 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
The NGINX Ingress Controller has been installed.
Созданный контроллер будет установлен за Yandex Network Load Balancer.
Чтобы настроить конфигурацию контроллера самостоятельно, обратитесь к документации Helm и отредактируйте файл values.yaml.
Установите менеджер сертификатов
-
Установите менеджер сертификатов версии 1.0.4, настроенный для выпуска сертификатов от Let's Encrypt® (проверьте наличие более новой версии на странице проекта):
CLIВыполните команду:
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.0.4/cert-manager.yaml
Результат выполнения команды:
customresourcedefinition.apiextensions.k8s.io/certificaterequests.cert-manager.io created ... validatingwebhookconfiguration.admissionregistration.k8s.io/cert-manager-webhook created
-
Убедитесь, что в пространстве имен
cert-manager
появится три пода, все они имеют готовность1/1
и статусRunning
:CLIВыполните команду:
kubectl get pods -n cert-manager
Результат выполнения команды:
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
Настройте DNS-запись для ingress-контроллера
-
Узнайте IP-адрес контроллера:
CLIВыполните команду:
kubectl get svc
Результат выполнения команды:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE ... nginx-ingress-nginx-ingress LoadBalancer 10.96.164.252 84.201.153.122 80:31248/TCP,443:31151/TCP 2m19s ...
-
Разместите у своего DNS-провайдера или на собственном DNS-сервере A-запись:
<ваш домен> IN A 84.201.153.122
Проверьте работу
Проверьте работоспособность TLS:
Выполните команду:
curl https://<ваш домен>