Kubernetes Kyverno

이 νŽ˜μ΄μ§€μ˜ μ›λž˜ μ €μžλŠ” Guillaumeμž…λ‹ˆλ‹€.

μ •μ˜

KyvernoλŠ” 쑰직이 전체 Kubernetes μΈν”„λΌμ—μ„œ 정책을 μ •μ˜, μ‹œν–‰ 및 감사할 수 μžˆλ„λ‘ ν•˜λŠ” μ˜€ν”ˆ μ†ŒμŠ€ μ •μ±… 관리 ν”„λ ˆμž„μ›Œν¬μž…λ‹ˆλ‹€. Kubernetes ν΄λŸ¬μŠ€ν„°μ˜ λ³΄μ•ˆ, μ€€μˆ˜ 및 κ±°λ²„λ„ŒμŠ€λ₯Ό κ΄€λ¦¬ν•˜κΈ° μœ„ν•œ ν™•μž₯ κ°€λŠ₯ν•˜κ³ , ν™•μž₯ κ°€λŠ₯ν•˜λ©°, 맀우 μ‚¬μš©μž μ •μ˜ κ°€λŠ₯ν•œ μ†”λ£¨μ…˜μ„ μ œκ³΅ν•©λ‹ˆλ‹€.

μ‚¬μš© 사둀

KyvernoλŠ” λ‹€μ–‘ν•œ μ‚¬μš© μ‚¬λ‘€μ—μ„œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

  1. λ„€νŠΈμ›Œν¬ μ •μ±… μ‹œν–‰: KyvernoλŠ” ν¬λ“œ λ˜λŠ” μ„œλΉ„μŠ€ κ°„μ˜ νŠΈλž˜ν”½μ„ ν—ˆμš©ν•˜κ±°λ‚˜ μ°¨λ‹¨ν•˜λŠ” λ“±μ˜ λ„€νŠΈμ›Œν¬ 정책을 μ‹œν–‰ν•˜λŠ” 데 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  2. λΉ„λ°€ 관리: KyvernoλŠ” 비밀을 νŠΉμ • ν˜•μ‹μ΄λ‚˜ μœ„μΉ˜μ— μ €μž₯ν•˜λ„λ‘ μš”κ΅¬ν•˜λŠ” λ“±μ˜ λΉ„λ°€ 관리 정책을 μ‹œν–‰ν•˜λŠ” 데 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  3. μ ‘κ·Ό μ œμ–΄: KyvernoλŠ” νŠΉμ • λ¦¬μ†ŒμŠ€μ— μ ‘κ·Όν•˜κΈ° μœ„ν•΄ μ‚¬μš©μžκ°€ νŠΉμ • μ—­ν• μ΄λ‚˜ κΆŒν•œμ„ κ°€μ Έμ•Ό ν•˜λŠ” λ“±μ˜ μ ‘κ·Ό μ œμ–΄ 정책을 μ‹œν–‰ν•˜λŠ” 데 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ˜ˆμ‹œ: ClusterPolicy 및 Policy

Kubernetes ν΄λŸ¬μŠ€ν„°μ— μ—¬λŸ¬ λ„€μž„μŠ€νŽ˜μ΄μŠ€κ°€ 있고, default λ„€μž„μŠ€νŽ˜μ΄μŠ€μ˜ λͺ¨λ“  ν¬λ“œκ°€ νŠΉμ • λ ˆμ΄λΈ”μ„ κ°€μ Έμ•Ό ν•˜λŠ” 정책을 μ‹œν–‰ν•˜κ³  μ‹Άλ‹€κ³  κ°€μ •ν•΄ λ³΄κ² μŠ΅λ‹ˆλ‹€.

ClusterPolicy

ClusterPolicyλŠ” 전체 μ •μ±… μ˜λ„λ₯Ό μ •μ˜ν•˜λŠ” κ³ κΈ‰ μ •μ±…μž…λ‹ˆλ‹€. 이 경우, 우리의 ClusterPolicyλŠ” λ‹€μŒκ³Ό 같을 수 μžˆμŠ΅λ‹ˆλ‹€:

apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: require-label
spec:
rules:
- validate:
message: "Pods in the default namespace must have the label 'app: myapp'"
match:
any:
- resources:
kinds:
- Pod
namespaceSelector:
matchLabels:
namespace: default
- any:
- resources:
kinds:
- Pod
namespaceSelector:
matchLabels:
namespace: default
validationFailureAction: enforce

When a pod is created in the default namespace without the label app: myapp, Kyverno will block the request and return an error message indicating that the pod does not meet the policy requirements.

References

Last updated