O Gatekeeper Policy Manager é uma interface da web simples somente leitura para visualizar o status de políticas de gatekeeper da OPA em um cluster de Kubernetes.
O cluster Kubernetes de destino pode ser o mesmo em que o GPM está em execução ou algum outro (s) cluster (s) remoto (s) usando um arquivo kubeconfig . Você também pode executar o GPM localmente em uma máquina cliente e conectar -se a um cluster remoto.
O GPM pode exibir todos os modelos de restrição definidos com seu código Rego, todos os CRDs de configuração do gatekeeper e todas as restrições com seu status atual, violações, ação de execução, correspondências de definições etc.
Você pode ver algumas capturas de tela abaixo.
Você precisará do OPA Gatekeeper em execução em seu cluster e pelo menos alguns modelos de restrição e restrições definidas para aproveitar essa ferramenta.
ℹ Você pode implantar facilmente o gatekeeper no seu cluster usando o módulo (também de código aberto) Kubernetes Fury OPA.
Para implantar o Gatekeeper Policy Manager no seu cluster, aplique o arquivo de kustomization fornecido executando o seguinte comando:
kubectl apply -k . Por padrão, isso criará uma implantação e um serviço com o nome gatekeper-policy-manager no espaço para nome gatekeeper-system . Convidamos você a dar uma olhada no arquivo kustomization.yaml para fazer uma configuração adicional.
O aplicativo pode ser executado como um pod em um cluster Kubernetes ou localmente com um arquivo
kubeconfig. Ele tentará o possível para automaticamente a configuração correta.
Depois de implantar o aplicativo, se você não configurar uma entrada, poderá acessar o web-ui usando o porta-forward:
kubectl -n gatekeeper-system port-forward svc/gatekeeper-policy-manager 8080:80Em seguida, acesse -o com seu navegador em: http://127.0.0.1:8080
Também é possível implantar o GPM usando o gráfico de comando fornecido.
Primeiro, crie um arquivo de valores, por exemplo, my-values.yaml , com seus valores personalizados para a versão. Consulte o ReadMe do gráfico e os valores padrão.yaml para obter mais informações.
Então, execute:
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-managerNão se esqueça de substituir
my-values.yamlpelo caminho do seu arquivo de valores.
O GPM também pode ser executado localmente usando o Docker e um kubeconfig , assumindo que o arquivo kubeconfig que você deseja usar está localizado em ~/.kube/config o comando para executar o gpm localmente seria:
docker run -v ~ /.kube/config:/home/gpm/.kube/config -p 8080:8080 quay.io/sighup/gatekeeper-policy-manager:v1.0.13Em seguida, acesse -o com seu navegador em: http://127.0.0.1:8080
Você também pode executar o aplicativo Flask diretamente, consulte a seção de desenvolvimento para obter mais informações.
O GPM é um aplicativo sem estado, mas pode ser configurado usando variáveis de ambiente. As configurações possíveis são:
| Nome da variável do ambiente | Descrição | Padrão |
|---|---|---|
GPM_SECRET_KEY | A chave secreta usada para gerar tokens. Altere esse valor na produção . | g8k1p3rp0l1c7m4n4g3r |
KUBECONFIG | Caminho para um arquivo kubeconfig, se fornecido durante a execução de um cluster, este arquivo de configuração será usado em vez da API do cluster. | |
GPM_LOG_LEVEL | Nível de log (consulte Doces de log Python para os níveis disponíveis) | INFO |
GPM_AUTH_ENABLED | Ativar opções atuais de autenticação: "Anonymous", "OIDC" | Anônimo |
GPM_PREFERRED_URL_SCHEME | Esquema de URL a ser usado ao gerar links. | http |
GPM_OIDC_REDIRECT_DOMAIN | O domínio onde o GPM está sendo executado. É aqui que o cliente será redirecionado após a autenticação | |
GPM_OIDC_CLIENT_ID | O ID do cliente usado para se autenticar contra o provedor OIDC | |
GPM_OIDC_CLIENT_SECRET | O segredo do cliente usado para se autenticar contra o provedor OIDC (opcional) | |
GPM_OIDC_ISSUER | OIDC emissor hostName (exigido se o OIDC Auth estiver ativado) | |
GPM_OIDC_AUTHORIZATION_ENDPOINT | OIDC Authorization endpoint (opcional, definindo este parâmetro Desativa a descoberta do restante da configuração do provedor, defina todos os outros valores também se definir este) | |
GPM_OIDC_JWKS_URI | OIDC JWKS URI (opcional, definindo este parâmetro Desativa a descoberta do restante da configuração do provedor, defina todos os outros valores também se definir este) | |
GPM_OIDC_TOKEN_ENDPOINT | OIDC token endpoint (opcional, definindo este parâmetro Desativa a descoberta do restante da configuração do provedor, defina todos os outros valores também se definir este) | |
GPM_OIDC_INTROSPECTION_ENDPOINT | OIDC Introspecção Endpoint (opcional, definindo este parâmetro Desativa a descoberta do restante da configuração do provedor, defina todos os outros valores se definir este) | |
GPM_OIDC_USERINFO_ENDPOINT | OIDC UserInfo EndPoint (Opcional, definir este parâmetro Desativa a descoberta do restante da configuração do provedor, defina todos os outros valores também se definir este) | |
GPM_OIDC_END_SESSION_ENDPOINT | OIDC End Session Endpoint (Opcional, definindo este parâmetro Desativa a descoberta do restante da configuração do provedor, defina todos os outros valores também se definir este) |
️ Observe que a autenticação OIDC está no estado beta. Foi testado para trabalhar com a KeyCloak como provedor.Essas variáveis de ambiente já estão fornecidas e prontas para serem definidas no arquivo
manifests/enable-oidc.yaml.
Como v1.0.13 GPM possui suporte básico de multi-cluster ao usar um kubeconfig com mais de um contexto. O GPM permitirá que você tenha escolhido o contexto diretamente da interface do usuário.
Se você deseja executar o GPM em um cluster, mas com suporte a vários cluster, é tão fácil quanto montar um arquivo kubeconfig no (s) gpm (s) com a configuração de acesso ao cluster e definir a variável de ambiente KUBECONFIG com o caminho para o arquivo kubeconfig montado. Ou você pode simplesmente montá -lo em /home/gpm/.kube/config e gpm o detectará automaticamente.
Lembre -se de que o usuário dos clusters deve ter as permissões certas. Você pode usar os
manifests/rabc.yamlcomo referência.Observe também que o cluster em que o GPM está em execução deve poder alcançar os outros clusters.
Quando você executa o GPM localmente, você já está usando um arquivo kubeconfig para se conectar aos clusters, agora você deve ver todos os seus contextos definidos e poderá alternar entre eles facilmente da interface do usuário.
Se você deseja usar um kubeconfig com a autenticação do IAM, precisará personalizar a imagem do contêiner do GPM, porque a autenticação do IAM usa binários externos da AWS que não são incluídos por padrão na imagem.
Você pode personalizar a imagem do contêiner com um Dockerfile como o seguinte:
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/ Pode ser necessário adicionar também a CLI aws , você pode usar a mesma abordagem de antes.
Certifique -se de que o seu kubeconfig tenha o conjunto de apiVersion como client.authentication.k8s.io/v1beta1
Você pode ler mais nesta edição.








O GPM é escrito em Python usando a estrutura do Flask para o back -end e reaja com a interface do usuário elástica e o tema da fúria para o front -end.
Para desenvolver o GPM, você precisará criar um ambiente virtual do Python 3, instalar todas as dependências especificadas nos requirements.txt fornecidos.
Os seguintes comandos devem colocá -lo em funcionamento:
# 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 runO acesso a um cluster Kubernetes com o OPA Gatekeeper implantado é recomendado para depurar o aplicativo.
Você precisará de um provedor OIDC para testar a autenticação OIDC. Você pode usar nosso módulo Fury-Kubernetes-Keycloak.
A seguir, é apresentada uma lista de desejos dos recursos que gostaríamos de adicionar ao GPM (em nenhuma ordem específica):
ConstraintTemplate Por favor, informe -nos se você estiver usando o GPM e quais recursos você gostaria de ter criando um problema aqui no Github?