GateKeeper Policy Manager는 Kubernetes 클러스터에서 OPA 게이트 키퍼 정책의 상태를보기위한 간단한 읽기 전용 웹 UI입니다.
대상 Kubernetes 클러스터는 GPM이 실행중인 경우 동일하거나 kubeconfig 파일을 사용하여 다른 원격 클러스터와 동일 할 수 있습니다. 클라이언트 시스템에서 로컬로 GPM을 실행하고 원격 클러스터에 연결할 수도 있습니다.
GPM은 Rego 코드, 모든 게이트 키퍼 구성 CRD 및 현재 상태, 위반, 시행 조치, 정의 일치 등의 모든 제약 조건을 사용하여 모든 정의 된 제약 조건 템플릿을 표시 할 수 있습니다.
아래의 일부 스크린 샷을 볼 수 있습니다.
클러스터에서 OPA 게이트 키퍼를 실행 하고이 도구를 활용하도록 정의 된 제약 템플릿 및 제약 조건이 필요합니다.
ℹ (오픈 소스) Kubernetes Fury OPA 모듈을 사용하여 게이트 키퍼를 클러스터에 쉽게 배포 할 수 있습니다.
GateKeeper Policy Manager를 클러스터에 배포하려면 다음 명령을 실행하는 제공된 kustomization 파일을 적용하십시오.
kubectl apply -k . 기본적으로 gatekeeper-system 네임 스페이스에서 gatekeper-policy-manager 라는 이름의 배포 및 서비스가 생성됩니다. kustomization.yaml 파일을 살펴보고 추가 구성을 수행하도록 초대합니다.
앱은 Kubernetes 클러스터에서 포드로 또는
kubeconfig파일로 로컬로 실행할 수 있습니다. 올바른 구성을 자동으로 설정하려면 최선을 다합니다.
응용 프로그램을 배포 한 후에는 유입을 설정하지 않은 경우 포트 포워드를 사용하여 웹 UI에 액세스 할 수 있습니다.
kubectl -n gatekeeper-system port-forward svc/gatekeeper-policy-manager 8080:80그런 다음 브라우저를 사용하여 http://127.0.0.1:8080으로 액세스하십시오
제공된 HELM 차트를 사용하여 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값 파일의 경로로 바꾸는 것을 잊지 마십시오.
사용하려는 kubeconfig 파일이 ~/.kube/config 에 위치한다고 가정 할 때 GPM은 Docker 및 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 | 로그 레벨 (사용 가능한 레벨은 파이썬 로깅 문서 참조) | 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 인증이 활성화 된 경우 필수) | |
GPM_OIDC_AUTHORIZATION_ENDPOINT | OIDC 인증 엔드 포인트 (선택 사항,이 매개 변수 설정은 나머지 제공자 구성의 검색을 비활성화하고 다른 모든 값을 설정하는 경우 다른 모든 값을 설정합니다) | |
GPM_OIDC_JWKS_URI | OIDC JWKS URI (선택 사항,이 매개 변수 설정은 나머지 제공자 구성의 검색을 비활성화하고 다른 모든 값을 설정하는 경우 다른 모든 값을 설정합니다) | |
GPM_OIDC_TOKEN_ENDPOINT | OIDC 토큰 엔드 포인트 (선택 사항,이 매개 변수 설정은 나머지 제공자 구성의 검색을 비활성화하고 다른 모든 값을 설정하는 경우 다른 모든 값을 설정합니다) | |
GPM_OIDC_INTROSPECTION_ENDPOINT | OIDC introspection endpoint (선택 사항,이 매개 변수 설정은 제공자 구성의 나머지 부분의 검색을 비활성화 하고이 값을 설정할 경우 다른 모든 값을 설정합니다) | |
GPM_OIDC_USERINFO_ENDPOINT | OIDC userInfo endpoint (선택 사항,이 매개 변수 설정은 나머지 제공자 구성의 검색을 비활성화하고 다른 모든 값을 설정하는 경우 다른 모든 값을 설정합니다) | |
GPM_OIDC_END_SESSION_ENDPOINT | OIDC 엔드 세션 엔드 포인트 (선택 사항,이 매개 변수 설정은 나머지 제공자 구성의 검색을 비활성화하고 다른 모든 값을 설정하는 경우 다른 모든 값을 설정합니다) |
켈 OIDC 인증은 베타 상태에 있습니다. 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를 사용하려면 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 SET SET로 client.authentication.k8s.io/v1beta1 되어 있는지 확인하십시오.
이 문제에서 더 많은 것을 읽을 수 있습니다.








GPM은 백엔드 용 플라스크 프레임 워크를 사용하여 파이썬으로 작성되었으며 탄성 UI 및 프론트 엔드의 분노 테마와 반응합니다.
GPM을 개발하려면 Python 3 가상 환경을 만들고 제공된 requirements.txt 에 지정된 모든 종속성을 설치해야합니다 .txt, React 프론트 엔드를 구축하면 해킹을 시작하는 것이 좋습니다.
다음 명령은 당신을 시작하고 실행해야합니다.
# 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 게이트 키퍼가 배치 된 Kubernetes 클러스터에 대한 액세스는 응용 프로그램을 디버깅하는 것이 좋습니다.
OIDC 인증을 테스트하려면 OIDC 제공 업체가 필요합니다. Fury-Kubernetes-Keycloak 모듈을 사용할 수 있습니다.
다음은 GPM에 추가하고 싶은 기능의 위시리스트입니다 (특정 순서없이).
ConstraintTemplate 을 사용하고있는 제약 조건을 나열하십시오 Github에서 문제를 만들어 GPM을 사용하고 있는지 알려주십시오.