GateKeeper Policy Managerは、KubernetesクラスターでOPA GateKeeperポリシーのステータスを表示するためのシンプルな読み取り専用Web UIです。
ターゲットKubernetesクラスターは、GPMが実行されている場合、またはkubeconfigファイルを使用して他のリモートクラスターと同じにすることができます。また、クライアントマシンでGPMをローカルに実行して、リモートクラスターに接続することもできます。
GPMは、REGOコード、すべてのゲートキーパー構成CRD、および現在のステータス、違反、執行アクション、定義と一致するすべての制約を使用して、定義されたすべての制約テンプレートを表示できます。
以下にいくつかのスクリーンショットを見ることができます。
クラスターでOPAゲートキーパーを実行し、少なくともこのツールを活用するために定義された制約テンプレートと制約が必要です。
((またオープンソース)Kubernetes Fury Opaモジュールを使用して、GateKeeperをクラスターに簡単に展開できます。
GateKeeperポリシーマネージャーをクラスターに展開するには、次のコマンドを実行している提供されたkustomizationファイルを適用します。
kubectl apply -k .デフォルトでは、これにより、 gatekeeper-system NameSpaceにName gatekeper-policy-managerを使用して展開とサービスが作成されます。 kustomization.yamlファイルを調べて、さらに構成を行うように勧めます。
アプリは、Kubernetesクラスターのポッドとして、または
kubeconfigファイルを使用してローカルに実行できます。正しい構成を自動検出するために最善を尽くします。
アプリケーションを展開したら、侵入を設定していない場合は、ポートフォワードを使用してWeb-UIにアクセスできます。
kubectl -n gatekeeper-system port-forward svc/gatekeeper-policy-manager 8080:80次に、ブラウザでアクセスしてください:http://127.0.0.1:8080
提供されたヘルムチャートを使用してGPMを展開することもできます。
最初に、リリースのカスタム値を使用して、 my-values.yamlなどの値ファイルを作成します。詳細については、チャートのreadmeとdefault 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値ファイルへのパスに置き換えることを忘れないでください。
GPMは、Dockerとkubeconfigを使用してローカルに実行することもできます。使用するkubeconfigファイルが~/.kube/config at commandにあると仮定して、gpmをローカルに実行するコマンドは次のとおりです。
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
Flaskアプリを直接実行することもできます。詳細については、開発セクションをご覧ください。
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エンドセッションエンドポイント(オプション、このパラメーターの設定は、プロバイダー構成の残りの部分の発見を無効にします。これを設定すると、他のすべての値も設定します) |
ショ和 OIDC認証はベータ状態にあることに注意してください。 Keycloakをプロバイダーとして操作するためにテストされています。これらの環境変数は既に提供されており、
manifests/enable-oidc.yamlファイルで設定する準備ができています。
v1.0.13 GPMは、複数のコンテキストでkubeconfigを使用する場合、基本的なマルチクラスターサポートを持っているためです。 GPMでは、UIからコンテキストを選択できます。
クラスターでGPM kubeconfig実行したいが、マルチクラスターサポートがある場合は、クラスターアクセス構成を使用してGPMのポッドにkubeconfigファイルを取り付けるのと同じくらい簡単KUBECONFIG 。または、 /home/gpm/.kube/config configにマウントするだけで、GPMは自動的に検出されます。
クラスターのユーザーには適切な権限が必要であることを忘れないでください。
manifests/rabc.yamlファイルを参照として使用できます。また、GPMが実行されているクラスターが他のクラスターに到達できるはずであることに注意してください。
GPMをローカルに実行すると、 kubeconfigファイルを使用してクラスターに接続している場合、定義されたすべてのコンテキストが表示され、UIから簡単に切り替えることができます。
IAM認証を備えたKubeConfigを使用する場合は、IAM認証は画像にデフォルトに含まれていない外部AWSバイナリを使用するため、GPMのコンテナ画像をカスタマイズする必要があります。
次のような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で記述され、弾性UIとフロントエンドのFuryテーマと反応します。
GPMを開発するには、Python 3仮想環境を作成し、提供されたrequirements.txtで指定されたすべての依存関係をインストールし、React Frontendを構築すると、ハッキングを開始する必要があります。
次のコマンドは、あなたを立ち上げて実行する必要があります:
# 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 runOPA GateKeeperを展開したKubernetesクラスターへのアクセスは、アプリケーションをデバッグするために推奨されます。
OIDC認証をテストするには、OIDCプロバイダーが必要です。 Fury-Kubernetes-Keycloakモジュールを使用できます。
以下は、GPMに追加したい機能のウィッシュリストです(順序なし):
ConstraintTemplateを使用している制約をリストしますGPMを使用しているかどうか、GitHubで問題を作成して、どのような機能を紹介したいかをお知らせください。