Gatekeeper Policy Manager es una ui web simple de solo lectura para ver el estado de las políticas de OPA Gatekeeper en un clúster Kubernetes.
El clúster de Kubernetes de destino puede ser el mismo donde se ejecuta GPM o algún otro clúster remoto utilizando un archivo kubeconfig . También puede ejecutar GPM localmente en una máquina cliente y conectarse a un clúster remoto.
GPM puede mostrar todas las plantillas de restricción definidas con su código REgo, todos los CRD de configuración de Gatekeeper y todas las restricciones con su estado actual, violaciones, acción de aplicación, definiciones coincidentes, etc.
Puedes ver algunas capturas de pantalla a continuación.
Necesitará OPA Gatekeeper ejecutándose en su clúster y al menos algunas plantillas y limitaciones de restricciones definidas para aprovechar esta herramienta.
ℹ Puede implementar fácilmente Gatekeeper en su clúster utilizando el módulo Kubernetes Fury OPA (también de código abierto).
Para implementar Gatekeeper Policy Manager en su clúster, aplique el archivo de kustomization proporcionado que ejecuta el siguiente comando:
kubectl apply -k . Por defecto, esto creará una implementación y un servicio tanto con el nombre gatekeper-policy-manager en el espacio de nombres gatekeeper-system . Lo invitamos a echar un vistazo al archivo kustomization.yaml para hacer una configuración adicional.
La aplicación se puede ejecutar como una cápsula en un clúster de Kubernetes o localmente con un archivo
kubeconfig. Hará todo lo posible para autodetectar la configuración correcta.
Una vez que haya implementado la aplicación, si no ha configurado un ingreso, puede acceder al Web-UI usando el puerto-Forward:
kubectl -n gatekeeper-system port-forward svc/gatekeeper-policy-manager 8080:80Luego acceda a él con su navegador en: http://127.0.0.1:8080
También es posible implementar GPM utilizando el gráfico de timón proporcionado.
Primero cree un archivo de valores, por ejemplo my-values.yaml , con sus valores personalizados para la versión. Consulte el ReadMe de la tabla y los valores predeterminados.yaml para obtener más información.
Entonces, ejecute:
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-managerNo olvide reemplazar
my-values.yamlcon la ruta a su archivo de valores.
GPM también se puede ejecutar localmente usando Docker y un kubeconfig , suponiendo que el archivo kubeconfig que desea usar se encuentra en ~/.kube/config El comando para ejecutar GPM localmente sería:
docker run -v ~ /.kube/config:/home/gpm/.kube/config -p 8080:8080 quay.io/sighup/gatekeeper-policy-manager:v1.0.13Luego acceda a él con su navegador en: http://127.0.0.1:8080
También puede ejecutar la aplicación Flask directamente, consulte la sección de desarrollo para obtener más información.
GPM es una aplicación sin estado, pero se puede configurar utilizando variables de entorno. Las posibles configuraciones son:
| Nombre de la variable de entorno | Descripción | Por defecto |
|---|---|---|
GPM_SECRET_KEY | La clave secreta utilizada para generar tokens. Cambiar este valor en la producción . | g8k1p3rp0l1c7m4n4g3r |
KUBECONFIG | Ruta a un archivo kubeConfig, si se proporciona mientras se ejecuta dentro de un clúster, se utilizará este archivo de configuración en lugar de la API del clúster. | |
GPM_LOG_LEVEL | Nivel de registro (consulte los documentos de registro de Python para los niveles disponibles) | INFO |
GPM_AUTH_ENABLED | Habilitar opciones actuales de autenticación: "Anónimo", "OIDC" | Anónimo |
GPM_PREFERRED_URL_SCHEME | Esquema de URL que se utilizará al generar enlaces. | http |
GPM_OIDC_REDIRECT_DOMAIN | El dominio donde se está ejecutando GPM. Aquí es donde el cliente será redirigido después de autenticar | |
GPM_OIDC_CLIENT_ID | La ID del cliente utilizada para autenticarse contra el proveedor OIDC | |
GPM_OIDC_CLIENT_SECRET | El secreto del cliente utilizado para autenticarse contra el proveedor OIDC (opcional) | |
GPM_OIDC_ISSUER | Nombre de host del emisor OIDC (requerido si la autenticación OIDC está habilitada) | |
GPM_OIDC_AUTHORIZATION_ENDPOINT | OIDC Autorización de punto final (opcional, configurar este parámetro deshabilita el descubrimiento del resto de la configuración del proveedor, establece todos los demás valores también si configuran este) | |
GPM_OIDC_JWKS_URI | OIDC JWKS URI (opcional, configurar este parámetro deshabilita el descubrimiento del resto de la configuración del proveedor, configure todos los demás valores también si configuran este) | |
GPM_OIDC_TOKEN_ENDPOINT | OIDC Token Endpoint (opcional, configurar este parámetro deshabilita el descubrimiento del resto de la configuración del proveedor, configure todos los demás valores también si configuran este) | |
GPM_OIDC_INTROSPECTION_ENDPOINT | OIDC Introspección de punto final (opcional, configurar este parámetro deshabilita el descubrimiento del resto de la configuración del proveedor, configure todos los demás valores también si configuran este) | |
GPM_OIDC_USERINFO_ENDPOINT | OIDC UserInfo Endpoint (opcional, configurar este parámetro deshabilita el descubrimiento del resto de la configuración del proveedor, configure todos los demás valores también si configuran este) | |
GPM_OIDC_END_SESSION_ENDPOINT | OIDC FIN SESION ENDPINT (opcional, configurar este parámetro deshabilita el descubrimiento del resto de la configuración del proveedor, establece todos los demás valores también si configuran este) |
️ Observe que la autenticación OIDC está en el estado beta. Se ha probado para trabajar con KeyCloak como proveedor.Estas variables de entorno ya están proporcionadas y listas para establecerse en el archivo
manifests/enable-oidc.yaml.
Dado que v1.0.13 GPM tiene soporte básico de múltiples clúster cuando se usa un kubeconfig con más de un contexto. GPM le permitirá elegir el contexto directamente de la interfaz de usuario.
Si desea ejecutar GPM en un clúster pero con soporte de múltiples clúster, es tan fácil como montar un archivo kubeconfig en el POD (s) de GPM con la configuración de acceso al clúster y establecer la variable de entorno KUBECONFIG con la ruta hacia el archivo kubeconfig montado. O simplemente puede montarlo en /home/gpm/.kube/config y GPM lo detectará automáticamente.
Recuerde que el usuario para los clústeres debe tener los permisos correctos. Puede usar el archivo
manifests/rabc.yamlcomo referencia.También tenga en cuenta que el clúster donde se ejecuta GPM debería poder llegar a los otros grupos.
Cuando ejecuta GPM localmente, ya está utilizando un archivo kubeconfig para conectarse a los clústeres, ahora debería ver todos sus contextos definidos y puede cambiar entre ellos fácilmente desde la interfaz de usuario.
Si desea utilizar una autenticación KubeConfig con IAM, necesitará personalizar la imagen del contenedor de GPM porque la autenticación IAM utiliza binarios AWS externos que no están incluidos de forma predeterminada en la imagen.
Puede personalizar la imagen del contenedor con un Dockerfile como lo siguiente:
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/ Es posible que deba agregar también la aws CLI, puede usar el mismo enfoque que antes.
Asegúrese de que su kubeconfig tenga la apiVersion establecida como client.authentication.k8s.io/v1beta1
Puedes leer más en este tema.








GPM está escrito en Python utilizando el marco de frascos para el backend y reaccionar con la interfaz de usuario elástica y el tema de furia para el interfaz.
Para desarrollar GPM, necesitará crear un entorno virtual de Python 3, instalar todas las dependencias especificadas en los requirements.txt proporcionados.
Los siguientes comandos deberían ponerte en ejecución:
# 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 runSe recomienda el acceso a un clúster de Kubernetes con OPA Gatekeeper implementado para depurar la aplicación.
Necesitará un proveedor OIDC para probar la autenticación OIDC. Puede usar nuestro módulo Fury-Kubernetes-Keycloak.
La siguiente es una lista de deseos de características que nos gustaría agregar a GPM (sin ningún orden en particular):
ConstraintTemplate Por favor, háganos saber si está utilizando GPM y ¿qué características le gustaría tener creando un problema aquí en Github?