Text size
പരീക്ഷിച്ചറിഞ്ഞത്6 മിനിറ്റ് വായന

നിയമങ്ങൾ കോഡായി: ഒപിഎ, കൈവേർനോ, ബിൽറ്റ് ഇൻ പോളിസികൾ

വിക്കിയിൽ ഇനി "ദയവായി ഏറ്റവും പുതിയ ടാഗ് ഉപയോഗിക്കരുത്" എന്നൊന്നും വേണ്ട. അത് ഓട്ടോമാറ്റിക്കായി നടപ്പാക്കുക.

Rules as code: OPA, Kyverno and built-in policies
AI ഉപയോഗിച്ച് സൃഷ്ടിച്ച ചിത്രീകരണം

എല്ലാ സംഘടനയ്ക്കും നിയമങ്ങളുണ്ട്. കണ്ടെയ്നറുകൾ റൂട്ട് ആയി പ്രവർത്തിക്കരുത്. ഓരോ വിന്യാസത്തിനും ഒരു ഉടമ ലേബല് വേണം. നമ്മുടെ രജിസ്ട്രിയിൽ നിന്നായിരിക്കണം ചിത്രങ്ങള് വന്നത്. കുറഞ്ഞത് രണ്ട് പകർപ്പുകളെങ്കിലും വേണം. സാധാരണയായി ഈ നിയമങ്ങൾ വിക്കി പേജിൽ ഉണ്ടാകും, അവ വിക്കിപേജുകൾ വായിക്കുന്നതുപോലെ കൃത്യമായി പിന്തുടരും.

കോഡായിട്ടുള്ള നയം ആ നിയമങ്ങളെ കമ്പ്യൂട്ടർ നടപ്പിലാക്കുന്ന ഒന്നാക്കി മാറ്റുന്നു, ഓരോ മാറ്റത്തിലും, ആരും അവരെ ഓർക്കാതെ.

നിയമങ്ങൾ എന്തിന് കോഡിലാകണം?

  • സ്ഥിരമായി. ഈ നിയമം എല്ലാവര് ക്കും ബാധകമാണ്, എല്ലാ സമയത്തും, രാവിലെ 3 മണിക്ക് പോലും.
  • വേഗത്തിലുള്ള പ്രതികരണം. ഡെവലപ്പർമാർ ഒരു പ്രശ്നത്തെക്കുറിച്ച് പഠിക്കുന്നത് അവർ അത് നടപ്പിലാക്കാൻ ശ്രമിക്കുന്ന നിമിഷം തന്നെ, വ്യക്തമായ സന്ദേശത്തോടെ, ആഴ്ചകൾക്കു ശേഷം ഒരു ഓഡിറ്റിലല്ല.
  • പതിപ്പും അവലോകനവും. ഗിറ്റിലാണു് നയങ്ങള് ജീവിക്കുന്നത്, പിൻ അഭ്യർത്ഥനകളിലൂടെ കടന്നുപോകുന്നു, ചരിത്രവും ഉണ്ട്.
  • പരീക്ഷണാത്മകമായി. നിങ്ങള് ക്ക് നിങ്ങളുടെ പോളിസിക്ക് വേണ്ടി ടെസ്റ്റുകൾ എഴുതാം, മറ്റേതൊരു കോഡും പോലെ.
  • പരിശോധിക്കാവുന്നതാണ്. ഏത് നിയമങ്ങളാണ് ബാധകമെന്ന് കൃത്യമായി കാണിച്ചു തരികയും അവ നടപ്പാക്കപ്പെടുന്നുണ്ടെന്ന് തെളിയിക്കുകയും ചെയ്യാം.

കുബർനെറ്റസിൽ അവ എഴുതാനുള്ള മൂന്നു വഴികൾ

കുബർനെറ്റിന് പ്രവേശന നിയന്ത്രണം: ഓരോ സൃഷ്ടിക്കൽ അല്ലെങ്കിൽ അപ്ഡേറ്റ് അഭ്യർത്ഥനയും സൂക്ഷിക്കുന്നതിനുമുമ്പ് പരിശോധിക്കാം (സാധുവാക്കാം) അല്ലെങ്കിൽ പരിഷ്ക്കരിക്കാം (മ്യൂട്ടേറ്റ് ചെയ്യാം). പോളിസി എഞ്ചിനുകൾ അവിടെ പ്ലഗ് ഇൻ ചെയ്യുന്നു.

കിവേർനോഃ കുബർനെറ്റസ് യാംഎംഎൽ പോലുള്ള നയങ്ങൾ

കിവെർനോ, ഒരു സി. എൻ. സി. എഫ്. പ്രോജക്ട്, നിങ്ങളെ കുബർനെറ്റസ് റിസോഴ്സുകളായി നയങ്ങൾ എഴുതാൻ അനുവദിക്കുന്നു. നിങ്ങള് ക്ക് ഒരു വിന്യാസം വായിക്കാൻ കഴിയുമെങ്കില് , നിങ്ങള് ക്ക് ഒരു കൈവെര് നോ നയവും വായിക്കാം:

apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: disallow-latest-tag
spec:
  validationFailureAction: Enforce
  rules:
  - name: require-image-tag
    match:
      any:
      - resources:
          kinds: ["Pod"]
    validate:
      message: "Images must use a specific version tag, not 'latest'."
      pattern:
        spec:
          containers:
          - image: "!*:latest"

കിവര് നോക്കും കഴിയും. മാറ്റം (സ്ഥിരസ്ഥിതി ലേബലുകളോ സുരക്ഷാ ക്രമീകരണങ്ങളോ ചേർക്കുക) സൃഷ്ടിക്കുക വിഭവങ്ങള് (ഓരോ പുതിയ നാമമേഖലയിലും ഒരു സ്ഥിരസ്ഥിതി നെറ്റ്വർക്ക് പോളിസി സൃഷ്ടിക്കുക), ഒപ്പം ചിത്രത്തിന്റെ ഒപ്പ് പരിശോധിക്കുക.

ഒപിഎ ഗേറ്റ്കീപ്പർ: റെഗോയിലെ നയങ്ങൾ

ഓപ്പൺ പോളിസി ഏജന്റ് (ഒപിഎ), സിഎൻസിഎഫ് പദ്ധതിയുമാണ്, പൊതുവായ ഉദ്ദേശ്യം ഉള്ള ഒരു പോളിസി എഞ്ചിനാണ്. റെഗോ. ഗേറ്റ് കീപ്പർ അത് കുബർനെറ്റസുമായി സംയോജിപ്പിക്കുന്നു. റെഗോ വളരെ ശക്തമാണ്, കുബർനെറ്റസിനെക്കാൾ വളരെ അപ്പുറമാണ് പ്രവർത്തിക്കുന്നത് (എപിഐകൾ, ടെറാഫോർം പ്ലാനുകൾ, സിഐ പൈപ്പ്ലൈനുകൾ), പക്ഷേ ഇതിന് ഒരു പഠന വക്രമുണ്ട്.

package k8srequiredlabels

violation[{"msg": msg}] {
  required := {"owner", "app"}
  provided := {label | input.review.object.metadata.labels[label]}
  missing := required - provided
  count(missing) > 0
  msg := sprintf("Missing required labels: %v", [missing])
}

പ്രവേശന നയം സാധൂകരിക്കുന്നുഃ കുബർനെറ്റിനുള്ളിൽ ഉൾപ്പെടുത്തിയിരിക്കുന്നു

കുബർനെറ്റിന് ഇപ്പോൾ സ്വന്തം നയ സംവിധാനമുണ്ട്. പ്രവേശന നയം സാധൂകരിക്കുന്നുപതിപ്പ് 1.30 മുതൽ സ്ഥിരതയുള്ളതാണ്. നിയമങ്ങൾ എഴുതിയിരിക്കുന്നത് സി. ഇ. എൽ (Common Expression Language) കൂടാതെ API സെർവറിനുള്ളിൽ പ്രവർത്തിപ്പിക്കുകയും ചെയ്യുന്നു, ഇൻസ്റ്റാൾ ചെയ്യാൻ അധിക ഘടകങ്ങളൊന്നുമില്ലാതെഃ

apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingAdmissionPolicy
metadata:
  name: require-replicas-in-prod
spec:
  matchConstraints:
    resourceRules:
    - apiGroups: ["apps"]
      apiVersions: ["v1"]
      operations: ["CREATE", "UPDATE"]
      resources: ["deployments"]
  validations:
  - expression: "object.spec.replicas >= 2"
    message: "Production deployments need at least 2 replicas."

(A ValidatingAdmissionPolicyBinding പിന്നീട് അത് പ്രത്യേക നാമമേഖലകളിലേക്ക് പ്രയോഗിക്കുന്നു.

ലളിതമായ പരിശോധനാ നിയമങ്ങൾക്കാണ് ഇത് അനുയോജ്യം. മ്യൂട്ടേഷന് , ജനറേഷൻ, ഇമേജ് പരിശോധന, റിപ്പോർട്ടിംഗ് എന്നിവയ്ക്കായി, കെയ്വർനോ അല്ലെങ്കിൽ ഗേറ്റ്കീപ്പർ ഇനിയും കൂടുതൽ വാഗ്ദാനം ചെയ്യുന്നു. രണ്ട് എഞ്ചിനുകളും CEL സ്വീകരിക്കുന്നു.

വിക്കിയിലെ ഒരു നിയമം ഒരു നിർദ്ദേശമാണ്. പ്രവേശന നയത്തിലെ ഒരു നിയമം ഒരു ഗ്യാരണ്ടിയാണ്.

ഞാന് എപ്പോഴും കൂട്ടിച്ചേര് ക്കുന്ന പോളിസികള്

മിക്ക ക്ലസ്റ്ററുകളിലും നല്ലൊരു സ്റ്റാർട്ടർ സെറ്റ്:

  • ഇല്ല latest ചിത്ര ടാഗുകൾ.
  • അംഗീകൃത രജിസ്റ്ററുകളിൽ നിന്നുള്ള ചിത്രങ്ങള് മാത്രം.
  • ആവശ്യമായ ലേബലുകൾ: owner, app, ചിലപ്പോൾ cost-center.
  • ആവശ്യമായ വിഭവ അഭ്യർത്ഥനകൾ ഓരോ കണ്ടെയ്നറിലും.
  • പ്രത്യേക അവകാശങ്ങളുള്ള കണ്ടെയ്നറുകളില്ല, ഹോസ്റ്റ് നെറ്റ്വർക്കിംഗ് ഇല്ല, ഹോസ്റ്റ് പാത്ത് മൌണ്ടുകൾ ഇല്ല (സിസ്റ്റം നാമമേഖലകൾക്ക് പുറത്ത്).
  • റൂട്ട് അല്ലാത്തവയായി പ്രവർത്തിപ്പിക്കുക.
  • സജീവതയും സന്നദ്ധതയും പരിശോധിക്കുന്നവ വിന്യാസങ്ങളെ കുറിച്ചും.
  • ഒപ്പിട്ട ചിത്രങ്ങൾ ഉല്പാദനത്തില് .

ഇവയിൽ പലതും കൈവേർനോ നയശാലയിലും ഗേറ്റ്കീപ്പർ ലൈബ്രറിയിലും ലഭ്യമാണ്.

കാര്യങ്ങൾ തകർക്കുന്നില്ലാതെ പുറത്ത് ചാടി

ശത്രുക്കളെ ഉണ്ടാക്കാനുള്ള ഏറ്റവും വേഗതയേറിയ വഴി വെള്ളിയാഴ്ചകളിൽ 20 പോളിസികൾ നിർബന്ധിതമായി ഓണാക്കുക എന്നതാണ്. പകരം:

  1. ഓഡിറ്റ് മോഡിൽ തുടങ്ങുക. കിവര് നോ Auditഗേറ്റ്കീപ്പറുടെ dryrun അല്ലെങ്കില് warn, അല്ലെങ്കിൽ Warn/Audit പ്രവേശന നയം സാധൂകരിക്കാനുള്ള നടപടികൾ. ലംഘനങ്ങൾ റിപ്പോർട്ട് ചെയ്യപ്പെടുന്നു, ഒന്നും തടയപ്പെടുന്നില്ല.
  2. റിപ്പോർട്ടുകൾ നോക്കൂ. കെയ്വർനോ പോളിസി റിപ്പോർട്ടുകൾ സൃഷ്ടിക്കുന്നു, ഗേറ്റ്കീപ്പർ ലംഘനങ്ങൾ രേഖപ്പെടുത്തുന്നു. നിലവിലുള്ള വർക്ക് ലോഡുകൾ പരിഹരിക്കുക.
  3. ആശയവിനിമയം നടത്തുക. ഏത് നിയമങ്ങളാണ് വരുന്നതെന്ന് ടീമുകളോട് പറയുക, എന്തുകൊണ്ട്, എങ്ങനെ അനുസരിക്കണം.
  4. ക്രമേണ നടപ്പിലാക്കുക, നിയമം നിയമം, നാമമേഖല നാമമേഖല.
  5. രേഖപ്പെടുത്തിയ ഒഴിവാക്കലുകൾ അനുവദിക്കുക, ഉടമസ്ഥനും കാലഹരണ തീയതിയും ഉള്ളത്.

പരിശോധന നയങ്ങൾ

  • കെയ്വർനോക്ക് ഒരു സി. ഐ. ഐ (kyverno test) നയങ്ങൾ നടപ്പിലാക്കുന്നതിനായി സാമ്പിൾ റിസോഴ്സുകൾ ഉപയോഗിച്ച്.
  • ഒ.പി.എ. opa test റെഗോ യൂണിറ്റ് ടെസ്റ്റുകള് ക്ക് വേണ്ടി.
  • ഒരേ നയങ്ങൾ നടപ്പിലാക്കുക സി. ഐയിൽ നിങ്ങളുടെ മാനിഫെസ്റ്റുകളോട് എതിര് ക്കാന് , ഡെവലപ്പര് മാര് ക്ക് അത് അറിയാന് കഴിയും, അവര് ക്ലസ്റ്ററിലെത്തുന്നതിനു മുമ്പുതന്നെ.

ഏത് എഞ്ചിനാണ്?

മിക്ക ടീമുകളും തുടങ്ങുന്ന സമയത്ത്, കിവെര് നോ ഏറ്റവും എളുപ്പമുള്ളത്: YAML നയങ്ങൾ, വലിയ ലൈബ്രറി, മ്യൂട്ടേഷനും ഇമേജ് പരിശോധനയും ഉൾപ്പെടുത്തിയിട്ടുണ്ട്. ഉപയോഗം പ്രവേശന നയം സാധൂകരിക്കുന്നു മറ്റൊരു ഘടകം ആവശ്യമില്ലാത്ത ലളിതമായ നിയമങ്ങൾക്കായി. തിരഞ്ഞെടുക്കുക ഒപിഎ കുബർനെറ്റസ്, ടെറാഫോർം, എപിഐ എന്നിവയിലുടനീളം ഒരു നയ ഭാഷ വേണമെങ്കിൽ.

എന്റെ അഭിപ്രായം: ഒരു തവണ കോഡിൽ നിയമങ്ങൾ എഴുതി, ക്ലസ്റ്ററിന് അവ ഓർമ്മിക്കാൻ അനുവദിക്കുക.

ഡെസ്ലി