Gatekeeper Policy Manager是一個簡單的僅閱讀Web UI,用於查看OPA Gatekeeper策略在Kubernetes群集中的狀態。
目標kubernetes群集可以使用kubeconfig文件在GPM運行的位置或其他遠程集群的位置相同。您也可以在客戶端計算機中本地運行GPM並連接到遠程群集。
gpm可以顯示所有定義的約束模板,其rego代碼,所有網守配置CRD以及所有及其當前狀態,違規,執法措施,匹配定義等的約束。
您可以在下面看到一些屏幕截圖。
您需要在群集中運行OPA網守,至少定義了一些約束模板和約束來利用此工具。
ℹ您可以使用(也開源)Kubernetes Fury OPA模塊輕鬆地將Gatekeere部署到群集中。
要將Gatekeeper Policy Manager部署到您的集群中,請應用運行以下命令的提供的kustomization文件:
kubectl apply -k .默認情況下,這將在gatekeeper-system名稱空間中使用名稱gatekeper-policy-manager創建一個部署和服務。我們邀請您查看kustomization.yaml文件以進行進一步的配置。
該應用程序可以作為kubernetes群集中的吊艙或
kubeconfig圖文件本地運行。它將盡最大努力自動檢測正確的配置。
部署應用程序後,如果您沒有設置入口,則可以使用Port-Forward訪問Web-UI:
kubectl -n gatekeeper-system port-forward svc/gatekeeper-policy-manager 8080:80然後使用您的瀏覽器訪問:http://127.0.0.1:8080
也可以使用提供的Helm圖表部署GPM。
首先創建一個值文件,例如my-values.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替換為您值文件的路徑。
假設您要使用的kubeconfig文件位於~/.kube/config在本地運行gpm kubeconfig命令將是:
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
您還可以直接運行燒瓶應用程序,有關更多信息,請參見“開發”部分。
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提供商進行身份驗證的客戶ID | |
GPM_OIDC_CLIENT_SECRET | 用於針對OIDC提供商(可選)進行身份驗證的客戶秘密 | |
GPM_OIDC_ISSUER | OIDC發行者主機名(如果啟用了OIDC 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端點(可選,設置此參數禁用了提供商配置的其餘配置的發現,如果設置此參數,請還設置所有其他值) | |
GPM_OIDC_END_SESSION_ENDPOINT | OIDC結束會話端點(可選,設置此參數會禁用提供商配置的其餘部分的發現,如果設置此參數,請還設置所有其他值) |
配x 請注意,OIDC身份驗證處於Beta狀態。已經測試過與KeyCloak一起作為提供商。這些環境變量已經提供並準備在
manifests/enable-oidc.yaml文件中設置。
由於v1.0.13 GPM在使用具有多個上下文的kubeconfig時具有基本的多群集支持。 GPM將讓您從UI中選擇上下文。
如果您想在集群中運行gpm,但是在多群集支持的情況下,它就像使用群集訪問配置在GPM的POD中安裝kubeconfig文件一樣容易,並將環境變量KUBECONFIG設置為通往安裝的kubeconfig文件的路徑。或者,您只需將其安裝在/home/gpm/.kube/config中,而GPM將自動檢測到它。
請記住,集群的用戶應具有正確的權限。您可以將
manifests/rabc.yaml文件用作參考。另請注意,GPM正在運行的群集應能夠到達其他群集。
當您本地運行GPM時,您已經在使用kubeconfig文件連接到群集,現在您應該看到所有定義的上下文,並且可以輕鬆地從UI中切換它們。
如果要使用具有IAM身份驗證的kubeconfig,則需要自定義GPM的容器映像,因為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/您可能還需要添加aws CLI,您可以使用與以前相同的方法。
確保您的kubeconfig將apiVersion設置為client.authentication.k8s.io/v1beta1
您可以在此問題中閱讀更多內容。








GPM使用python使用燒瓶框架編寫,並與Elastic UI和前端的憤怒主題反應。
要開發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建議部署使用OPA Gatekeeper的Kubernetes群集來調試應用程序。
您需要一個OIDC提供商來測試OIDC身份驗證。您可以使用我們的Fury-kubernetes-keycloak模塊。
以下是我們想將其添加到GPM的功能的願望清單(沒有特別的順序):
ConstraintTemplate約束請讓我們知道您是否正在使用GPM,並且您想在GitHub上創建問題來擁有哪些功能?