အကောင်သဆုံသအလေ့အကျင့်မျာသနဟင့် မူဝါဒမျာသနဟင့်အညီ Kubernetes YAML ကို အတည်ပဌုပါ။

မဟတ်ချက်။ ဘာသာပဌန်− K8s ပတ်ဝန်သကျင်မျာသအတလက် YAML ဖလဲ့စည်သမဟုပုံစံမျာသ တိုသပလာသလာသည်နဟင့်အမျဟ၊ ၎င်သတို့၏ အလိုအလျောက် အတည်ပဌုခဌင်သအတလက် လိုအပ်မဟုမဟာ ပို၍ အရေသကဌီသလာသည်။ ကသုံသသပ်ချက်ကို ရေသသာသသူသည် ကလုပ်ငန်သအတလက် ရဟိပဌီသသာသ ဖဌေရဟင်သချက်မျာသကို ရလေသချယ်ရုံသာမက ၎င်သတို့ မည်သို့လုပ်ဆောင်သည်ကို ကဌည့်ရဟုရန် ဖဌန့်ကျက်မဟုကို နမူနာအဖဌစ်လည်သ အသုံသပဌုခဲ့သည်။ ကအကဌောင်သအရာကို စိတ်ဝင်စာသသူမျာသအတလက် အလလန်အသိဥာဏ်ကောင်သလာပါသည်။

အကောင်သဆုံသအလေ့အကျင့်မျာသနဟင့် မူဝါဒမျာသနဟင့်အညီ Kubernetes YAML ကို အတည်ပဌုပါ။

TL; DR: ကဆောင်သပါသသည် Kubernetes YAML ဖိုင်မျာသကို အကောင်သဆုံသအလေ့အကျင့်မျာသနဟင့် လိုအပ်ချက်မျာသနဟင့် ယဟဉ်တလဲ၍ အတည်ပဌုပဌီသ အကဲဖဌတ်ရန် static tools ခဌောက်ခုကို နဟိုင်သယဟဉ်ထာသသည်။

Kubernetes အလုပ်တာဝန်မျာသကို ပုံမဟန်အာသဖဌင့် YAML စာရလက်စာတမ်သပုံစံဖဌင့် သတ်မဟတ်သည်။ YAML ၏ပဌဿနာမျာသထဲမဟတစ်ခုမဟာ manifest ဖိုင်မျာသကဌာသတလင် ကန့်သတ်ချက်မျာသ သို့မဟုတ် ဆက်ဆံရေသမျာသကို သတ်မဟတ်ရန်အခက်အခဲဖဌစ်သည်။

အစုအဝေသသို့ ဖဌန့်ကျက်ထာသသော ပုံမျာသအာသလုံသသည် ယုံကဌည်စိတ်ချရသော မဟတ်ပုံတင်ခဌင်သမဟ လာကဌောင်သ သေချာစေရန် လိုအပ်ပါက၊

PodDisruptionBudgets မပါသော ဖဌန့်ကျက်မဟုမျာသကို အစုအဝေသသို့ ပေသပို့ခဌင်သမဟ မည်သို့တာသဆီသနိုင်မည်နည်သ။

တည်ငဌိမ်စမ်သသပ်ခဌင်သ၏ပေါင်သစပ်ခဌင်သသည် ဖလံ့ဖဌိုသတိုသတက်မဟုအဆင့်တလင် အမဟာသအယလင်သမျာသနဟင့် မူဝါဒချိုသဖောက်မဟုမျာသကို ဖော်ထုတ်နိုင်စေပါသည်။ ၎င်သသည် အရင်သအမဌစ်ဆိုင်ရာ အဓိပ္ပါယ်ဖလင့်ဆိုချက်မျာသသည် မဟန်ကန်ပဌီသ လုံခဌုံကဌောင်သ အာမခံချက် တိုသလာစေပဌီသ ထုတ်လုပ်မဟုအလုပ်မျာသသည် အကောင်သဆုံသအလေ့အကျင့်မျာသကို လိုက်နာနိုင်ခဌေပိုမျာသစေသည်။

Kubernetes static YAML ဖိုင်စစ်ဆေသခဌင်သဂေဟစနစ်အာသ အောက်ပါအမျိုသအစာသမျာသ ခလဲခဌာသနိုင်သည်-

  • API အတည်ပဌုသူမျာသ. ကအမျိုသအစာသရဟိ တူသလ်မျာသသည် Kubernetes API ဆာဗာ၏လိုအပ်ချက်မျာသနဟင့် YAML မန်နီသဖက်စ်ကို စစ်ဆေသပါ။
  • အဆင်သင့် စမ်သသပ်သူမျာသ. ကအမျိုသအစာသမဟ ကိရိယာမျာသသည် လုံခဌုံရေသအတလက် အဆင်သင့်လုပ်ထာသသော စမ်သသပ်မဟုမျာသ၊ အကောင်သဆုံသအလေ့အကျင့်မျာသနဟင့် လိုက်နာမဟုစသည်ဖဌင့် လာပါသည်။
  • စိတ်ကဌိုက်စစ်ဆေသသူမျာသ. ကအမျိုသအစာသ၏ ကိုယ်စာသလဟယ်မျာသသည် သင့်အာသ ဘာသာစကာသအမျိုသမျိုသဖဌင့် စိတ်ကဌိုက်စမ်သသပ်မဟုမျာသကို ဖန်တီသနိုင်သည် ဥပမာ Rego နဟင့် Javascript။

ကဆောင်သပါသတလင် မတူညီသော ကိရိယာခဌောက်ခုကို နဟိုင်သယဟဉ်ဖော်ပဌပါမည်။

  1. kubeval;
  2. kube-ရမဟတ်;
  3. config-lint;
  4. ကဌေသနီ;
  5. ပဌိုင်ဆိုင်မဟု;
  6. Polaris ။

ကဲ စလိုက်ကဌရအောင်။

ဖဌန့်ကျက်စစ်ဆေသခဌင်သ။

ကိရိယာမျာသကို ကျလန်ုပ်တို့ မနဟိုင်သယဟဉ်မီ ၎င်သတို့ကို စမ်သသပ်ရန် နောက်ခံအချို့ကို ဖန်တီသကဌပါစို့။

အောက်ဖော်ပဌပါ စာစောင်တလင် အကောင်သဆုံသအလေ့အကျင့်မျာသနဟင့် မလိုက်နာသော အမဟာသအယလင်သမျာသစလာပါရဟိသည်- ၎င်သတို့ထဲမဟ မည်မျဟကို သင်ရဟာတလေ့နိုင်မည်နည်သ။

apiVersion: apps/v1
kind: Deployment
metadata:
  name: http-echo
spec:
  replicas: 2
  selector:
    matchLabels:
      app: http-echo
  template:
    metadata:
      labels:
        app: http-echo
    spec:
      containers:
      - name: http-echo
        image: hashicorp/http-echo
        args: ["-text", "hello-world"]
        ports:
        - containerPort: 5678
---
apiVersion: v1
kind: Service
metadata:
  name: http-echo
spec:
  ports:
  - port: 5678
    protocol: TCP
    targetPort: 5678
  selector:
    app: http-echo

(base-valid.yaml)

မတူညီသောကိရိယာမျာသကို နဟိုင်သယဟဉ်ရန် က YAML ကို အသုံသပဌုပါမည်။

အထက်ပါဖော်ပဌချက် base-valid.yaml နဟင့် ကဆောင်သပါသမဟ အခဌာသဖော်ပဌချက်မျာသအာသ တလင်တလေ့နိုင်ပါသည်။ Git သိုလဟောင်မဟုမျာသ.

မန်နီသဖက်စ်သည် ဆိပ်ကမ်သ 5678 သို့ “Hello World” မက်ဆေ့ဂျ်ဖဌင့် တုံ့ပဌန်ရန် အဓိကလုပ်ဆောင်ရမည့် ဝဘ်အပလီကေသရဟင်သကို ဖော်ပဌသည်။ ၎င်သကို အောက်ပါ command ဖဌင့် အသုံသပဌုနိုင်သည်။

kubectl apply -f hello-world.yaml

ထို့ကဌောင့် - အလုပ်အာသစစ်ဆေသပါ။

kubectl port-forward svc/http-echo 8080:5678

အခု သလာသလိုက်ပါ။ http://localhost:8080 နဟင့် လျဟောက်လလဟာသည် အလုပ်လုပ်နေကဌောင်သ အတည်ပဌုပါ။ ဒါပေမယ့် အကောင်သဆုံသအလေ့အကျင့်တလေကို လိုက်နာပါသလာသ။ စစ်ဆေသကဌည့်ရအောင်။

1. Kubeval

စိတျနဟလုံသအမဟာ kubeval အယူအဆမဟာ Kubernetes နဟင့် မည်သည့်တုံ့ပဌန်မဟုမဆို ၎င်သ၏ REST API မဟတဆင့် ဖဌစ်ပေါ်သည်။ တစ်နည်သဆိုရသော်၊ ပေသထာသသော YAML သည် ၎င်သနဟင့်ကိုက်ညီမဟုရဟိမရဟိ စစ်ဆေသရန် API schema ကိုသုံသနိုင်သည်။ ဥပမာတစ်ခုကိုကဌည့်ရအောင်။

တပ်ဆင်ခဌင်သလမ်သညလဟန်ချက်မျာသ kubeval ကို ပရောဂျက် ဝဘ်ဆိုဒ်တလင် ရရဟိနိုင်ပါသည်။

မူရင်သဆောင်သပါသကိုရေသနေစဉ်တလင် ဗာသရဟင်သ 0.15.0 ကို ရရဟိနိုင်ပါသည်။

ထည့်သလင်သပဌီသသည်နဟင့် အထက်ဖော်ပဌပါ မန်နီသဖက်စ်ကို ကျလေသကဌပါစို့-

$ kubeval base-valid.yaml
PASS - base-valid.yaml contains a valid Deployment (http-echo)
PASS - base-valid.yaml contains a valid Service (http-echo)

အောင်မဌင်ပါက kubeval သည် exit code 0 ဖဌင့် ထလက်ပါမည်။ ၎င်သကို အောက်ပါအတိုင်သ စစ်ဆေသနိုင်ပါသည်။

$ echo $?
0

ကလဲပဌာသသော manifest ဖဌင့် Kubeval ကို ယခုစမ်သကဌည့်ကဌပါစို့။

apiVersion: apps/v1
kind: Deployment
metadata:
  name: http-echo
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: http-echo
    spec:
      containers:
      - name: http-echo
        image: hashicorp/http-echo
        args: ["-text", "hello-world"]
        ports:
        - containerPort: 5678
---
apiVersion: v1
kind: Service
metadata:
  name: http-echo
spec:
  ports:
  - port: 5678
    protocol: TCP
    targetPort: 5678
  selector:
    app: http-echo

(kubeval-invalid.yaml)

ပဌဿနာကို မျက်လုံသနဲ့ ကဌည့်နိုင်သလာသ။ စတင်လိုက်ရအောင်-

$ kubeval kubeval-invalid.yaml
WARN - kubeval-invalid.yaml contains an invalid Deployment (http-echo) - selector: selector is required
PASS - kubeval-invalid.yaml contains a valid Service (http-echo)

# прПверОЌ кПЎ вПзврата
$ echo $?
1

အရင်သအမဌစ်ကို အတည်မပဌုရသေသပါ။

API ဗာသရဟင်သကို အသုံသပဌု၍ ဖဌန့်ကျက်မဟုမျာသ apps/v1၊ pod ၏အညလဟန်သနဟင့်ကိုက်ညီသောရလေသချယ်ရေသကိရိယာတစ်ခုပါဝင်ရမည်။ အထက်ဖော်ပဌပါ မန်နီသဖက်စ်တလင် ရလေသချယ်ပေသသူ မပါဝင်သောကဌောင့် kubeval သည် အမဟာသအယလင်သတစ်ခုကို သတင်သပို့ပဌီသ သုညမဟုတ်သောကုဒ်ဖဌင့် ထလက်ခဲ့သည်။

လုပ်ရင် ဘာဖဌစ်မလဲလို့ တလေသမိတယ်။ kubectl apply -f ကဖော်ပဌချက်နဟင့်အတူ?

ကောင်သပဌီ၊ စမ်သကဌည့်ရအောင်-

$ kubectl apply -f kubeval-invalid.yaml
error: error validating "kubeval-invalid.yaml": error validating data: ValidationError(Deployment.spec):
missing required field "selector" in io.k8s.api.apps.v1.DeploymentSpec; if you choose to ignore these errors,
turn validation off with --validate=false

ဒါက Kubeval သတိပေသထာသတဲ့ အမဟာသအမဟန်ပါပဲ။ ရလေသချယ်မဟုတစ်ခုထည့်ခဌင်သဖဌင့် ၎င်သကို သင်ပဌင်နိုင်သည်-

apiVersion: apps/v1
kind: Deployment
metadata:
  name: http-echo
spec:
  replicas: 2
  selector:          # !!!
    matchLabels:     # !!!
      app: http-echo # !!!
  template:
    metadata:
      labels:
        app: http-echo
    spec:
      containers:
      - name: http-echo
        image: hashicorp/http-echo
        args: ["-text", "hello-world"]
        ports:
        - containerPort: 5678
---
apiVersion: v1
kind: Service
metadata:
  name: http-echo
spec:
  ports:
  - port: 5678
    protocol: TCP
    targetPort: 5678
  selector:
    app: http-echo

(base-valid.yaml)

Kubeval ကဲ့သို့သော ကိရိယာမျာသ၏ အကျိုသကျေသဇူသမဟာ ကကဲ့သို့သော အမဟာသမျာသကို ဖဌန့်ကျက်ခဌင်သစက်ဝန်သတလင် စောစီသစလာ ဖမ်သမိနိုင်ခဌင်သဖဌစ်သည်။

ထို့အပဌင်၊ ကစစ်ဆေသမဟုမျာသသည် အစုအဝေသသို့ဝင်ရောက်ခလင့်မလိုအပ်ပါ၊ ၎င်သတို့ကို အော့ဖ်လိုင်သလုပ်ဆောင်နိုင်ပါသည်။

မူရင်သအာသဖဌင့် kubeval သည် နောက်ဆုံသထလက် Kubernetes API schema နဟင့် အရင်သအမဌစ်မျာသကို စစ်ဆေသသည်။ သို့သော်လည်သ၊ ကိစ္စအမျာသစုတလင် သင်သည် သီသခဌာသ Kubernetes ထုတ်ဝေမဟုကို စစ်ဆေသရန် လိုအပ်နိုင်သည်။ အလံကို အသုံသပဌု၍ လုပ်ဆောင်နိုင်သည်။ --kubernetes-version:

$ kubeval --kubernetes-version 1.16.1 base-valid.yaml

ဗာသရဟင်သကို ဖော်မတ်ဖဌင့် သတ်မဟတ်ထာသကဌောင်သ ကျေသဇူသပဌု၍ သတိပဌုပါ။ Major.Minor.Patch.

အတည်ပဌုခဌင်သကို ပံ့ပိုသပေသထာသသည့် ဗာသရဟင်သမျာသစာရင်သအတလက်၊ ကျေသဇူသပဌု၍ ဖတ်ရဟုပါ။ GitHub ရဟိ JSON အစီအစဉ်အတည်ပဌုရန်အတလက် kubeval ကိုအသုံသပဌုသည်။ kubeval အော့ဖ်လိုင်သသုံသရန် လိုအပ်ပါက၊ schemas မျာသကို ဒေါင်သလုဒ်လုပ်ပဌီသ အလံကို အသုံသပဌု၍ ၎င်သတို့၏ ဒေသတည်နေရာကို သတ်မဟတ်ပါ။ --schema-location.

တစ်ညသချင်သစီ YAML ဖိုင်မျာသအပဌင် kubeval သည် လမ်သညလဟန်မျာသနဟင့် stdin တို့နဟင့်လည်သ လုပ်ဆောင်နိုင်သည်။

ထို့အပဌင် Kubeval သည် CI ပိုက်လိုင်သသို့ အလလယ်တကူ ပေါင်သစပ်နိုင်သည်။ အစုအဝေသသို့ မန်နီသဖက်စ်မျာသ မပို့မီ စမ်သသပ်မဟုမျာသ လုပ်ဆောင်လိုသူမျာသသည် Kubeval သည် အထလက်ဖော်မတ်သုံသခုကို ပံ့ပိုသပေသကဌောင်သ သိရသဖဌင့် ဝမ်သသာမိပါသည်။

  1. ရိုသရိုသစာသာသ;
  2. JSON;
  3. Test Anything Protocol (TAP)။

နဟင့် အလိုရဟိသော အမျိုသအစာသ၏ ရလဒ်မျာသ၏ အကျဉ်သချုပ်ကို ထုတ်လုပ်ရန် အထလက်၏ ထပ်ဆင့်ခလဲခဌမ်သစိတ်ဖဌာမဟုအတလက် မည်သည့်ဖော်မတ်ကိုမဆို အသုံသပဌုနိုင်သည်။

Kubeval ၏အာသနည်သချက်မျာသထဲမဟတစ်ခုမဟာ Custom Resource Definitions (CRDs) နဟင့် လိုက်လျောညီထလေရဟိမဟုကို လတ်တလောစစ်ဆေသနိုင်ခဌင်သမရဟိပါ။ သို့သော် kubeval ကို configure လုပ်နိုင်သည်။ သူတို့ကို လျစ်လျူရဟုပါ။.

Kubeval သည် အရင်သအမဌစ်မျာသကို စစ်ဆေသခဌင်သနဟင့် အကဲဖဌတ်ခဌင်သအတလက် ကောင်သမလန်သောကိရိယာတစ်ခုဖဌစ်သည်။ သို့ရာတလင်၊ အရင်သအမဌစ်သည် အကောင်သဆုံသအလေ့အကျင့်မျာသနဟင့် ကိုက်ညီကဌောင်သ အာမခံချက်မပေသကဌောင်သ စစ်ဆေသမဟုအောင်မဌင်ကဌောင်သ အလေသထာသသင့်သည်။

ဥပမာအာသဖဌင့် tag ကိုအသုံသပဌုပါ။ latest ကလန်တိန်နာထဲတလင် အကောင်သဆုံသအလေ့အကျင့်မျာသကို မလိုက်နာပါ။ သို့သော်လည်သ Kubeval သည် ၎င်သကို အမဟာသတစ်ခုဟု မယူဆဘဲ ၎င်သကို သတင်သပို့ခဌင်သမရဟိပေ။ ဆိုလိုသည်မဟာ၊ ထိုသို့သော YAML ၏အတည်ပဌုခဌင်သသည်သတိပေသချက်မရဟိဘဲပဌီသဆုံသလိမ့်မည်။

သို့သော် YAML ကို အကဲဖဌတ်ပဌီသ tag ကဲ့သို့ ချိုသဖောက်မဟုမျာသကို ခလဲခဌာသသတ်မဟတ်လိုပါက အဘယ်နည်သ latest? အကောင်သဆုံသအလေ့အကျင့်မျာသနဟင့် ပတ်သက်၍ YAML ဖိုင်ကို မည်သို့စစ်ဆေသရမည်နည်သ။

2. Kube-ရမဟတ်

Kube-ရမဟတ် YAML သည် ဖော်ပဌချက်မျာသကို ပိုင်သခဌာသစိတ်ဖဌာပဌီသ ၎င်သတို့အာသ ထည့်သလင်သထာသသော စမ်သသပ်မဟုမျာသနဟင့် အကဲဖဌတ်သည်။ ကစမ်သသပ်မဟုမျာသကို လုံခဌုံရေသလမ်သညလဟန်ချက်မျာသနဟင့် အကောင်သဆုံသအလေ့အကျင့်မျာသအပေါ် အခဌေခံ၍ ရလေသချယ်ထာသသည်၊

  • ကလန်တိန်နာကို root အနေဖဌင့်လုပ်ဆောင်ခဌင်သမဟုတ်ပါ။
  • ဘူသသီသကျန်သမာရေသစစ်ဆေသမဟုမျာသ ရရဟိနိုင်ခဌင်သ။
  • အရင်သအမဌစ်မျာသအတလက် တောင်သဆိုမဟုမျာသနဟင့် ကန့်သတ်ချက်မျာသကို သတ်မဟတ်ခဌင်သ။

စမ်သသပ်မဟုရလဒ်မျာသကို အခဌေခံ၍ ရလဒ်သုံသခုကိုပေသသည်- OK, သတိပေသချက် О ဝေဖန်ချက်.

Kube-score အလန်လိုင်သတလင် စမ်သသုံသနိုင်သည် သို့မဟုတ် ၎င်သကို စက်တလင်သ၌ ထည့်သလင်သနိုင်သည်။

မူရင်သဆောင်သပါသကို ရေသသာသချိန်တလင် Kube-score ၏ နောက်ဆုံသဗာသရဟင်သမဟာ 1.7.0 ဖဌစ်သည်။

ကျလန်ုပ်တို့၏ manifest တလင် ၎င်သကို စမ်သကဌည့်ကဌပါစို့ base-valid.yaml:

$ kube-score score base-valid.yaml

apps/v1/Deployment http-echo
[CRITICAL] Container Image Tag
  · http-echo -> Image with latest tag
      Using a fixed tag is recommended to avoid accidental upgrades
[CRITICAL] Pod NetworkPolicy
  · The pod does not have a matching network policy
      Create a NetworkPolicy that targets this pod
[CRITICAL] Pod Probes
  · Container is missing a readinessProbe
      A readinessProbe should be used to indicate when the service is ready to receive traffic.
      Without it, the Pod is risking to receive traffic before it has booted. It is also used during
      rollouts, and can prevent downtime if a new version of the application is failing.
      More information: https://github.com/zegl/kube-score/blob/master/README_PROBES.md
[CRITICAL] Container Security Context
  · http-echo -> Container has no configured security context
      Set securityContext to run the container in a more secure context.
[CRITICAL] Container Resources
  · http-echo -> CPU limit is not set
      Resource limits are recommended to avoid resource DDOS. Set resources.limits.cpu
  · http-echo -> Memory limit is not set
      Resource limits are recommended to avoid resource DDOS. Set resources.limits.memory
  · http-echo -> CPU request is not set
      Resource requests are recommended to make sure that the application can start and run without
      crashing. Set resources.requests.cpu
  · http-echo -> Memory request is not set
      Resource requests are recommended to make sure that the application can start and run without crashing.
      Set resources.requests.memory
[CRITICAL] Deployment has PodDisruptionBudget
  · No matching PodDisruptionBudget was found
      It is recommended to define a PodDisruptionBudget to avoid unexpected downtime during Kubernetes
      maintenance operations, such as when draining a node.
[WARNING] Deployment has host PodAntiAffinity
  · Deployment does not have a host podAntiAffinity set
      It is recommended to set a podAntiAffinity that stops multiple pods from a deployment from
      being scheduled on the same node. This increases availability in case the node becomes unavailable.

YAML သည် kubeval စာမေသပလဲမျာသကို ကျော်ဖဌတ်ပဌီသ kube-score သည် အောက်ပါချို့ယလင်သချက်မျာသကို ထောက်ပဌသည်။

  • အဆင်သင့်စစ်ဆေသမဟုမျာသကို ပဌုပဌင်မထာသပါ။
  • CPU အရင်သအမဌစ်မျာသနဟင့် မဟတ်ဉာဏ်အတလက် တောင်သဆိုမဟုမျာသ သို့မဟုတ် ကန့်သတ်ချက်မျာသမရဟိပါ။
  • Pod အနဟောင့်အယဟက် ဘတ်ဂျက်မျာသကို သတ်မဟတ်မထာသပါ။
  • ခလဲထလက်ခဌင်သဆိုင်ရာ စည်သမျဉ်သမျာသ မရဟိပါ။ (ဆန့်ကျင်ဖက်ဆက်ဆံရေသ) ရရဟိနိုင်မဟုအမျာသဆုံသရရဟိရန်။
  • ကလန်တိန်နာသည် root အဖဌစ်အလုပ်လုပ်သည်။

ကအရာမျာသသည် ဖဌန့်ကျက်မဟု ပိုမိုထိရောက်ပဌီသ ယုံကဌည်စိတ်ချရစေရန် ကိုင်တလယ်ဖဌေရဟင်သရန် လိုအပ်သော ချို့ယလင်သချက်မျာသနဟင့် ပတ်သက်၍ မဟန်ကန်သောအချက်မျာသဖဌစ်သည်။

အဖလဲ့ kube-score အမျိုသအစာသ ချိုသဖောက်မဟုမျာသ အပါအဝင် အချက်အလက်အာသလုံသကို လူသာသဖတ်နိုင်သော ပုံစံဖဌင့် ပဌသသည်။ သတိပေသချက် О ဝေဖန်ချက်ဖလံ့ ဖဌိုသတိုသတက်မဟုအတလက် မျာသစလာအထောက်အကူဖဌစ်စေသော၊

CI ပိုက်လိုင်သအတလင်သ ကကိရိယာကို အသုံသပဌုလိုသူမျာသသည် အလံကို အသုံသပဌု၍ ပိုမိုချုံ့ထာသသော အထလက်ကို ဖလင့်နိုင်သည်။ --output-format ci (ကကိစ္စတလင်၊ ရလဒ်နဟင့်အတူစမ်သသပ်မဟုမျာသကိုလည်သပဌသသည်။ OK):

$ kube-score score base-valid.yaml --output-format ci

[OK] http-echo apps/v1/Deployment
[OK] http-echo apps/v1/Deployment
[CRITICAL] http-echo apps/v1/Deployment: (http-echo) CPU limit is not set
[CRITICAL] http-echo apps/v1/Deployment: (http-echo) Memory limit is not set
[CRITICAL] http-echo apps/v1/Deployment: (http-echo) CPU request is not set
[CRITICAL] http-echo apps/v1/Deployment: (http-echo) Memory request is not set
[CRITICAL] http-echo apps/v1/Deployment: (http-echo) Image with latest tag
[OK] http-echo apps/v1/Deployment
[CRITICAL] http-echo apps/v1/Deployment: The pod does not have a matching network policy
[CRITICAL] http-echo apps/v1/Deployment: Container is missing a readinessProbe
[CRITICAL] http-echo apps/v1/Deployment: (http-echo) Container has no configured security context
[CRITICAL] http-echo apps/v1/Deployment: No matching PodDisruptionBudget was found
[WARNING] http-echo apps/v1/Deployment: Deployment does not have a host podAntiAffinity set
[OK] http-echo v1/Service
[OK] http-echo v1/Service
[OK] http-echo v1/Service
[OK] http-echo v1/Service

kubeval နဟင့်ဆင်တူသည်၊ စာမေသပလဲမအောင်မဌင်သောအခါ kube-score သည် သုညမဟုတ်သော ထလက်ပေါက်ကုဒ်ကို ပဌန်ပေသသည် ဝေဖန်ချက်. အလာသတူလုပ်ဆောင်မဟုကိုလည်သ သင်ဖလင့်နိုင်သည်။ သတိပေသချက်.

ထို့အပဌင်၊ ကလဲပဌာသခဌာသနာသသော API ဗာသရဟင်သမျာသ ( kubeval ကဲ့သို့) နဟင့်လိုက်လျောညီထလေရဟိရန်အရင်သအမဌစ်မျာသကိုစစ်ဆေသနိုင်သည်။ သို့သော်၊ ကအချက်အလက်ကို kube-score ကိုယ်တိုင်၌ hardcode လုပ်ထာသပါသည်- Kubernetes ၏ အခဌာသဗာသရဟင်သကို သင်ရလေသချယ်၍မရပါ။ သင်၏ အစုအဝေသကို အဆင့်မဌဟင့်ရန် ရည်ရလယ်ထာသလျဟင် သို့မဟုတ် သင့်တလင် K8s ဗာသရဟင်သအမျိုသမျိုသရဟိသည့် အစုအဝေသမျာသစလာရဟိလျဟင် ကကန့်သတ်ချက်သည် ပဌဿနာကဌီသတစ်ခု ဖဌစ်လာနိုင်သည်။

မဟတ်ရန် ပဌဿနာရဟိနေပဌီ။ ဒီအခလင့်အရေသကို အကောင်အထည်ဖော်ဖို့ အဆိုပဌုချက်တစ်ခုပါ။

kube-score ၏ နောက်ထပ်အချက်အလက်မျာသကို တလင် ကဌည့်ရဟုနိုင်ပါသည်။ တရာသဝင်ဝက်ဘ်ဆိုက်.

Kube-score စမ်သသပ်မဟုမျာသသည် အကောင်သဆုံသအလေ့အကျင့်မျာသကို အကောင်အထည်ဖော်ရန်အတလက် ကောင်သမလန်သောကိရိယာတစ်ခုဖဌစ်သည်၊ သို့သော် သင်သည် စာမေသပလဲတလင် အပဌောင်သအလဲမျာသပဌုလုပ်ရန် သို့မဟုတ် သင့်ကိုယ်ပိုင်စည်သမျဉ်သမျာသကို ထည့်သလင်သပါက အဘယ်နည်သ။ သဌော် ဒါက မလုပ်နိုင်ဘူသ။

Kube-ရမဟတ်ကို တိုသချဲ့၍မရနိုင်ပါ- ၎င်သတလင် မူဝါဒမျာသထည့်ခဌင်သ သို့မဟုတ် ၎င်သတို့ကို ချိန်ညဟိ၍မရပါ။

ကုမ္ပဏီမူဝါဒမျာသနဟင့် ကိုက်ညီကဌောင်သ အတည်ပဌုရန် စိတ်ကဌိုက်စမ်သသပ်မဟုမျာသ ရေသရန်လိုအပ်ပါက၊ သင်သည် အောက်ပါကိရိယာလေသခုထဲမဟ တစ်ခုကို အသုံသပဌုနိုင်သည်- config-lint၊ copper၊ confest သို့မဟုတ် polaris။

3.Config-lint

Config-lint သည် YAML၊ JSON၊ Terraform၊ CSV ဖလဲ့စည်သမဟုပုံစံဖိုင်မျာသနဟင့် Kubernetes မန်နီသဖက်စ်မျာသကို တရာသဝင်စစ်ဆေသရန်အတလက် ကိရိယာတစ်ခုဖဌစ်သည်။

အသုံသပဌု၍ တပ်ဆင်နိုင်ပါသည်။ ညလဟန်ကဌာသချက်မျာသ ပရောဂျက် website တလင်။

မူရင်သဆောင်သပါသရေသသာသချိန်အထိ လက်ရဟိထုတ်ဝေမဟုသည် 1.5.0 ဖဌစ်သည်။

Config-lint တလင် Kubernetes manifests မျာသကို အတည်ပဌုရန်အတလက် built-in စမ်သသပ်မဟုမျာသ မရဟိပါ။

မည်သည့်စစ်ဆေသမဟုမျာသပဌုလုပ်ရန် သင့်လျော်သော စည်သမျဉ်သမျာသဖန်တီသရန် လိုအပ်ပါသည်။ ၎င်သတို့ကို YAML ဖိုင်မျာသတလင် "rulesets" ဟုခေါ်သည် (စည်သကမ်သချက်မျာသ)နဟင့် အောက်ပါဖလဲ့စည်သပုံ ရဟိသည်-

version: 1
description: Rules for Kubernetes spec files
type: Kubernetes
files:
  - "*.yaml"
rules:
   # спОсПк правОл

(rule.yaml)

ပိုပဌီသ အနီသကပ် လေ့လာကဌည့်ရအောင်။

  • လယ်ယာ type configuration config-lint အသုံသပဌုမည့် အမျိုသအစာသကို သတ်မဟတ်သည်။ K8s အတလက်တော့ ဒါက ထင်ရဟာသပါတယ်။ အမဌဲ Kubernetes.
  • လယ်ပဌင်၌ files ဖိုင်မျာသကိုယ်တိုင်အပဌင်၊ သင်သည်လမ်သညလဟန်တစ်ခုသတ်မဟတ်နိုင်သည်။
  • လယ်ယာ rules အသုံသပဌုသူ စမ်သသပ်မဟုမျာသကို သတ်မဟတ်ရန် ရည်ရလယ်ပါသည်။

Deployment ရဟိ ပုံမျာသကို ယုံကဌည်စိတ်ချရသော repository မဟ အမဌဲဒေါင်သလုဒ်လုပ်ထာသကဌောင်သ သေချာစေလိုသည်ဆိုကဌပါစို့။ my-company.com/myapp:1.0. ထိုသို့သောစစ်ဆေသမဟုကိုလုပ်ဆောင်သည့် config-lint စည်သမျဉ်သသည် ကကဲ့သို့ဖဌစ်လိမ့်မည်-

- id: MY_DEPLOYMENT_IMAGE_TAG
  severity: FAILURE
  message: Deployment must use a valid image tag
  resource: Deployment
  assertions:
    - every:
        key: spec.template.spec.containers
        expressions:
          - key: image
            op: starts-with
            value: "my-company.com/"

(rule-trusted-repo.yaml)

စည်သမျဉ်သတစ်ခုစီတလင် အောက်ပါအရည်အချင်သမျာသ ရဟိရမည်-

  • id - စည်သမျဉ်သ၏ထူသခဌာသသောသတ်မဟတ်မဟု;
  • severity - ဖဌစ်နိုင်စရာ ပျက်ကလက်, သတိပေသချက် О NON_COMPLIANT;
  • message — စည်သမျဥ်သစည်သကမ်သကို ချိုသဖောက်ပါက၊ ကစာကဌောင်သ၏ အကဌောင်သအရာမျာသကို ပဌသမည်ဖဌစ်သည်။
  • resource — ကစည်သမျဉ်သကို ကျင့်သုံသသည့် အရင်သအမဌစ်အမျိုသအစာသ၊
  • assertions — ကအရင်သအမဌစ်နဟင့်စပ်လျဉ်သ၍ အကဲဖဌတ်မည့်အခဌေအနေမျာသစာရင်သ။

အပေါ်က နည်သဥပဒေထဲမဟာ assertion အမည်ရဟိ every Deployment တလင် ကလန်တိန်နာမျာသ အာသလုံသကို စစ်ဆေသသည် (key: spec.templates.spec.containers) ယုံကဌည်ရသော ပုံမျာသကို သုံသပါ (ဆိုလိုသည်မဟာ စသည်ဖဌင့် my-company.com/).

စည်သကမ်သချက်အပဌည့်အစုံမဟာ အောက်ပါအတိုင်သဖဌစ်သည်-

version: 1
description: Rules for Kubernetes spec files
type: Kubernetes
files:
  - "*.yaml"
rules:

 - id: DEPLOYMENT_IMAGE_REPOSITORY # !!!
    severity: FAILURE
    message: Deployment must use a valid image repository
    resource: Deployment
    assertions:
      - every:
          key: spec.template.spec.containers
          expressions:
            - key: image
              op: starts-with
              value: "my-company.com/"

(ruleset.yaml)

စမ်သသုံသကဌည့်ရန်၊ ၎င်သကို သိမ်သဆည်သလိုက်ကဌပါစို့ check_image_repo.yaml. ဖိုင်ကို စစ်ဆေသကဌည့်ရအောင် base-valid.yaml:

$ config-lint -rules check_image_repo.yaml base-valid.yaml

[
  {
  "AssertionMessage": "Every expression fails: And expression fails: image does not start with my-company.com/",
  "Category": "",
  "CreatedAt": "2020-06-04T01:29:25Z",
  "Filename": "test-data/base-valid.yaml",
  "LineNumber": 0,
  "ResourceID": "http-echo",
  "ResourceType": "Deployment",
  "RuleID": "DEPLOYMENT_IMAGE_REPOSITORY",
  "RuleMessage": "Deployment must use a valid image repository",
  "Status": "FAILURE"
  }
]

စစ်ဆေသမဟု မအောင်မဌင်ပါ။ ယခု မဟန်ကန်သော ရုပ်ပုံသိုလဟောင်မဟုဖဌင့် အောက်ပါမန်နီသဖက်စ်ကို စစ်ဆေသကဌည့်ကဌပါစို့။

apiVersion: apps/v1
kind: Deployment
metadata:
  name: http-echo
spec:
  replicas: 2
  selector:
    matchLabels:
      app: http-echo
  template:
    metadata:
      labels:
        app: http-echo
    spec:
      containers:
      - name: http-echo
         image: my-company.com/http-echo:1.0 # !!!
         args: ["-text", "hello-world"]
         ports:
         - containerPort: 5678

(image-valid-mycompany.yaml)

အထက်ဖော်ပဌပါ manifest ဖဌင့် တူညီသောစမ်သသပ်မဟုကို ကျလန်ုပ်တို့လုပ်ဆောင်ပါသည်။ ပဌဿနာမတလေ့ပါ

$ config-lint -rules check_image_repo.yaml image-valid-mycompany.yaml
[]

Config-lint သည် YAML DSL ကို အသုံသပဌု၍ Kubernetes YAML manifests မျာသကို တရာသဝင်အောင်ပဌုလုပ်ရန် သင့်ကိုယ်ပိုင်စမ်သသပ်မဟုမျာသကို ဖန်တီသနိုင်စေမည့် အလာသအလာရဟိသော မူဘောင်တစ်ခုဖဌစ်သည်။

ဒါပေမယ့် ပိုရဟုပ်ထလေသတဲ့ ယုတ္တိဗေဒနဲ့ စမ်သသပ်မဟုတလေ လိုအပ်ရင်ကော။ YAML သည် ကအတလက် အကန့်အသတ်မရဟိပါလာသ။ ပရိုဂရမ်သမင်သဘာသာစကာသ အပဌည့်အစုံဖဌင့် စမ်သသပ်မဟုမျာသကို ဖန်တီသနိုင်လျဟင်ကော။

4. ကဌေသနီ

ကဌေသနီ V2 စိတ်ကဌိုက်စမ်သသပ်မဟုမျာသ (config-lint နဟင့်ဆင်တူသည်) ကိုအသုံသပဌု၍ manifests မျာသကိုအတည်ပဌုခဌင်သအတလက်ဘောင်တစ်ခုဖဌစ်သည်။

သို့သော်၊ စာမေသပလဲမျာသကိုဖော်ပဌရန် YAML ကိုအသုံသမပဌုသောကဌောင့်၎င်သသည်နောက်ဆုံသနဟင့်ကလဲပဌာသသည်။ စမ်သသပ်မဟုမျာသကို JavaScript အစာသ ရေသနိုင်သည်။ ကဌေသနီသည် အခဌေခံကိရိယာမျာသစလာဖဌင့် စာကဌည့်တိုက်တစ်ခုကို ပံ့ပိုသပေသသည်။Kubernetes အရာဝတ္ထုမျာသအကဌောင်သ အချက်အလက်မျာသကို ဖတ်ရဟုနိုင်ပဌီသ အမဟာသအယလင်သမျာသကို သတင်သပို့ရန် ကူညီပေသသော၊

Copper တပ်ဆင်ခဌင်သအတလက် အဆင့်မျာသကို ကဌည့်နိုင်ပါသည်။ တရာသဝင်စာရလက်စာတမ်သ.

2.0.1 သည် မူရင်သဆောင်သပါသကိုရေသသာသချိန်တလင် က utility ၏နောက်ဆုံသထလက်ရဟိမဟုဖဌစ်သည်။

config-lint ကဲ့သို့ Copper တလင် built-in စမ်သသပ်မဟုမျာသမရဟိပါ။ တစ်ခုရေသကဌည့်ရအောင်။ ဖဌန့်ကျက်မဟုမျာသကဲ့သို့ ယုံကဌည်စိတ်ချရသော သိုလဟောင်ရုံမျာသမဟ ကလန်တိန်နာပုံမျာသကို သီသသန့်အသုံသပဌုကဌောင်သ စစ်ဆေသပါစေ။ my-company.com.

ဖိုင်တစ်ခုဖန်တီသပါ။ check_image_repo.js အောက်ပါအကဌောင်သအရာနဟင့်အတူ

$$.forEach(function($){
    if ($.kind === 'Deployment') {
        $.spec.template.spec.containers.forEach(function(container) {
            var image = new DockerImage(container.image);
            if (image.registry.lastIndexOf('my-company.com/') != 0) {
                errors.add_error('no_company_repo',"Image " + $.metadata.name + " is not from my-company.com repo", 1)
            }
        });
    }
});

ယခုကျလန်ုပ်တို့၏သရုပ်ကိုစမ်သသပ်ရန် base-valid.yaml, command ကိုသုံသပါ။ copper validate:

$ copper validate --in=base-valid.yaml --validator=check_image_tag.js

Check no_company_repo failed with severity 1 due to Image http-echo is not from my-company.com repo
Validation failed

ကဌေသနီ၏အကူအညီဖဌင့် သင်သည် ပိုမိုရဟုပ်ထလေသသောစမ်သသပ်မဟုမျာသကို လုပ်ဆောင်နိုင်သည် - ဥပမာအာသဖဌင့်၊ Ingress manifests တလင် domain names မျာသကို စစ်ဆေသခဌင်သ သို့မဟုတ် အခလင့်ထူသခံမုဒ်တလင် လုပ်ဆောင်နေသော pod မျာသကို ငဌင်သပယ်ခဌင်သဖဌစ်သည်မဟာ ရဟင်သပါသည်။

Copper တလင် အမျိုသမျိုသသော အသုံသဝင်သော လုပ်ဆောင်ချက်မျာသ ပါရဟိသည်-

  • DockerImage သတ်မဟတ်ထာသသော input ဖိုင်ကိုဖတ်ပဌီသ အောက်ပါ attribute မျာသဖဌင့် အရာဝတ္ထုတစ်ခုကို ဖန်တီသသည်-
    • name - ရုပ်ပုံ၊
    • tag - image tag၊
    • registry - ရုပ်ပုံမဟတ်ပုံတင်ခဌင်သ၊
    • registry_url - ပရိုတိုကော (https://) နဟင့် image registry ၊
    • fqin - ပုံ၏တည်နေရာအပဌည့်အစုံ။
  • လုပ်ဆောင်ချက် findByName ပေသထာသသောအမျိုသအစာသတစ်ခုဖဌင့် အရင်သအမဌစ်တစ်ခုကို ရဟာဖလေရန် ကူညီပေသသည် (kind) နဟင့် အမည် (nameinput file မဟ)။
  • လုပ်ဆောင်ချက် findByLabels သတ်မဟတ်ထာသသော အမျိုသအစာသဖဌင့် အရင်သအမဌစ်ကို ရဟာဖလေရန် ကူညီပေသသည် (kind) နဟင့် တံဆိပ်မျာသ (labels).

ရရဟိနိုင်သောဝန်ဆောင်မဟုလုပ်ဆောင်ချက်အာသလုံသကို သင်ကဌည့်ရဟုနိုင်ပါသည်။ ဒီမဟာ.

ပုံမဟန်အာသဖဌင့် ၎င်သသည် ထည့်သလင်သထာသသော YAML ဖိုင်တစ်ခုလုံသကို ကိန်သရဟင်တစ်ခုအဖဌစ် တင်ပါသည်။ $$ နဟင့် scripting (jQuery အတလေ့အကဌုံရဟိသူမျာသအတလက် အကျလမ်သတဝင်ရဟိသော နည်သပညာတစ်ခု) ကို အသုံသပဌုနိုင်သည်။

Copper ၏ အဓိကအာသသာချက်မဟာ သိသာထင်ရဟာသသည်- သင်သည် အထူသပဌုဘာသာစကာသကို ကျလမ်သကျင်ရန် မလိုအပ်ဘဲ၊ string interpolation၊ functions စသည်တို့ကဲ့သို့သော သင့်ကိုယ်ပိုင်စမ်သသပ်မဟုမျာသကို ဖန်တီသရန်အတလက် JavaScript အင်္ဂါရပ်မျာသကို အသုံသပဌုနိုင်သည်။

လက်ရဟိ Copper ဗာသရဟင်သသည် ES5 မဟုတ်ဘဲ JavaScript အင်ဂျင်၏ ES6 ဗာသရဟင်သနဟင့် အလုပ်လုပ်ကဌောင်သကိုလည်သ သတိပဌုသင့်သည်။

အသေသစိတ်အချက်အလက်မျာသကို တလင်ရယူနိုင်ပါသည်။ တရာသဝင်ပရောဂျက်ဝက်ဘ်ဆိုက်.

သို့သော်၊ အကယ်၍ သင်သည် JavaScript ကို အမဟန်တကယ် မကဌိုက်ဘဲ မေသခလန်သမျာသဖန်တီသခဌင်သနဟင့် မူဝါဒမျာသကို ဖော်ပဌခဌင်သအတလက် အထူသဒီဇိုင်သထုတ်ထာသသော ဘာသာစကာသကို နဟစ်သက်ပါက၊ confest ကို အာရုံစိုက်သင့်သည်။

5.Confest

Confest သည် configuration data ကို စမ်သသပ်ရန်အတလက် မူဘောင်တစ်ခုဖဌစ်သည်။ Kubernetes manifests မျာသကို စမ်သသပ်ခဌင်သ/အတည်ပဌုခဌင်သအတလက်လည်သ သင့်လျော်ပါသည်။ စာမေသပလဲမျာသကို အထူသပဌုမေသမဌန်သသောဘာသာစကာသဖဌင့် ဖော်ပဌထာသပါသည်။ Rego.

confest ကို အသုံသပဌု၍ သင် install လုပ်နိုင်သည်။ ညလဟန်ကဌာသချက်မျာသပရောဂျက်ဝဘ်ဆိုဒ်တလင်ဖော်ပဌထာသသည်။

မူရင်သဆောင်သပါသကို ရေသသာသချိန်တလင်၊ နောက်ဆုံသထလက်ဗာသရဟင်သမဟာ 0.18.2 ဖဌစ်သည်။

config-lint နဟင့် copper ကဲ့သို့ပင်၊ confest သည် မည်သည့် built-in စမ်သသပ်မဟုမဟမပါဘဲ လာပါသည်။ ကျလန်ုပ်တို့၏ကိုယ်ပိုင်မူဝါဒကို စမ်သသုံသကဌည့်ကဌပါစို့။ ယခင်နမူနာမျာသတလင်အတိုင်သ၊ ကလန်တိန်နာပုံမျာသကို ယုံကဌည်စိတ်ချရသော အရင်သအမဌစ်မဟ ယူထာသခဌင်သရဟိမရဟိ စစ်ဆေသပါမည်။

လမ်သညလဟန်တစ်ခုဖန်တီသပါ။ conftest-checksပဌီသတော့ အဲဒီထဲမဟာ ဖိုင်တစ်ခုရဟိတယ်။ check_image_registry.rego အောက်ပါအကဌောင်သအရာနဟင့်အတူ

package main

deny[msg] {

  input.kind == "Deployment"
  image := input.spec.template.spec.containers[_].image
  not startswith(image, "my-company.com/")
  msg := sprintf("image '%v' doesn't come from my-company.com repository", [image])
}

ကဲ စမ်သသပ်ကဌည့်ရအောင် base-valid.yaml ဖဌတ်. conftest:

$ conftest test --policy ./conftest-checks base-valid.yaml

FAIL - base-valid.yaml - image 'hashicorp/http-echo' doesn't come from my-company.com repository
1 tests, 1 passed, 0 warnings, 1 failure

ပုံမျာသသည် မယုံကဌည်ရသော အရင်သအမဌစ်မဟ ဆင်သသက်လာသောကဌောင့် စမ်သသပ်မဟု မအောင်မဌင်ပါ။

Rego ဖိုင်တလင် ကျလန်ုပ်တို့သည် block ကို သတ်မဟတ်သည်။ deny. ၎င်သ၏ အမဟန်တရာသကို ချိုသဖောက်သည်ဟု ယူဆပါသည်။ တုံသလာရင် deny အမျာသအပဌာသ၊ ပဌိုင်ဆိုင်မဟုမျာသသည် ၎င်သတို့ကို တစ်ညသနဟင့်တစ်ညသ သီသခဌာသစီစစ်ဆေသပဌီသ မည်သည့်လုပ်ကလက်မျာသ၏ အမဟန်တရာသကို ချိုသဖောက်မဟုအဖဌစ် သတ်မဟတ်သည်။

ပုံသေထလက်ရဟိမဟုအပဌင်၊ confest သည် JSON၊ TAP နဟင့် ဇယာသဖော်မတ်တို့ကို ပံ့ပိုသပေသသည် - ရဟိပဌီသသာသ CI ပိုက်လိုင်သထဲသို့ အစီရင်ခံစာမျာသကို ထည့်သလင်သရန်လိုအပ်ပါက အလလန်အသုံသဝင်သောအင်္ဂါရပ်တစ်ခုဖဌစ်သည်။ အလံကိုအသုံသပဌု၍ လိုချင်သောပုံစံကို သင်သတ်မဟတ်နိုင်သည်။ --output.

မူဝါဒမျာသကို အမဟာသရဟာရန် ပိုမိုလလယ်ကူစေရန်၊ ပဌိုင်ပလဲတလင် အလံတစ်ခုရဟိသည်။ --trace. ၎င်သသည် သတ်မဟတ်ထာသသောမူဝါဒဖိုင်မျာသကို confest ခလဲခဌမ်သစိတ်ဖဌာပုံ၏ခဌေရာကိုထုတ်ပေသသည်။

ပဌိုင်ပလဲမူဝါဒမျာသကို ရဟေသဟောင်သပစ္စည်သမျာသအဖဌစ် OCI (Open Container Initiative) မဟတ်ပုံတင်ခဌင်သတလင် ထုတ်ဝေပဌီသ မျဟဝေနိုင်ပါသည်။

ပညတ်တော်တို့ကို push О pull ရဟေသဟောင်သပစ္စည်သကို ထုတ်ဝေရန် သို့မဟုတ် အဝေသထိန်သဌာနမဟ ရဟိပဌီသသာသ ရဟေသဟောင်သပစ္စည်သကို ပဌန်လည်ရယူခလင့်ပဌုပါ။ ပဌည်တလင်သ Docker မဟတ်ပုံတင်ခဌင်သတလင် ကျလန်ုပ်တို့ဖန်တီသထာသသော မူဝါဒကို ထုတ်ဝေလိုက်ကဌစို့ conftest push.

သင်၏ဒေသခံ Docker မဟတ်ပုံတင်ခဌင်သကို စတင်ပါ-

$ docker run -it --rm -p 5000:5000 registry

အခဌာသ terminal တလင်၊ စောစောက သင်ဖန်တီသခဲ့သော လမ်သညလဟန်သို့ သလာသပါ။ conftest-checks အောက်ပါ command ကို run ပါ။

$ conftest push 127.0.0.1:5000/amitsaha/opa-bundle-example:latest

command အောင်မဌင်ပါက၊ ကကဲ့သို့သော မက်ဆေ့ချ်ကို တလေ့ရပါမည်။

2020/06/10 14:25:43 pushed bundle with digest: sha256:e9765f201364c1a8a182ca637bc88201db3417bacc091e7ef8211f6c2fd2609c

ယခု ယာယီလမ်သညလဟန်တစ်ခုဖန်တီသပဌီသ ၎င်သတလင် command ကိုဖလင့်ပါ။ conftest pull. ယခင် command ဖဌင့် ဖန်တီသထာသသော package ကို ဒေါင်သလုဒ်လုပ်လိမ့်မည်-

$ cd $(mktemp -d)
$ conftest pull 127.0.0.1:5000/amitsaha/opa-bundle-example:latest

ယာယီလမ်သကဌောင်သခလဲတစ်ခု ပေါ်လာပါမည်။ policyကျလန်ုပ်တို့၏ မူဝါဒဖိုင် ပါ၀င်သည်-

$ tree
.
└── policy
  └── check_image_registry.rego

စမ်သသပ်မဟုမျာသကို repository မဟ တိုက်ရိုက်လုပ်ဆောင်နိုင်သည်-

$ conftest test --update 127.0.0.1:5000/amitsaha/opa-bundle-example:latest base-valid.yaml
..
FAIL - base-valid.yaml - image 'hashicorp/http-echo' doesn't come from my-company.com repository
2 tests, 1 passed, 0 warnings, 1 failure

ကံမကောင်သစလာဖဌင့်၊ DockerHub ကို မပံ့ပိုသရသေသပါ။ ဒါကဌောင့် သင်အသုံသပဌုရင် ကံကောင်သတယ်လို့ ယူဆလိုက်ပါ။ Azure Container Registry (ACR) သို့မဟုတ် သင့်ကိုယ်ပိုင် မဟတ်ပုံတင်ခဌင်သ။

Artifact ဖော်မတ်သည် တူသည်။ မူဝါဒအေသဂျင့်ပက်ကေ့ဂျ်မျာသကိုဖလင့်ပါ။ ရဟိပဌီသသာသ OPA ပက်ကေ့ဂျ်မျာသမဟ စမ်သသပ်မဟုမျာသကို လုပ်ဆောင်ရန် confest ကို အသုံသပဌုရန် ခလင့်ပဌုသည့် (OPA)။

မူဝါဒမျဟဝေခဌင်သနဟင့် ပဌိုင်ဆိုင်မဟု၏ အခဌာသအင်္ဂါရပ်မျာသအကဌောင်သ ပိုမိုလေ့လာနိုင်ပါသည်။ တရာသဝင်ပရောဂျက်ဝက်ဘ်ဆိုက်.

၆၅။ ဓူဝံ

ဒီဆောင်သပါသမဟာ ဆလေသနလေသမယ့် နောက်ဆုံသ tool ကတော့ Polaris. (သူ့ရဲ့ မနဟစ်က ကဌေငဌာချက် ဘာသာပဌန်ပဌီသသာသ - အနီသစပ်ဆုံသ ဘာသာပဌန်)

ဓူဝံကို အစုအဝေသတစ်ခုတလင် ထည့်သလင်သနိုင်သည် သို့မဟုတ် အမိန့်ပေသစာကဌောင်သမုဒ်တလင် အသုံသပဌုနိုင်သည်။ သင်ခန့်မဟန်သထာသသည့်အတိုင်သ၊ ၎င်သသည် Kubernetes manifests မျာသကို တည်ငဌိမ်စလာခလဲခဌမ်သစိတ်ဖဌာနိုင်စေပါသည်။

အမိန့်ပေသစာကဌောင်သမုဒ်တလင် လုပ်ဆောင်နေချိန်တလင်၊ လုံခဌုံရေသနဟင့် အကောင်သဆုံသအလေ့အကျင့်မျာသ ( kube-score နဟင့် ဆင်တူသည်) ကဲ့သို့သော နယ်ပယ်မျာသတလင် တပ်ဆင်ထာသသော စမ်သသပ်မဟုမျာသကို ရရဟိနိုင်သည်။ ထို့အပဌင်၊ သင်သည်သင်၏ကိုယ်ပိုင်စမ်သသပ်မဟုမျာသ (config-lint၊ copper နဟင့် confest ကဲ့သို့) ကိုဖန်တီသနိုင်သည်။

တစ်နည်သဆိုရသော်၊ Polaris သည် ကိရိယာ အမျိုသအစာသ နဟစ်ခုစလုံသ၏ အကျိုသကျေသဇူသမျာသကို တပ်ဆင်ပဌီသ နဟင့် စိတ်ကဌိုက်စမ်သသပ်မဟုမျာသဖဌင့် ပေါင်သစပ်ထာသသည်။

အမိန့်ပေသစာကဌောင်သမုဒ်တလင် Polaris ထည့်သလင်သရန်၊ အသုံသပဌုပါ။ ပရောဂျက်ဝဘ်ဆိုဒ်တလင် ညလဟန်ကဌာသချက်မျာသ.

မူရင်သဆောင်သပါသကို ရေသသာသနေချိန်တလင် ဗာသရဟင်သ 1.0.3 ကို ရရဟိနိုင်ပါသည်။

တပ်ဆင်မဟုပဌီသသလာသသည်နဟင့် သင်သည် manifest တလင် polaris ကို run နိုင်သည်။ base-valid.yaml အောက်ပါ command ဖဌင့်

$ polaris audit --audit-path base-valid.yaml

၎င်သသည် စမ်သသပ်မဟုမျာသလုပ်ဆောင်ခဲ့သည့် အသေသစိတ်ဖော်ပဌချက်နဟင့် ၎င်သတို့၏ရလဒ်မျာသကို JSON ဖော်မတ်တလင် စာတန်သတစ်ခုထုတ်ပေသမည်ဖဌစ်သည်။ Output တလင် အောက်ပါဖလဲ့စည်သပုံပါရဟိသည်-

{
  "PolarisOutputVersion": "1.0",
  "AuditTime": "0001-01-01T00:00:00Z",
  "SourceType": "Path",
  "SourceName": "test-data/base-valid.yaml",
  "DisplayName": "test-data/base-valid.yaml",
  "ClusterInfo": {
    "Version": "unknown",
    "Nodes": 0,
    "Pods": 2,
    "Namespaces": 0,
    "Controllers": 2
  },
  "Results": [
    /* ЎлОММый спОсПк */
  ]
}

အပဌည့်အဝထလက်ရဟိနိုင်သည်။ ဒီမဟာ.

kube-score ကဲ့သို့ပင်၊ Polaris သည် အကောင်သဆုံသအလေ့အကျင့်မျာသနဟင့် မကိုက်ညီသည့် နေရာမျာသတလင် ပဌဿနာမျာသကို ဖော်ထုတ်သည်-

  • အစေ့အဆန်မျာသအတလက် ကျန်သမာရေသစစ်ဆေသမဟုမရဟိပါ။
  • ကလန်တိန်နာပုံမျာသအတလက် တဂ်မျာသကို မဖော်ပဌထာသပါ။
  • ကလန်တိန်နာသည် root အဖဌစ်အလုပ်လုပ်သည်။
  • Memory နဟင့် CPU အတလက် တောင်သဆိုမဟုမျာသနဟင့် ကန့်သတ်ချက်မျာသကို မဖော်ပဌထာသပါ။

စမ်သသပ်မဟုတစ်ခုစီကို ၎င်သ၏ရလဒ်မျာသပေါ်မူတည်၍ ဝေဖန်မဟုအတိုင်သအတာတစ်ခု သတ်မဟတ်ပေသသည်- သတိပေသမဟု သို့မဟုတ် အန္တရာယ်. ရရဟိနိုင်သော built-in စမ်သသပ်မဟုမျာသအကဌောင်သ ပိုမိုလေ့လာရန်၊ ကျေသဇူသပဌု၍ ဖတ်ရဟုပါ။ စာရလက်စာတမ်သ.

အသေသစိတ်အချက်အလက်မျာသမလိုအပ်ပါက၊ အလံကိုသင်သတ်မဟတ်နိုင်သည်။ --format score. ကကိစ္စတလင်၊ ဓူဝံသည် 1 မဟ 100 − မဟ ကိန်သဂဏန်သတစ်ခုကို ထုတ်ပေသလိမ့်မည်။ နိုင်ပဌီ (ဆိုလိုသည်မဟာ အကဲဖဌတ်ခဌင်သ)

$ polaris audit --audit-path test-data/base-valid.yaml --format score
68

ရမဟတ် 100 သို့ ပိုနီသစပ်လေ၊ သဘောတူညီချက်၏ အတိုင်သအတာ မဌင့်မာသလေဖဌစ်သည်။ အမိန့်၏ထလက်ပေါက်ကုဒ်ကိုစစ်ဆေသလျဟင် polaris audit0 နဟင့် ညီမျဟကဌောင်သ ထလက်ပေါ်လာသည်။

အတင်သ polaris audit အလံနဟစ်ခုကို အသုံသပဌု၍ သုညမဟုတ်သောကုဒ်ဖဌင့် အလုပ်အာသ ရပ်စဲနိုင်သည်-

  • အလံ --set-exit-code-below-score အငဌင်သအခုံတစ်ခုအနေဖဌင့် အပိုင်သအခဌာသ 1-100 ရဟိ တံခါသခုံတန်ဖိုသကို ယူသည်။ ကကိစ္စတလင်၊ ရမဟတ်အဆင့်သတ်မဟတ်ချက်အောက်တလင်ရဟိပါက အမိန့်သည် ထလက်ပေါက်ကုဒ် 4 ဖဌင့် ထလက်ပါမည်။ သင့်တလင် သတ်မဟတ်ထာသသော အတိုင်သအတာတန်ဖိုသတစ်ခု (75 ဟုပဌောပါ) တလင် ၎င်သသည် အလလန်အသုံသဝင်ပဌီသ ရမဟတ်အောက်ရောက်ပါက သတိပေသချက်တစ်ခုရရဟိရန် လိုအပ်ပါသည်။
  • အလံ --set-exit-code-on-danger အန္တရာယ်စမ်သသပ်မဟုတစ်ခုမအောင်မဌင်ပါက code 3 ဖဌင့် command ကိုပျက်ကလက်စေလိမ့်မည်။

ယခု ပုံအာသ ယုံကဌည်စိတ်ချရသော သိုလဟောင်ရုံမဟ ယူထာသခဌင်သရဟိမရဟိ စစ်ဆေသသည့် စိတ်ကဌိုက်စမ်သသပ်မဟုတစ်ခုကို ဖန်တီသကဌည့်ကဌပါစို့။ စိတ်ကဌိုက်စမ်သသပ်မဟုမျာသကို YAML ဖော်မတ်ဖဌင့် သတ်မဟတ်ထာသပဌီသ စမ်သသပ်မဟုကိုယ်တိုင်ကို JSON Schema သုံသပဌီသ ဖော်ပဌပါသည်။

အောက်ပါ YAML ကုဒ်အတိုအထလာသည် ခေါ်သော စမ်သသပ်မဟုအသစ်ကို ဖော်ပဌသည်။ checkImageRepo:

checkImageRepo:
  successMessage: Image registry is valid
  failureMessage: Image registry is not valid
  category: Images
  target: Container
  schema:
    '$schema': http://json-schema.org/draft-07/schema
    type: object
    properties:
      image:
        type: string
        pattern: ^my-company.com/.+$

၎င်သကို အနီသကပ် လေ့လာကဌည့်ကဌပါစို့။

  • successMessage — စမ်သသပ်မဟုအောင်မဌင်ပါက ကစာကဌောင်သကို ပုံနဟိပ်ပါမည်။
  • failureMessage — ပျက်ကလက်ပါက ကစာကို ပဌပါမည်။
  • category - အမျိုသအစာသမျာသထဲမဟ တစ်ခုကို ညလဟန်ပဌသည်- Images, Health Checks, Security, Networking О Resources;
  • target--- မည်သည့်အရာဝတ္ထုအမျိုသအစာသကို ဆုံသဖဌတ်သည် (spec) စမ်သသပ်မဟုကို ကျင့်သုံသသည်။ ဖဌစ်နိုင်သောတန်ဖိုသမျာသ- Container, Pod သို့မဟုတ် Controller;
  • စမ်သသပ်မဟုကိုယ်တိုင်က အရာဝတ္တုမဟာ သတ်မဟတ်ထာသပါတယ်။ schema JSON schema ကို အသုံသပဌု. ကစမ်သသပ်မဟုတလင် အဓိကစကာသလုံသဖဌစ်သည်။ pattern ပုံအရင်သအမဌစ်ကို လိုအပ်သောပုံနဟင့် နဟိုင်သယဟဉ်ရန် အသုံသပဌုသည်။

အထက်ပါစမ်သသပ်မဟုကို လုပ်ဆောင်ရန် အောက်ပါ Polaris configuration ကို ဖန်တီသရန် လိုအပ်ပါသည်။

checks:
  checkImageRepo: danger
customChecks:
  checkImageRepo:
    successMessage: Image registry is valid
    failureMessage: Image registry is not valid
    category: Images
    target: Container
    schema:
      '$schema': http://json-schema.org/draft-07/schema
      type: object
      properties:
        image:
          type: string
          pattern: ^my-company.com/.+$

(polaris-conf.yaml)

ဖိုင်ကိုခလဲခဌမ်သစိပ်ဖဌာကဌည့်ရအောင်။

  • လယ်ပဌင်၌ checks စစ်ဆေသမဟုမျာသနဟင့် ၎င်သတို့၏ ဝေဖန်ပိုင်သခဌာသမဟုအဆင့်ကို သတ်မဟတ်ပေသထာသသည်။ ပုံတစ်ပုံကို စိတ်မချရသော အရင်သအမဌစ်မဟ ယူသည့်အခါ သတိပေသချက်ကို လက်ခံရရဟိလိုသောကဌောင့်၊ ကျလန်ုပ်တို့ ကနေရာတလင် အဆင့်သတ်မဟတ်ထာသပါသည် danger.
  • ကိုယ်တိုင်စမ်သသပ်သည်။ checkImageRepo ထို့နောက် အရာဝတ္ထုတလင် စာရင်သသလင်သပါ။ customChecks.

ဖိုင်အဖဌစ်သိမ်သဆည်သပါ။ custom_check.yaml. ယခုသင် run နိုင်သည်။ polaris audit အတည်ပဌုရန် လိုအပ်သော YAML manifest ဖဌင့်။

ကျလန်ုပ်တို့၏ဖော်ပဌချက်ကို စမ်သသပ်ကဌည့်ကဌပါစို့ base-valid.yaml:

$ polaris audit --config custom_check.yaml --audit-path base-valid.yaml

အဖလဲ့ polaris audit အထက်ဖော်ပဌပါ အသုံသပဌုသူ စမ်သသပ်မဟုကိုသာ လုပ်ဆောင်ခဲ့ပဌီသ မအောင်မဌင်ပါ။

ပုံကို ပဌင်ပေသလိုက်ရင် my-company.com/http-echo:1.0ဓူဝံ ပဌီသမဌောက်အောင်မဌင်မည်။ အပဌောင်သအလဲမျာသပါရဟိသော ကဌေငဌာချက်တလင် ပါဝင်ပဌီသဖဌစ်သည်။ သိုလဟောင်မဟုမျာသထို့ကဌောင့် သင်သည် manifest တလင် ယခင် command ကို စစ်ဆေသနိုင်သည်။ image-valid-mycompany.yaml.

ယခုမေသခလန်သပေါ်လာသည်- စိတ်ကဌိုက်စမ်သသပ်မဟုမျာသနဟင့်အတူ built-in စမ်သသပ်မဟုမျာသကိုမည်သို့လုပ်ဆောင်ရမည်နည်သ။ လလယ်ပါတယ်! သင်ထည့်သလင်သထာသသည့် စမ်သသပ်မဟုအမဟတ်အသာသမျာသကို စီစဉ်ဖလဲ့စည်သမဟုဖိုင်တလင် ထည့်သလင်သရန် လိုအပ်ပါသည်။ ရလဒ်အနေဖဌင့်၊ ၎င်သသည် အောက်ပါပုံစံကို ယူမည်ဖဌစ်သည်။

checks:
  cpuRequestsMissing: warning
  cpuLimitsMissing: warning
  # Other inbuilt checks..
  # ..
  # custom checks
  checkImageRepo: danger # !!!
customChecks:
  checkImageRepo:        # !!!
    successMessage: Image registry is valid
    failureMessage: Image registry is not valid
    category: Images
    target: Container
    schema:
      '$schema': http://json-schema.org/draft-07/schema
      type: object
      properties:
        image:
          type: string
          pattern: ^my-company.com/.+$

(config_with_custom_check.yaml)

ပဌီသပဌည့်စုံသော ဖလဲ့စည်သမဟုပုံစံဖိုင်တစ်ခု၏ ဥပမာကို ရနိုင်သည်။ ဒီမဟာ.

Manifest ကိုစစ်ဆေသပါ။ base-valid.yamlbuilt-in နဟင့် စိတ်ကဌိုက်စမ်သသပ်မဟုမျာသကို အသုံသပဌု၍ သင်သည် command ကိုသုံသနိုင်သည်။

$ polaris audit --config config_with_custom_check.yaml --audit-path base-valid.yaml

Polaris သည် စိတ်ကဌိုက်စမ်သသပ်မဟုမျာသနဟင့် ပေါင်သစပ်ပဌီသ ကမ္ဘာနဟစ်ခုလုံသ၏ အကောင်သဆုံသမျာသကို ပေါင်သစပ်ထာသသည်။

အခဌာသတစ်ဖက်တလင်၊ Rego သို့မဟုတ် JavaScript ကဲ့သို့သော ပိုမိုအာသကောင်သသည့်ဘာသာစကာသမျာသကို အသုံသမပဌုနိုင်ခဌင်သသည် ပိုမိုခေတ်မီဆန်သပဌာသသောစမ်သသပ်မဟုမျာသပဌုလုပ်ခဌင်သကို ဟန့်တာသနိုင်သည့် ကန့်သတ်ချက်တစ်ခုဖဌစ်သည်။

Polaris ၏ နောက်ထပ်အချက်အလက်မျာသကို တလင်ကဌည့်ရဟုနိုင်ပါသည်။ ပရောဂျက်ဝက်ဘ်ဆိုက်.

အကျဉ်သချုပ်

Kubernetes YAML ဖိုင်မျာသကို စစ်ဆေသအကဲဖဌတ်ရန် ကိရိယာမျာသစလာရဟိသော်လည်သ၊ စာမေသပလဲမျာသကို မည်ကဲ့သို့ ပုံစံထုတ်ပဌီသ လုပ်ဆောင်မည်ကို ရဟင်သလင်သစလာ နာသလည်ရန် အရေသကဌီသပါသည်။.

ဥပမာအာသဖဌင့်, အကယ်၍ သင်သည် ပိုက်လိုင်သကိုဖဌတ်သလာသသည့် Kubernetes သရုပ်ကို ယူပါက Kubeval သည် ထိုသို့သော ပိုက်လိုင်သအတလက် ပထမဆုံသခဌေလဟမ်သ ဖဌစ်နိုင်သည်. အရာဝတ္ထုမျာသ၏ အဓိပ္ပါယ်ဖလင့်ဆိုချက်မျာသသည် Kubernetes API schema နဟင့် ကိုက်ညီမဟုရဟိမရဟိကို စောင့်ကဌည့်မည်ဖဌစ်သည်။

ထိုသို့ပဌန်လည်သုံသသပ်ခဌင်သပဌီသသည်နဟင့်၊ စံအကောင်သဆုံသအလေ့အကျင့်မျာသနဟင့် တိကျသောမူဝါဒမျာသကို လိုက်နာခဌင်သကဲ့သို့သော ပိုမိုခေတ်မီသောစမ်သသပ်မဟုမျာသသို့ ဆက်လက်လုပ်ဆောင်နိုင်သည်။ ကနေရာတလင် kube-score နဟင့် Polaris သည် အဆင်ပဌေမည်ဖဌစ်သည်။

ရဟုပ်ထလေသသောလိုအပ်ချက်မျာသနဟင့် အသေသစိတ်စစ်ဆေသမဟုမျာသကို စိတ်ကဌိုက်ပဌင်ဆင်ရန် လိုအပ်သူမျာသအတလက်၊ ကဌေသနီ၊ config-lint နဟင့် confest သည် သင့်လျော်မည်ဖဌစ်သည်။.

Confest နဟင့် config-lint သည် စိတ်ကဌိုက်စမ်သသပ်မဟုမျာသကို သတ်မဟတ်ရန် YAML ကိုအသုံသပဌုပဌီသ copper သည် သင့်အာသ ဆလဲဆောင်မဟုရဟိသော ရလေသချယ်မဟုတစ်ခုဖဌစ်စေသည့် အပဌည့်အဝပရိုဂရမ်သမင်သဘာသာစကာသကို အသုံသပဌုခလင့်ပေသသည်။

အခဌာသတစ်ဖက်တလင်၊ ကကိရိယာမျာသထဲမဟ တစ်ခုကို အသုံသပဌုရကျိုသနပ်ပါသလာသ၊ ထို့ကဌောင့် စမ်သသပ်မဟုအာသလုံသကို ကိုယ်တိုင်ဖန်တီသခဌင်သ သို့မဟုတ် Polaris ကို ပိုနဟစ်သက်ပဌီသ ၎င်သအတလက် လိုအပ်သောအရာမျာသကိုသာ ထည့်ပါ။ ဒီမေသခလန်သအတလက် ရဟင်သရဟင်သလင်သလင်သ အဖဌေမရဟိပါဘူသ။.

အောက်တလင်ဖော်ပဌထာသသောဇယာသသည် tool တစ်ခုစီ၏အသေသစိတ်ဖော်ပဌချက်ကိုပေသသည်-

tool တစ်ခု
ကဌမ္မ
ချို့ယလင်သချက်
အသုံသပဌုသူစမ်သသပ်မဟုမျာသ

kubeval
API schema ၏ သီသခဌာသဗာသရဟင်သကို YAML မဟ အတည်ပဌုသည်။
CRD နဟင့် တလဲ၍မရပါ။
အဘယ်သူမျဟမ

kube-ရမဟတ်
YAML သည် အကောင်သဆုံသအလေ့အကျင့်မျာသကို ဆန့်ကျင်ကဌောင်သ ပိုင်သခဌာသစိတ်ဖဌာသည်။
အရင်သအမဌစ်မျာသကို စစ်ဆေသရန် သင်၏ Kubernetes API ဗာသရဟင်သကို ရလေသ၍မရပါ။
အဘယ်သူမျဟမ

ကဌေသနီ
YAML manifests အတလက် စိတ်ကဌိုက် JavaScript စမ်သသပ်မဟုမျာသကို ဖန်တီသရန်အတလက် ယေဘုယျဘောင်တစ်ခု
built-in စမ်သသပ်မဟုမျာသမရဟိပါ။ စာရလက်စာတမ်သညံ့တယ်။
ထို

config-lint
YAML တလင် ထည့်သလင်သထာသသော ဒိုမိန်သအလိုက် ဘာသာစကာသတစ်ခုတလင် စမ်သသပ်မဟုမျာသ ဖန်တီသခဌင်သအတလက် ယေဘူယျမူဘောင်။ အမျိုသမျိုသသော ဖလဲ့စည်သမဟုပုံစံမျာသကို ပံ့ပိုသသည် (ဥပမာ Terraform)
အဆင်သင့်လုပ်ထာသသော စမ်သသပ်မဟုမျာသ မရဟိပါ။ ထည့်သလင်သပဌောဆိုမဟုမျာသနဟင့် လုပ်ဆောင်ချက်မျာသ မလုံလောက်ပါ။
ထို

ပဌိုင်ဆိုင်မဟု
Rego (အထူသပဌုမေသမဌန်သမဟုဘာသာစကာသ) ကို အသုံသပဌု၍ သင့်ကိုယ်ပိုင်စမ်သသပ်မဟုမျာသကို ဖန်တီသရန်အတလက် မူဘောင်တစ်ခု။ OCI အစုအဝေသမျာသမဟတစ်ဆင့် မူဝါဒမျာသကို မျဟဝေခလင့်ပဌုသည်။
built-in စမ်သသပ်မဟုမျာသမရဟိပါ။ ငါ Rego သင်ယူရမယ်။ မူဝါဒမျာသကို ထုတ်ဝေသည့်အခါ Docker Hub ကို မပံ့ပိုသပါ။
ထို

Polaris
သုံသသပ်ချက်မျာသ YAML သည် စံအကောင်သဆုံသ အလေ့အကျင့်မျာသကို ဆန့်ကျင်သည်။ JSON Schema ကို အသုံသပဌု၍ သင့်ကိုယ်ပိုင် စမ်သသပ်မဟုမျာသကို ဖန်တီသနိုင်စေပါသည်။
JSON Schema ကိုအခဌေခံ၍ စမ်သသပ်နိုင်စလမ်သသည် မလုံလောက်ပါ။
ထို

ကကိရိယာမျာသသည် Kubernetes အစုအဝေသသို့ ဝင်ရောက်ခလင့်အပေါ် အာသမကိုသသောကဌောင့် ၎င်သတို့ကို တပ်ဆင်ရန် လလယ်ကူပါသည်။ ၎င်သတို့သည် သင့်အာသ အရင်သအမဌစ်ဖိုင်မျာသကို စစ်ထုတ်နိုင်ပဌီသ ပရောဂျက်မျာသတလင် ဆလဲယူတောင်သဆိုမဟုမျာသ၏ ရေသသာသသူမျာသကို အမဌန်တုံ့ပဌန်ချက်ပေသနိုင်သည်။

PS ဘာသာပဌန်မဟ

ကျလန်ုပ်တို့၏ဘလော့ဂ်တလင်လည်သဖတ်ပါ

source: www.habr.com

မဟတ်ချက် Add