All Projects → sighupio → Gatekeeper Policy Manager

sighupio / Gatekeeper Policy Manager

Licence: bsd-3-clause
A simple to use web-based Gatekeeper policies manager

Projects that are alternatives of or similar to Gatekeeper Policy Manager

Cloudprober
An active monitoring software to detect failures before your customers do.
Stars: ✭ 1,269 (+1013.16%)
Mutual labels:  k8s
Dregsy
Keep Docker registries in sync
Stars: ✭ 92 (-19.3%)
Mutual labels:  k8s
Quiz
Example real time quiz application with .NET Core, React, DDD, Event Sourcing, Docker and built-in infrastructure for CI/CD with k8s, jenkins and helm
Stars: ✭ 100 (-12.28%)
Mutual labels:  k8s
Docker Cloud Platform
使用Docker构建云平台,Docker云平台系列共三讲,Docker基础、Docker进阶、基于Docker的云平台方案。OpenStack+Docker+RestAPI+OAuth/HMAC+RabbitMQ/ZMQ+OpenResty/HAProxy/Nginx/APIGateway+Bootstrap/AngularJS+Ansible+K8S/Mesos/Marathon构建/探索微服务最佳实践。
Stars: ✭ 86 (-24.56%)
Mutual labels:  k8s
Kubernetes Up And Running Notes
Notes from the book Kubernetes Up and Running
Stars: ✭ 91 (-20.18%)
Mutual labels:  k8s
Kubernetes Oom Event Generator
Generate a Kubernetes Event when a Pod's container has been OOMKilled
Stars: ✭ 93 (-18.42%)
Mutual labels:  k8s
K8s Docker Desktop For Mac
Docker Desktop for Mac 开启并使用 Kubernetes
Stars: ✭ 1,246 (+992.98%)
Mutual labels:  k8s
Libvirt K8s Provisioner
Automate your k8s installation
Stars: ✭ 106 (-7.02%)
Mutual labels:  k8s
Lotus
Kubernetes controller for running load testing
Stars: ✭ 92 (-19.3%)
Mutual labels:  k8s
K8s Series
深入浅出 K8s:概念与部署 工作载荷 服务负载 存储 权限 网络 生态扩展
Stars: ✭ 99 (-13.16%)
Mutual labels:  k8s
Tower Operator
DEPRECATED: This project was moved and renamed to: https://github.com/ansible/awx-operator
Stars: ✭ 87 (-23.68%)
Mutual labels:  k8s
Kuboard Press
Kuboard 是基于 Kubernetes 的微服务管理界面。同时提供 Kubernetes 免费中文教程,入门教程,最新版本的 Kubernetes v1.20 安装手册,(k8s install) 在线答疑,持续更新。
Stars: ✭ 12,701 (+11041.23%)
Mutual labels:  k8s
Kubernikus
Kubernetes as a Service for Openstack
Stars: ✭ 97 (-14.91%)
Mutual labels:  k8s
Cdk
CDK is an open-sourced container penetration toolkit, offering stable exploitation in different slimmed containers without any OS dependency. It comes with penetration tools and many powerful PoCs/EXPs helps you to escape container and takeover K8s cluster easily.
Stars: ✭ 1,264 (+1008.77%)
Mutual labels:  k8s
Kubernetes Pfsense Controller
Integrate Kubernetes and pfSense
Stars: ✭ 100 (-12.28%)
Mutual labels:  k8s
Advent 2017
[article] GopherAcademy 2017: Write a Kubernetes-ready service from scratch step-by-step
Stars: ✭ 85 (-25.44%)
Mutual labels:  k8s
K8s Objectmatcher
A Kubernetes object matcher library to avoid unnecessary K8s object updates
Stars: ✭ 93 (-18.42%)
Mutual labels:  k8s
Php K8s
PHP K8s is a PHP handler for the Kubernetes Cluster API, helping you handling the individual Kubernetes resources directly from PHP, like viewing, creating, updating or deleting resources.
Stars: ✭ 111 (-2.63%)
Mutual labels:  k8s
Fusionauth Containers
Container definitions for docker, kubernetes, helm, and whatever containers come next!
Stars: ✭ 101 (-11.4%)
Mutual labels:  k8s
Kubernetes Ingress Controller
🦍 Kong for Kubernetes: the official Ingress Controller for Kubernetes.
Stars: ✭ 1,347 (+1081.58%)
Mutual labels:  k8s

Gatekeeper Policy Manager (GPM)

Build Status

Gatekeeper Policy Manager is a simple read-only web UI for viewing OPA Gatekeeper policies' status in a Kubernetes Cluster.

It can display all the defined Constraint Templates with their rego code, and all the Constraints with its current status, violations, enforcement action, matches definitions, etc.

Requirements

You'll need OPA Gatekeeper running in your cluster and at least some constraint templates and constraints defined to take advantage of this tool.

ℹ You can easily deploy Gatekeeper to your cluster using the (also open source) Fury Kubernetes OPA module.

Deploying GPM

To deploy Gatekeeper Policy Manager to your cluster, apply the provided kustomization file running the following command:

kubectl apply -k .

By default, this will create a deployment and a service both with the name gatekeper-policy-manager in the gatekeeper-system namespace. We invite you to take a look into the kustomization.yaml file to do further configuration.

The app can be run as a POD in a Kubernetes cluster or locally with a kubeconfig file. It will try its best to autodetect the correct configuration.

Once you've deployed the application, if you haven't set up an ingress, you can access the web-UI using port-forward:

kubectl -n gatekeeper-system port-forward  svc/gatekeeper-policy-manager 8080:80

Then access it with your browser on: http://127.0.0.1:8080

Running locally

GPM can also be run locally using docker and a kubeconfig, assuming that the kubeconfig file you want to use is located at ~/.kube/config the command to run GPM locally would be:

docker run -v ~/.kube/config:/root/.kube/config -p 8080:8080 quay.io/sighup/gatekeeper-policy-manager:v0.4.1

Then access it with your browser on: http://127.0.0.1:8080

You can also run the flask app directly, see the development section for further information.

Configuration

GPM is a stateless application, but it can be configured using environment variables. The possible configurations are:

Env Var Name Description Default
GPM_AUTH_ENABLED Enable Authentication current options: "Anonymous", "OIDC" Anonymous
GPM_SECRET_KEY The secret key used to generate tokens. Change this value in production. g8k1p3rp0l1c7m4n4g3r
GPM_PREFERRED_URL_SCHEME URL scheme to be used while generating links. http
GPM_OIDC_REDIRECT_DOMAIN The server name under the app is being exposed. This is where the client will be redirected after authenticating
GPM_OIDC_ISSUER OIDC Issuer hostname
GPM_OIDC_AUTHORIZATION_ENDPOINT OIDC Authorizatoin Endpoint
GPM_OIDC_JWKS_URI OIDC JWKS URI
GPM_OIDC_TOKEN_ENDPOINT OIDC TOKEN Endpoint
GPM_OIDC_INTROSPECTION_ENDPOINT OIDC Introspection Enpoint
GPM_OIDC_USERINFO_ENDPOINT OIDC Userinfo Endpoint
GPM_OIDC_END_SESSION_ENDPOINT OIDC End Session Endpoint
GPM_OIDC_CLIENT_ID The Client ID used to authenticate against the OIDC Provider
GPM_OIDC_CLIENT_SECRET The Client Secret used to authenticate against the OIDC Provider
GPM_LOG_LEVEL Log level (see python logging docs for available levels) INFO

⚠️ Please notice that OIDC Authentication is in beta state. It has been tested to work with Keycloak as a provider.

These environment variables are already provided and ready to be set in the manifests/enable-oidc.yaml file.

Screenshots

welcome

Constraint Templates view

Constraint Templates view rego code

Constraint view

Constraint view 2

Constraint view 3

Configurations view 2

Development

GPM is written in Python using the Flask framework for the backend and Fromantic-UI for the frontend. To develop GPM, you'll need to create a Python 3 virtual environment, install all the dependencies specified in the provided requirements.txt and you are good to start hacking.

The following commands should get you up and running:

# 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

Access to a Kubernetes cluster with Gatekeeper deployed is recommended to debug the application.

You'll need an OIDC provider to test the OIDC authentication. You can use our fury-kubernetes-keycloak module.

Roadmap

The following is a wishlist of features that we would like to add to GPM (in no particular order):

  • List the constraints that are currently using a ConstraintTemplate
  • Polished OIDC authentication
  • LDAP authentication
  • Better syntax highlighting for the rego code snippets
  • Root-less docker image
  • Multi-cluster view
  • Minimal write capabilities?
  • Re-write app in Golang?

Please, let us know if you are using GPM and what features would you like to have by creating an issue here in GitHub

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].