Kubernetes의 잠금
6166 단어 kubernetes
문제
Kubernetes와 같은 이벤트 기반 시스템에서는 RBAC를 사용하여 리소스에 대한 액세스를 제한할 수 있습니다. RBAC는 특정 리소스에 대한 필수 또는 배타적 잠금을 실행하도록 설계되지 않았습니다. 불가능하지는 않지만 복잡하고 오류가 발생하기 쉽다는 것을 알았습니다.
때때로 나는 원한다:
daily-report
라는 이름의 CronJob이 상수입니다. 아무도 삭제하거나 업데이트할 수 없습니다. payroll
는 UIDaa-dd-f445-d-55-d
가 있는 행위자만 수정할 수 있으며 다른 사람은 수정할 수 없습니다. site: for-fun
인 모든 리소스를 업데이트할 수 있지만 삭제할 수는 없습니다. 해결책
RBAC를 사용하면 요구 사항을 부분적으로 충족할 수 있지만 여전히 운영자, 다른 자동화 도구 등을 사용하는 팀에서 작업할 때 항상 문제가 발생할 수 있습니다.
다른 옵션은 ValidatingAdmissionWebhook 입니다. 특정 리소스에 액세스할 수 있는 사람과 액세스할 수 없는 사람을 나타내는 데 사용할 수 있습니다. 인증이나 권한 부여에 관한 것이 아니라 Kubernetes에서 해당 부분을 수행합니다. 액세스에 관한 것입니다.
세분화된 액세스
솔루션으로 Klock
Klock은 위의 문제를 맞추기 위한 간단한 구현입니다. 필수 및 배타적 잠금을 허용하는 CRD를 추가합니다. 보호할 리소스를 일치시키는 것은 레이블을 일치시켜 수행됩니다. 뿐만 아니라 어떤 작업을 제한해야 하는지.
ValidatingAdmissionWebhook 구성
ValidatingAdmissionWebhook(VAW)가 적용되는 리소스는 VAW 구성에서 수행됩니다.
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
annotations:
cert-manager.io/inject-ca-from: klock-system/klock-serving-cert
name: klock-validating-webhook-configuration
webhooks:
- admissionReviewVersions:
- v1
clientConfig:
service:
name: klock-webhook-service
namespace: klock-system
path: /validate-all
failurePolicy: Fail
name: klocks.rnemet.dev
rules:
- apiGroups:
- '*'
apiVersions:
- '*'
operations:
- DELETE
- UPDATE
resources:
- pods
- deployments
- secrets
- configmaps
sideEffects: None
위의 구성에서 UPDATE 또는 DELETE가 포드, 배포, 비밀 또는 구성 맵에서 실행될 때마다 모든 api 그룹 및 모든 버전에 대해 읽을 수 있으며 VAW에 먼저 확인하도록 요청할 수 있습니다.
필수 잠금
예를 참조하십시오:
apiVersion: klock.rnemet.dev/v1
kind: Lock
metadata:
name: lock-red-blue
namespace: yellow
spec:
operations:
- DELETE
matcher:
aura: blue
이제 VAW에 위의 구성
Lock
이 있는 경우 동일한 네임스페이스의 모든 포드, 배포, 비밀 및 구성 맵에 유효합니다. 레이블이 aura: red
인 포드, 배포, 비밀 또는 configmap의 삭제를 거부합니다.독점 잠금
apiVersion: klock.rnemet.dev/v1
kind: Lock
metadata:
name: lockred
spec:
operations:
- UPDATE
- DELETE
matcher:
aura: red
exclusive:
name: johny
배타적 잠금
operations
을 사용하면 이 예에서 이름이 johny
인 액터를 제외하고 모두 금지됩니다. 따라서 위와 동일하게 Lock
에 대해 johny
를 무시합니다.결론
Klock을 확인하고 더 자세히 살펴볼 수 있습니다. 더 많은 예는
/tests/
를 참조하십시오.
Reference
이 문제에 관하여(Kubernetes의 잠금), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/madmaxx/locks-in-kubernetes-3jeh텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)