1. Предварительное условие для настройки Gatekeeper для конкретного приложения:
Создать клиента, называемый my-app в KeyCloak. В шаге создания выберите тип доступа: конфиденциально
После создания вы увидите вкладку учетных данных для вновь созданного клиента с секретом. Вам понадобится это для файла конфигурации Gatekeeper.yaml
Создайте роль сферы для этого приложения мой-прип-рол
Создать группу моя группа и добавить роль My-App-Role В составах ролевых групп группы
Перейдите к своему пользователю и добавьте его в моя группа Анкет Этот пользователь будет авторизован для доступа к защищенному приложению, как только мы его настроим
2. Создайте файл конфигурации привратника, Gatekeeper.yaml, как секрет
client-id: my-app client-secret: my-app-secret-from-credentials discovery-url: https://my-keycloak-server.com/auth/realms/my-realm skip-upstream-tls-verify: false skip-openid-provider-tls-verify: true encryption-key: random-secret-value-of-16-or-32-characters listen: 0.0.0.0:3000 secure-cookie: false enable-logging: true enable-json-logging: true enable-default-deny: true enable-refresh-tokens: true enable-session-cookies: true debug: true ingress.enabled: true resources: - uri: /favicon white-listed: true
Значения, которые должны быть заменены и установлены в приведенном выше файле конфигурации:
клиент-секретный Установить с вкладки «Клиент»
Шифрование-ключ Случайное значение хеша 16 или 32 символа
Discovery-url Конечная точка KeyCloak
Некоторые из важных значений объяснили:
Discovery-url Является ли reailm в geycloak, который проживает клиент My-App
skip-openid-provider-tls-Verify Игнорирует саморегистрированное предупреждение о сертификате KeyCloak для запроса клиента Gatekeeper
Enable-Default-Deny — Все ресурсы по умолчанию защищены, если только явно не допускается в ресурсах
Слушай — Порт, где привратник начнет и слушает
перенаправление-урл — где успешный вход будет перенаправлен на
Вверх по течению-урл — Где привратник перестанет запрос после успешного разрешения
Ресурсы Конфигурируют, какие ресурсы можно получить (в списке белого цвета) без аутентификации.
Значения конфигурации необходимы Gatekeeper для связи с KeyCloak. Итак, с конечная точка , мы сообщаем Gatekeeper, где найти сервер KeyCloak, с которым можно поговорить, с клиент-ид и клиент-секретный Привратник может аутентифицировать себя с помощью KeyCloak, чтобы сделать запросы на него.
kubectl create secret generic gatekeeper --from-file= ./gatekeeper.yaml -n my-namespace
Теперь, когда вы настроили всю необходимую конфигурацию, вам необходимо развернуть контейнер привратника внутри стручки, где запускается приложение, которое вы хотите получить. Таким образом, привратник будет контейнером по боковой машине для вашего реального приложения, действуя как … Ну, привратник ко всем входящим запросам.
Поэтому, чтобы развернуть оба контейнера в одном стручке, вам нужно настроить его так:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
template:
...
spec:
containers:
- image: keycloak/keycloak-gatekeeper:7.0.0
name: gatekeeper
ports:
- containerPort: 3000
args:
- --config=/etc/secrets/gatekeeper.yaml
- --redirection-url=https://my-app-server-url
- --upstream-url=http://127.0.0.1:8080
- --resources=uri=/*|roles=my-app-role
volumeMounts:
- name: gatekeeper-secrets
mountPath: /etc/secrets
- image: my-app-image
name: my-app
ports:
- containerPort: 8080
volumes:
- name: gatekeeper-secrets
secret:
secretName: gatekeeper
Таким образом, с приведенной выше конфигурацией будет создан POD с контейнерами приложения и привратника, а файл Gatekeeper.yaml, который мы создали выше, будет установлен внутри контейнера привратника.
Как вы видите в конфигурации развертывания, Gatekeeper Container настроен ARGS.
перенаправление-урл где будет перенаправлен успешный логин. Это указывает на URL-адрес My-App, который также приземлится с привратником
Вверх по течению-урл -После того, как перенаправление-URL призвана для аутентифицированного пользователя, Gatekeeper разрешит доступ к My-App, переадресась с запросом на него на
http://127.0.0.1:8080Анкет
Почему http://127.0.0.1:8080 ? Поскольку и My-App, и привратник бегут в одной и той же стручке, они могут общаться через Localhost.
Итак, теперь нам нужно настроить Сервис для My-App, чтобы переслать входящие запросы, чтобы не my-app , но в контейнер привратника. Как вы видите сверху my-app и Привратник работают на разных портах ( 8080 и 3000 ), поэтому нам просто нужно сказать Сервису для пересылки запроса в Порт привратника 3000 Анкет
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
service: my-service
type: ClusterIP
ports:
- port: 32111
targetPort: 3000
► Получить 30% скидка — С этим кодом: udemy_nana_oct2020: Курс Udemy здесь ► Kubernetes 101 : Компактный и простой для чтения комплект электронных книг 🚀 Это удобный способ быстро искать что -то или обновить свои знания на работе и использовать его в качестве чит -листа 😎
Мол, поделиться и следуй за мной 😍 Для большего содержания:
Оригинал: «https://dev.to/techworld_with_nana/how-to-setup-a-keycloak-gatekeeper-to-secure-the-services-in-your-kubernetes-cluster-5d2d»