Политика Gatekeeper -это простой веб-интерфейс только для чтения для просмотра статуса Gatekeeper Policies в кластере Kubernetes.
Целевой кластер Kubernetes может быть таким же, когда работает GPM или какой -либо другой удаленный кластер (ы) с использованием файла kubeconfig . Вы также можете запустить GPM локально в клиентской машине и подключиться к удаленному кластеру.
GPM может отображать все определенные шаблоны ограничений с их кодом Rego, все CRDS конфигурации привратника и все ограничения с их текущим статусом, нарушениями, действиями по принуждению, соответствию определениям и т. Д.
Вы можете увидеть несколько скриншотов ниже.
Вам понадобится Gatekeeper OPA, работающий в вашем кластере, и, по крайней мере, некоторые шаблоны ограничений и ограничения, определяемые для использования этого инструмента.
ℹ Вы можете легко развернуть привратник в свой кластер, используя модуль (также открытый исходный код) Kubernetes Fury OPA.
Чтобы развернуть диспетчер политики Gatekeeper в свой кластер, примените предоставленный файл kustomization , выполняющий следующую команду:
kubectl apply -k . По умолчанию это создаст развертывание и услугу как с именем имен имен имен, в пространстве имен gatekeeper-system gatekeper-policy-manager . Мы приглашаем вас посмотреть в файл kustomization.yaml , чтобы сделать дальнейшую конфигурацию.
Приложение можно запустить как стручок в кластере Kubernetes или локально с файлом
kubeconfig. Он будет изо всех сил попытаться автоматически разместить правильную конфигурацию.
После того, как вы развернули приложение, если вы не настраиваете вход, вы можете получить доступ к Web-UI, используя порт-фарвард:
kubectl -n gatekeeper-system port-forward svc/gatekeeper-policy-manager 8080:80Затем обратитесь к нему с вашим браузером на: http://127.0.0.1:8080
Также возможно развернуть GPM, используя приуженную Helm Hard.
Сначала создайте файл значений, например, my-values.yaml , с вашими пользовательскими значениями для выпуска. См. README диаграммы и значения по умолчанию. YAML для получения дополнительной информации.
Затем выполните:
helm repo add gpm https://sighupio.github.io/gatekeeper-policy-manager
helm upgrade --install --namespace gatekeeper-system --set image.tag=v1.0.13 --values my-values.yaml gatekeeper-policy-manager gpm/gatekeeper-policy-managerНе забудьте заменить
my-values.yamlпутем к файлу ваших значений.
GPM также можно запускать локально с помощью Docker и kubeconfig , предполагая, что файл kubeconfig , который вы хотите использовать, расположен по адресу ~/.kube/config Команда для запуска GPM локально будет:
docker run -v ~ /.kube/config:/home/gpm/.kube/config -p 8080:8080 quay.io/sighup/gatekeeper-policy-manager:v1.0.13Затем обратитесь к нему с вашим браузером на: http://127.0.0.1:8080
Вы также можете запустить приложение Flask напрямую, см. Раздел разработки для получения дополнительной информации.
GPM является приложением без сохранения, но его можно настроить с использованием переменных среды. Возможные конфигурации:
| Имя переменной среды | Описание | По умолчанию |
|---|---|---|
GPM_SECRET_KEY | Секретный ключ, используемый для генерации токенов. Измените это значение в производстве . | g8k1p3rp0l1c7m4n4g3r |
KUBECONFIG | Путь к файлу kubeconfig, если он будет предоставлен во время работы внутри кластера, вместо API кластера будет использоваться этот файл конфигурации. | |
GPM_LOG_LEVEL | Уровень журнала (см. Документы для ведения журнала Python для доступных уровней) | INFO |
GPM_AUTH_ENABLED | Включить актуальные параметры аутентификации: «Анонимный», «OIDC» | Анонимный |
GPM_PREFERRED_URL_SCHEME | Схема URL, которая будет использоваться при генерации ссылок. | http |
GPM_OIDC_REDIRECT_DOMAIN | Домен, где работает GPM. Здесь клиент будет перенаправлен после аутентификации | |
GPM_OIDC_CLIENT_ID | Идентификатор клиента, используемый для аутентификации против поставщика OIDC | |
GPM_OIDC_CLIENT_SECRET | Секрет клиента, используемый для аутентификации против поставщика OIDC (необязательно) | |
GPM_OIDC_ISSUER | OIDC Esuseer HostName (требуется, если AIDC Auth включена) | |
GPM_OIDC_AUTHORIZATION_ENDPOINT | Конечная точка авторизации OIDC (необязательно, установление этого параметра отключает обнаружение остальной части конфигурации поставщика, установите все остальные значения, а также настройка этого) | |
GPM_OIDC_JWKS_URI | Oidc jwks uri (необязательно, установление этого параметра отключает обнаружение остальной части конфигурации поставщика, установите все другие значения, если настройка этого) | |
GPM_OIDC_TOKEN_ENDPOINT | Конечная точка токена OIDC (необязательно, установите этот параметр отключает обнаружение остальной части конфигурации поставщика, установите все остальные значения, а также настройка этого) | |
GPM_OIDC_INTROSPECTION_ENDPOINT | Конечная точка самоанализа OIDC (необязательно, установление этого параметра отключает обнаружение остальной части конфигурации поставщика, установите все остальные значения, а также при настройке этого) | |
GPM_OIDC_USERINFO_ENDPOINT | Oidc userInfo Endpoint (необязательно, устанавливает этот параметр отключает обнаружение остальной части конфигурации поставщика, установите все другие значения, если настройка этого). | |
GPM_OIDC_END_SESSION_ENDPOINT | EIDC End Session Endpoint (необязательно, настройка этого параметра отключает обнаружение остальной части конфигурации поставщика, установите все остальные значения, а также настройка этого) |
️ Пожалуйста, обратите внимание, что аутентификация OIDC находится в бета -состоянии. Он был протестирован для работы с KeyCloak в качестве поставщика.Эти переменные среды уже предоставляются и готовы к установке в файле
manifests/enable-oidc.yaml.
Поскольку v1.0.13 Гампийт имеет основную многокластерную поддержку при использовании kubeconfig с более чем одним контекстом. GPM позволит вам выбрать контекст прямо из пользовательского интерфейса.
Если вы хотите запустить GPM в кластере, но с помощью многокластерной поддержки, он так же просто, как монтаж файл kubeconfig в POD (ы) GPM с конфигурацией кластера доступа, и установите переменную среды KUBECONFIG с путем к установленному файлу kubeconfig . Или вы можете просто установить его в /home/gpm/.kube/config , а GPM обнаружит его автоматически.
Пожалуйста, помните, что пользователь для кластеров должен иметь правильные разрешения. Вы можете использовать файл
manifests/rabc.yamlв качестве ссылки.Также обратите внимание, что кластер, в котором работает GPM, должен иметь возможность достичь других кластеров.
Когда вы запускаете GPM локально, вы уже используете файл kubeconfig для подключения к кластерам, теперь вы должны увидеть все определенные контексты, и вы можете легко переключаться между ними из пользовательского интерфейса.
Если вы хотите использовать KubeConfig с аутентификацией IAM, вам нужно настраивать изображение контейнера GPM, потому что в Authentication IAM используются внешние двоичные файлы AWS, которые не включены по умолчанию в изображение.
Вы можете настроить изображение контейнера с помощью Dockerfile , как следующее:
FROM curlimages/curl:7.81.0 as downloader
RUN curl https://github.com/kubernetes-sigs/aws-iam-authenticator/releases/download/v0.5.5/aws-iam-authenticator_0.5.5_linux_amd64 --output /tmp/aws-iam-authenticator
RUN chmod +x /tmp/aws-iam-authenticator
FROM quay.io/sighup/gatekeeper-policy-manager:v1.0.13
COPY --from=downloader --chown=root:root /tmp/aws-iam-authenticator /usr/local/bin/ Возможно, вам придется добавить также CLI aws , вы можете использовать тот же подход, что и раньше.
Убедитесь, что ваш kubeconfig имеет набор apiVersion как client.authentication.k8s.io/v1beta1
Вы можете прочитать больше в этом выпуске.








GPM написан на Python, используя флангс -структуру для бэкэнда и реагируйте с Elastic UI и темой Fury для Frondend.
Чтобы разработать GPM, вам необходимо создать виртуальную среду Python 3, установить все зависимости, указанные в предоставленных requirements.txt
Следующие команды должны заставить вас запустить:
# Build frontend and copy over to static folder
$ pushd app/web-client
$ yarn install && yarn build
$ cp -r build/ * ../static-content/
$ popd
# Create a virtualenv
$ python3 -m venv env
# Activate it
$ source ./env/bin/activate
# Install all the dependencies
$ pip install -r app/requirements.txt
# Run the development server
$ FLASK_APP=app/app.py flask runДоступ к кластеру Kubernetes с развертываемым Gatekeeper OPA рекомендуется отладки приложения.
Вам понадобится поставщик OIDC, чтобы проверить аутентификацию OIDC. Вы можете использовать наш модуль Fury-Kubernetes-Keycloak.
Ниже приведен список пожеланий функций, которые мы хотели бы добавить в GPM (в любом конкретном порядке):
ConstraintTemplate Пожалуйста, дайте нам знать, если вы используете GPM и какие функции вы хотели бы иметь, создав проблему здесь, на GitHub ??