Kubernetes Kyverno

рдЗрд╕ рдкреГрд╖реНрда рдХреЗ рдореВрд▓ рд▓реЗрдЦрдХ рд╣реИрдВ Guillaume

рдкрд░рд┐рднрд╛рд╖рд╛

Kyverno рдПрдХ рдУрдкрди-рд╕реЛрд░реНрд╕, рдиреАрддрд┐ рдкреНрд░рдмрдВрдзрди рдврд╛рдВрдЪрд╛ рд╣реИ рдЬреЛ Kubernetes рдХреЗ рд▓рд┐рдП рд╣реИ, рдЬреЛ рд╕рдВрдЧрдардиреЛрдВ рдХреЛ рдЕрдкрдиреА рдкреВрд░реА Kubernetes рдЕрд╡рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдиреАрддрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд, рд▓рд╛рдЧреВ рдФрд░ рдСрдбрд┐рдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ Kubernetes рдХреНрд▓рд╕реНрдЯрд░реЛрдВ рдХреА рд╕реБрд░рдХреНрд╖рд╛, рдЕрдиреБрдкрд╛рд▓рди рдФрд░ рд╢рд╛рд╕рди рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреЗрд▓реЗрдмрд▓, рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдФрд░ рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрдХреВрд▓рди рдпреЛрдЧреНрдп рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ

Kyverno рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ:

  1. рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐ рдкреНрд░рд╡рд░реНрддрди: Kyverno рдХрд╛ рдЙрдкрдпреЛрдЧ рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдкреЙрдбреНрд╕ рдпрд╛ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдмреАрдЪ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рдпрд╛ рдЕрд╡рд░реБрджреНрдз рдХрд░рдирд╛ред

  2. рдЧреБрдкреНрдд рдкреНрд░рдмрдВрдзрди: Kyverno рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧреБрдкреНрдд рдкреНрд░рдмрдВрдзрди рдиреАрддрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдЧреБрдкреНрддреЛрдВ рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рд╛рд░реВрдк рдпрд╛ рд╕реНрдерд╛рди рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ред

  3. рдкрд╣реБрдБрдЪ рдирд┐рдпрдВрддреНрд░рдг: Kyverno рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд╣реБрдБрдЪ рдирд┐рдпрдВрддреНрд░рдг рдиреАрддрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдХреБрдЫ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рднреВрдорд┐рдХрд╛рдПрдБ рдпрд╛ рдЕрдиреБрдорддрд┐рдпрд╛рдБ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ред

рдЙрджрд╛рд╣рд░рдг: ClusterPolicy рдФрд░ рдиреАрддрд┐

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдИ рдирд╛рдордХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ 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

рдЬрдм default namespace рдореЗрдВ app: myapp рд▓реЗрдмрд▓ рдХреЗ рдмрд┐рдирд╛ рдПрдХ pod рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ Kyverno рдЕрдиреБрд░реЛрдз рдХреЛ рдмреНрд▓реЙрдХ рдХрд░ рджреЗрдЧрд╛ рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд▓реМрдЯрд╛рдПрдЧрд╛ рдЬреЛ рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ pod рдиреАрддрд┐ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

References

Last updated