Gatekeeper Policy Manager ist eine einfache Lese- Web-Benutzeroberfläche für den Status von OPA Gatekeeper-Richtlinien in einem Kubernetes-Cluster.
Das Zielkubernetes -Cluster kann gleich sein, wenn GPM ausgeführt wird, oder einige andere Remote -Cluster) unter Verwendung einer kubeconfig -Datei. Sie können GPM auch lokal in einem Client -Computer ausführen und an einen Remote -Cluster herstellen.
GPM kann alle definierten Einschränkungsvorlagen mit ihrem Rego -Code, allen CRDs der Gatekeeper -Konfiguration und allen Einschränkungen mit ihrem aktuellen Status, Verstößen, Durchsetzungsmaßnahmen, Übereinstimmung mit Definitionen usw. anzeigen.
Sie können einige Screenshots unten sehen.
Sie benötigen OPA -Gatekeeper in Ihrem Cluster und zumindest einige Einschränkungen und Einschränkungen, die definiert sind, um dieses Tool zu nutzen.
ℹ Sie können Gatekeeper problemlos mit dem (auch Open Source) Kubernetes Fury OPA -Modul (auch Open Source) bereitstellen.
Wenden Sie die bereitgestellte kustomization mit dem folgenden Befehl an, um den Gatekeeper Policy Manager in Ihrem Cluster bereitzustellen:
kubectl apply -k . Standardmäßig wird ein Bereitstellung und einen Dienst mit dem Namen gatekeper-policy-manager im gatekeeper-system -Namespace erstellt. Wir laden Sie ein, einen Blick in die Datei kustomization.yaml zu werfen, um weitere Konfiguration zu erstellen.
Die App kann als Pod in einem Kubernetes -Cluster oder lokal mit einer
kubeconfig-Datei ausgeführt werden. Es wird das Beste versuchen, die korrekte Konfiguration zu automatisieren.
Sobald Sie die Anwendung bereitgestellt haben, können Sie mit Port-Forward auf das Web-UI zugreifen, wenn Sie keine Einschaltung eingerichtet haben:
kubectl -n gatekeeper-system port-forward svc/gatekeeper-policy-manager 8080:80Dann greifen Sie mit Ihrem Browser auf: http://127.0.0.1:8080 zu
Es ist auch möglich, GPM mithilfe des bereitgestellten Helm -Diagramms bereitzustellen.
Erstellen Sie zunächst eine Wertedatei, z. B. my-values.yaml , mit Ihren benutzerdefinierten Werten für die Veröffentlichung. Weitere Informationen finden Sie im Readme und den Standardwerten der Tabelle.
Dann führen Sie aus:
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-managerVergessen Sie nicht,
my-values.yamlzu ersetzen. Yaml durch den Pfad zu Ihrer Wertedatei.
GPM kann auch lokal mit Docker und einer kubeconfig ausführen, unter der Annahme, dass sich die kubeconfig -Datei, die Sie verwenden möchten, bei ~/.kube/config den Befehl zum Ausführen von GPM local wäre:
docker run -v ~ /.kube/config:/home/gpm/.kube/config -p 8080:8080 quay.io/sighup/gatekeeper-policy-manager:v1.0.13Dann greifen Sie mit Ihrem Browser auf: http://127.0.0.1:8080 zu
Sie können die Flask -App auch direkt ausführen. Weitere Informationen finden Sie im Bereich Entwicklungsabschnitt.
GPM ist eine staatenlose Anwendung, kann jedoch mithilfe von Umgebungsvariablen konfiguriert werden. Die möglichen Konfigurationen sind:
| Umgebungsvariablenname | Beschreibung | Standard |
|---|---|---|
GPM_SECRET_KEY | Der geheime Schlüssel zum Generieren von Token. Ändern Sie diesen Wert in der Produktion . | g8k1p3rp0l1c7m4n4g3r |
KUBECONFIG | Pfad zu einer kubeconfig -Datei, wenn beim Ausführen in einem Cluster diese Konfigurationsdatei anstelle der API des Clusters verwendet wird. | |
GPM_LOG_LEVEL | Protokollebene (siehe Python -Protokollierungsdokumente für verfügbare Levels) | INFO |
GPM_AUTH_ENABLED | Aktivieren Sie die Authentifizierung Aktuelle Optionen: "Anonymous", "OIDC" | Anonym |
GPM_PREFERRED_URL_SCHEME | URL -Schema, das beim Erstellen von Links verwendet werden soll. | http |
GPM_OIDC_REDIRECT_DOMAIN | Die Domäne, in der GPM ausgeführt wird. Hier wird der Client nach der Authentifizierung umgeleitet | |
GPM_OIDC_CLIENT_ID | Die Client -ID zur Authentifizierung gegen den OIDC -Anbieter | |
GPM_OIDC_CLIENT_SECRET | Das Client -Geheimnis zur Authentifizierung gegen den OIDC -Anbieter (optional) | |
GPM_OIDC_ISSUER | OIDC -Emittenten Hostname (erforderlich, wenn OIDC -Auth die aktiviert ist) | |
GPM_OIDC_AUTHORIZATION_ENDPOINT | OIDC -Autorisierungsendpunkt (optional, festlegen, dass dieser Parameter die Erkennung des Restes der Anbieterkonfiguration deaktiviert. Setzen Sie alle anderen Werte auch, wenn Sie diese festlegen). | |
GPM_OIDC_JWKS_URI | OIDC JWKS URI (optional, ein Festlegen dieses Parameters deaktiviert die Erkennung des Restes der Anbieterkonfiguration und setzen Sie alle anderen Werte auch, wenn Sie diese festlegen. | |
GPM_OIDC_TOKEN_ENDPOINT | OIDC -Token -Endpunkt (optional, ein Festlegen dieses Parameters deaktiviert die Erkennung des Restes der Anbieterkonfiguration. Setzen Sie alle anderen Werte auch, wenn Sie diese festlegen. | |
GPM_OIDC_INTROSPECTION_ENDPOINT | OIDC -Introspection Endpoint (optional, ein Festlegen dieses Parameters deaktiviert die Erkennung des Restes der Anbieterkonfiguration, setzen Sie alle anderen Werte auch, wenn Sie diese festlegen). | |
GPM_OIDC_USERINFO_ENDPOINT | OIDC UserInfo Endpoint (optional, festlegen, dass dieser Parameter die Erkennung des Restes der Anbieterkonfiguration deaktiviert und alle anderen Werte auch festlegen, wenn diese festgelegt wird. | |
GPM_OIDC_END_SESSION_ENDPOINT | OIDC End Session Endpoint (optional, festlegen, dass dieser Parameter die Erkennung des Restes der Anbieterkonfiguration deaktiviert. Setzen Sie alle anderen Werte auch, wenn Sie diese festlegen. |
Euen Bitte beachten Sie, dass sich die OIDC -Authentifizierung im Beta -Zustand befindet. Es wurde getestet, mit Keycloak als Anbieter zusammenzuarbeiten.Diese Umgebungsvariablen sind bereits bereitgestellt und sind bereit, in der
manifests/enable-oidc.yamlDatei festgelegt zu werden.
Da v1.0.13 GPM bei Verwendung einer kubeconfig mit mehr als einem Kontext eine grundlegende Unterstützung für Multi-Cluster hat. Mit GPM können Sie den Kontext direkt aus der Benutzeroberfläche auswählen.
Wenn Sie GPM in einem Cluster ausführen möchten, jedoch mit Multi-Cluster-Unterstützung, ist es so einfach wie die Montage einer kubeconfig Datei in GPM-Pods mit der Cluster-Zugriffskonfiguration und der Umgebungsvariablen KUBECONFIG mit dem Pfad zur montierten kubeconfig Datei. Oder Sie können es einfach in /home/gpm/.kube/config montieren und GPM erfasst es automatisch.
Bitte denken Sie daran, dass der Benutzer für die Cluster die richtigen Berechtigungen haben sollte. Sie können die
manifests/rabc.yaml-Datei als Referenz verwenden.Beachten Sie auch, dass der Cluster, in dem GPM ausgeführt wird, in der Lage sein sollte, die anderen Cluster zu erreichen.
Wenn Sie GPM lokal ausführen, verwenden Sie bereits eine kubeconfig -Datei, um eine Verbindung zu den Clustern herzustellen. Jetzt sollten Sie alle Ihre definierten Kontexte sehen und Sie können einfach von der Benutzeroberfläche zwischen ihnen wechseln.
Wenn Sie eine KubeConfig mit der IAM -Authentifizierung verwenden möchten, müssen Sie das Containerbild von GPM anpassen, da die IAM -Authentifizierung externe AWS -Binärdateien verwendet, die standardmäßig im Bild nicht enthalten sind.
Sie können das Containerbild mit einer Dockerfile wie folgt anpassen:
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/ Möglicherweise müssen Sie auch die aws -CLI hinzufügen, Sie können den gleichen Ansatz wie zuvor verwenden.
Stellen Sie sicher, dass Ihr kubeconfig den apiVersion als client.authentication.k8s.io/v1beta1 eingestellt hat
Sie können mehr in diesem Problem lesen.








GPM ist in Python mit dem Flask -Framework für das Backend geschrieben und reagiert mit elastischer UI und dem Fury -Thema für den Frontend.
Um GPM zu entwickeln, müssen Sie eine virtuelle Python 3 -Umgebung erstellen, alle in den bereitgestellten requirements.txt angegebenen Abhängigkeiten installieren.
Die folgenden Befehle sollten Sie zum Laufen bringen:
# 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 runDer Zugang zu einem Kubernetes -Cluster mit dem bereitgestellten OPA -Gatekeeper wird empfohlen, um die Anwendung zu debuggen.
Sie benötigen einen OIDC -Anbieter, um die OIDC -Authentifizierung zu testen. Sie können unser Fury-Kubernetes-Key-Cloak-Modul verwenden.
Das Folgende ist eine Wunschliste von Funktionen, die wir zu GPM hinzufügen möchten (in keiner bestimmten Reihenfolge):
ConstraintTemplate verwenden Bitte lassen Sie uns wissen, ob Sie GPM verwenden und welche Funktionen Sie hier auf Github ein Problem erstellen möchten?