Вступление
В этом руководстве вы узнаете, как настроить двустороннюю взаимную аутентификацию с контроллером NGINX Ingress в Kubernetes.
Получение сертификатов
Первым шагом во взаимной аутентификации является защита вашей конечной точки, которая в данном случае является контроллером NGINX Ingress.
Вам понадобится сертификат и ключ от доверенного органа.
Создание входного ресурса NGINX
Входной контроллер NGINX создается с использованием файла YAML.
И сертификат и ключ будут включены.
apiVersion: v1
kind: Ingress
metadata:
name: myapp-ingress
spec:
rules:
- host: app.serverlab.ca
http:
paths:
- backend:
serviceName: myapp
servicePort: 80
path: /
tls:
- hosts:
- app.serverlab.ca
secretName: my-certs
tls: Этот ключ предоставляет ключи конфигурации для включения HTTPS на входном контроллере NGINX.
hosts: используется для определения множества имен хостов, для которых будет включен TLS.
Подстановочные знаки не поддерживаются, поэтому каждое имя хоста, добавляемое в сертификат, также должно быть задано явно.
Создайте новый входной ресурс с помощью команды kubectl apply.
kubectl apply -f nginx-ingress.yml
Включение взаимной аутентификации на основе сертификатов
Взаимная аутентификация включается добавлением аннотации к вашему входному контроллеру.
Аннотация устанавливает конфигурацию NGINX для проверки сертификата клиента.
Обновите существующий YAML-файл NGINX Ingress, добавив annotations
apiVersion: v1
kind: Ingress
metadata:
name: myapp-ingress
annotations:
nginx.ingress.kubernetes.io/auth-tls-verify-client: "on"
nginx.ingress.kubernetes.io/auth-tls-secret: "default/my-certs"
spec:
rules:
- host: app.serverlab.ca
http:
paths:
- backend:
serviceName: myapp
servicePort: 80
path: /
tls:
- hosts:
- app.serverlab.ca
secretName: my-certs