เดเตเดฑเดฟเดชเตเดชเต. เดตเดฟเดตเตผเดคเตเดคเดจเด.: K8s เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดเตพเดเตเดเดพเดฏเตเดณเตเดณ YAML เดเตเตบเดซเดฟเดเดฑเตเดทเดจเตเดเดณเตเดเต เดเดฃเตเดฃเด เดตเตผเดฆเตเดงเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเดจเตเดธเดฐเดฟเดเตเดเต, เด เดตเดฏเตเดเต เดธเตเดตเดฏเดฎเตเดตเดฏเตเดณเตเดณ เดชเดฐเดฟเดถเตเดงเดจเดฏเตเดเต เดเดตเดถเตเดฏเดเดค เดเตเดเตเดคเตฝ เดเตเดเตเดคเตฝ เด เดเดฟเดฏเดจเตเดคเดฟเดฐเดฎเดพเดฏเดฟ เดฎเดพเดฑเตเดจเตเดจเต. เด เด เดตเดฒเตเดเดจเดคเตเดคเดฟเดจเตเดฑเต เดฐเดเดฏเดฟเดคเดพเดตเต เด เดเดพเดธเตโเดเตเดเดฟเดจเดพเดฏเดฟ เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เดชเดฐเดฟเดนเดพเดฐเดเตเดเตพ เดคเดฟเดฐเดเตเดเตเดเตเดเตเดเตเด เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เด เดต เดเดเตเดเดจเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเตเดตเตเดจเตเดจเต เดเดพเดฃเตเดจเตเดจเดคเดฟเดจเต เดตเดฟเดจเตเดฏเดพเดธเด เดเดฐเต เดเดฆเดพเดนเดฐเดฃเดฎเดพเดฏเดฟ เดเดชเดฏเตเดเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดคเต. เด เดตเดฟเดทเดฏเดคเตเดคเดฟเตฝ เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดณเตเดณเดตเตผเดเตเดเต เดเดคเต เดตเดณเดฐเต เดตเดฟเดเตเดเดพเดจเดชเตเดฐเดฆเดฎเดพเดฏเดฟ เดฎเดพเดฑเดฟ.
เด เดเตเดเต เดกเดฟ.เดเตผ.: เด เดฒเตเดเดจเด เดฎเดฟเดเดเตเด เดฐเตเดคเดฟเดเตพเดเตเดเตเด เดเดตเดถเตเดฏเดเดคเดเตพเดเตเดเตเด เดเดคเดฟเดฐเดพเดฏเดฟ Kubernetes YAML เดซเดฏเดฒเตเดเตพ เดธเดพเดงเตเดเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เดตเดฟเดฒเดฏเดฟเดฐเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเตเดฎเดพเดฏเดฟ เดเดฑเต เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเดเต เดเตเดณเตเดเดณเต เดคเดพเดฐเดคเดฎเตเดฏเด เดเตเดฏเตเดฏเตเดจเตเดจเต.
เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเต เดเตเดฒเดฟเดญเดพเดฐเดเตเดเตพ เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ YAML เดกเตเดเตเดฏเตเดฎเตเดจเตเดฑเตเดเดณเตเดเต เดฐเตเดชเดคเตเดคเดฟเดฒเดพเดฃเต เดจเดฟเตผเดตเดเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดคเต. เดฎเดพเดจเดฟเดซเตเดธเตเดฑเตเดฑเต เดซเดฏเดฒเตเดเตพ เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเดเตเดเดณเต เดฌเดจเตเดงเดเตเดเดณเต เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดฌเตเดฆเตเดงเดฟเดฎเตเดเตเดเดพเดฃเต YAML-เดฒเต เดเดฐเต เดชเตเดฐเดถเตโเดจเด.
เดเตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเตเดเตเดเต เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดเดฒเตเดฒเดพ เดเดฟเดคเตเดฐเดเตเดเดณเตเด เดตเดฟเดถเตเดตเดธเดจเตเดฏเดฎเดพเดฏ เดฐเดเดฟเดธเตเดเตเดฐเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเดพเดฃเต เดตเดฐเตเดจเตเดจเดคเตเดจเตเดจเต เดเดฑเดชเตเดชเดพเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเตเดเตเดเดฟเตฝ เดเดจเตเดคเตเดเตเดฏเตเดฏเตเด?
PodDisruptionBudgets เดเดฒเตเดฒเดพเดคเตเดค เดกเดฟเดชเตเดฒเตเดฏเตโเดฎเตเดจเตเดฑเตเดเตพ เดเตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเตเดเตเดเต เด เดฏเดฏเตโเดเตเดเตเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดจเดฟเดเตเดเต เดเดเตเดเดจเต เดคเดเดฏเดพเดจเดพเดเตเด?
เดตเดฟเดเดธเดจ เดเดเตเดเดคเตเดคเดฟเตฝ เดชเดฟเดถเดเตเดเดณเตเด เดจเดฏ เดฒเดเดเดจเดเตเดเดณเตเด เดคเดฟเดฐเดฟเดเตเดเดฑเดฟเดฏเดพเตป เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเดเต เดเตเดธเตเดฑเตเดฑเดฟเดเดเดฟเดจเตเดฑเต เดธเดเดฏเตเดเดจเด เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต. เดเดคเต เดฑเดฟเดธเตเดดเตโเดธเต เดจเดฟเตผเดตเดเดจเดเตเดเตพ เดเตเดคเตเดฏเดตเตเด เดธเตเดฐเดเตเดทเดฟเดคเดตเตเดฎเดพเดฃเตเดจเตเดจเตเดณเตเดณ เดเตเดฏเดพเดฐเดจเตเดฑเดฟ เดตเตผเดฆเตเดงเดฟเดชเตเดชเดฟเดเตเดเตเดเดฏเตเด เดเตฝเดชเตเดชเดพเดฆเดจ เดเตเดฒเดฟเดญเดพเดฐเด เดฎเดฟเดเดเตเด เดฐเตเดคเดฟเดเตพ เดชเดฟเดจเตเดคเตเดเดฐเดพเดจเตเดณเตเดณ เดธเดพเดงเตเดฏเดค เดตเตผเดฆเตเดงเดฟเดชเตเดชเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต.
เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเต เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเดเต YAML เดซเดฏเตฝ เดชเดฐเดฟเดถเตเดงเดจเดพ เดเดเตเดเตเดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเต เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดตเดฟเดญเดพเดเดเตเดเดณเดพเดฏเดฟ เดคเดฟเดฐเดฟเดเตเดเดพเด:
- API เดตเดพเดฒเดฟเดกเตเดฑเตเดฑเดฑเตเดเตพ. เด เดตเดฟเดญเดพเดเดคเตเดคเดฟเดฒเต เดเตเดณเตเดเตพ, Kubernetes API เดธเตเตผเดตเดฑเดฟเดจเตเดฑเต เดเดตเดถเตเดฏเดเดคเดเตพเดเตเดเตเดคเดฟเดฐเต YAML เดฎเดพเดจเดฟเดซเตเดธเตเดฑเตเดฑเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต.
- เดฑเตเดกเดฟ เดเตเดธเตเดฑเตเดฑเตผเดฎเดพเตผ. เด เดตเดฟเดญเดพเดเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดเตเดณเตเดเตพ เดธเตเดฐเดเตเดท, เดฎเดฟเดเดเตเด เดฐเตเดคเดฟเดเตพ เดชเดพเดฒเดฟเดเตเดเตฝ เดคเตเดเดเตเดเดฟเดฏเดตเดฏเตโเดเตเดเดพเดฏเตเดณเตเดณ เดฑเตเดกเดฟเดฎเตเดฏเตเดกเต เดเตเดธเตเดฑเตเดฑเตเดเตพเดเตเดเตเดชเตเดชเด เดตเดฐเตเดจเตเดจเต.
- เดเดทเตโเดเดพเดจเตเดธเตเดค เดฎเตเดฒเตเดฏเดจเดฟเตผเดฃเตเดฃเดฏเดเตเดเดพเตผ. เดตเดฟเดตเดฟเดง เดญเดพเดทเดเดณเดฟเตฝ เดเดทเตโเดเดพเดจเตเดธเตเดค เดชเดฐเดฟเดถเตเดงเดจเดเตพ เดธเตเดทเตโเดเดฟเดเตเดเดพเตป เด เดตเดฟเดญเดพเดเดคเตเดคเดฟเดจเตเดฑเต เดชเตเดฐเดคเดฟเดจเดฟเดงเดฟเดเตพ เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, Rego, Javascript.
เด เดฒเตเดเดจเดคเตเดคเดฟเตฝ เดเดเตเดเตพ เดเดฑเต เดตเตเดฏเดคเตเดฏเดธเตเดค เดเดชเดเดฐเดฃเดเตเดเตพ เดตเดฟเดตเดฐเดฟเดเตเดเตเดเดฏเตเด เดคเดพเดฐเดคเดฎเตเดฏเด เดเตเดฏเตเดฏเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด:
- เดเตเดฌเตเดตเตฝ;
- เดเตเดฌเต-เดธเตเดเตเตผ;
- เดเตเตบเดซเดฟเดเดฑเตเดทเตป-เดฒเดฟเดจเตเดฑเต;
- เดเตเดฎเตเดชเต;
- เดเดฑเตเดฑเตเดฎเตเดเตเดเตฝ;
- เดชเตเดณเดพเดฐเดฟเดธเต.
เดถเดฐเดฟ, เดจเดฎเตเดเตเดเต เดเดฐเดเดญเดฟเดเตเดเดพเด!
เดตเดฟเดจเตเดฏเดพเดธเดเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต
เดเตเดณเตเดเตพ เดคเดพเดฐเดคเดฎเตเดฏเด เดเตเดฏเตเดฏเดพเตป เดคเตเดเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดฎเตเดฎเตเดชเต, เด เดต เดชเดฐเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฟเดฒ เดชเดถเตเดเดพเดคเตเดคเดฒเด เดธเตเดทเตเดเดฟเดเตเดเดพเด.
เดเตเดตเดเตเดฏเตเดณเตเดณ เดฎเดพเดจเดฟเดซเตเดธเตเดฑเตเดฑเตเดฏเดฟเตฝ เดจเดฟเดฐเดตเดงเดฟ เดชเดฟเดถเดเตเดเดณเตเด เดฎเดฟเดเดเตเด เดฐเตเดคเดฟเดเตพ เดชเดพเดฒเดฟเดเตเดเดพเดคเตเดคเดคเตเด เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต: เด เดตเดฏเดฟเตฝ เดเดคเตเดฐเดฏเตเดฃเตเดฃเด เดจเดฟเดเตเดเตพเดเตเดเต เดเดฃเตเดเตเดคเตเดคเดพเดจเดพเดเตเด?
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-เดฒเตเดเตเดเต "เดนเดฒเต เดตเตเตพเดกเต" เดธเดจเตเดฆเตเดถเดคเตเดคเดฟเดฒเตเดเต เดชเตเดฐเดคเดฟเดเดฐเดฟเดเตเดเตเด เดเดจเตเดจเดคเดพเดฃเต เดชเตเดฐเดงเดพเดจ เดเตเดฎเดคเดฒเดฏเตเดณเตเดณ เดเดฐเต เดตเตเดฌเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเต เดฎเดพเดจเดฟเดซเตเดธเตเดฑเตเดฑเต เดตเดฟเดตเดฐเดฟเดเตเดเตเดจเตเดจเต. เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดเดฎเดพเตปเดกเต เดเดชเดฏเตเดเดฟเดเตเดเต เดเดคเต เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเดพเดจเดพเดเตเด:
kubectl apply -f hello-world.yaml
เด เดคเดฟเดจเดพเตฝ - เดเตเดฒเดฟ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเด:
kubectl port-forward svc/http-echo 8080:5678
เดเดชเตเดชเตเตพ เดชเตเดเตเด
1. เดเตเดฌเตเดตเตฝ
เด
เดเดฟเดธเตเดฅเดพเดจเดคเตเดคเดฟเตฝ
เดฏเดฅเดพเตผเดคเตเดฅ เดฒเตเดเดจเด เดเดดเตเดคเตเดจเตเดจ เดธเดฎเดฏเดคเตเดคเต, เดชเดคเดฟเดชเตเดชเต 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)
เดตเดฟเดเดฏเดเดฐเดฎเดพเดฃเตเดเตเดเดฟเตฝ, เดเดเตเดธเดฟเดฑเตเดฑเต เดเตเดกเต 0 เดเดชเดฏเตเดเดฟเดเตเดเต kubeval เดชเตเดฑเดคเตเดคเตเดเดเดเตเดเตเด. เดจเดฟเดเตเดเตพเดเตเดเต เดเดคเต เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดฐเตเดคเดฟเดฏเดฟเตฝ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเด:
$ echo $?
0
เดฎเดฑเตเดฑเตเดฐเต เดฎเดพเดจเดฟเดซเตเดธเตเดฑเตเดฑเต เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฎเตเดเตเดเต เดเดชเตเดชเตเตพ 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
, เดชเตเดกเดฟเดจเตเดฑเต เดฒเตเดฌเดฒเตเดฎเดพเดฏเดฟ เดชเตเดฐเตเดคเตเดคเดชเตเดชเตเดเตเดจเตเดจ เดเดฐเต เดธเตเดฒเดเตเดเตผ เดเตพเดชเตเดชเตเดเตเดคเตเดคเดฃเด. เดฎเตเดเดณเดฟเดฒเต เดฎเดพเดจเดฟเดซเตเดธเตเดฑเตเดฑเดฟเตฝ เดธเตเดฒเดเตเดเตผ เดเตพเดชเตเดชเตเดเตเดจเตเดจเดฟเดฒเตเดฒ, เด
เดคเดฟเดจเดพเตฝ 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
เดเตเดฌเตเดตเตฝ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต เดจเตฝเดเดฟเดฏ เดคเตเดฑเตเดฑเต เดเดคเดพเดฃเต. เดเดฐเต เดธเตเดฒเดเตเดเตผ เดเตเตผเดคเตเดคเตเดเตเดฃเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต เดเดคเต เดชเดฐเดฟเดนเดฐเดฟเดเตเดเดพเดจเดพเดเตเด:
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
)
เดเตเดฌเตเดตเตฝ เดชเตเดฒเตเดณเตเดณ เดเดชเดเดฐเดฃเดเตเดเดณเตเดเต เดชเตเดฐเดฏเตเดเดจเด, เดตเดฟเดจเตเดฏเดพเดธ เดเดเตเดฐเดคเตเดคเดฟเตฝ เดคเดจเตเดจเต เดเดคเตเดคเดฐเด เดชเดฟเดถเดเตเดเตพ เดเดฃเตเดเตเดคเตเดคเดพเดจเดพเดเตเด เดเดจเตเดจเดคเดพเดฃเต.
เดเตเดเดพเดคเต, เด เดชเดฐเดฟเดถเตเดงเดจเดเตพเดเตเดเต เดเตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเตเดเตเดเต เดเดเตโเดธเดธเต เดเดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ; เด เดต เดเดซเตโเดฒเตเดจเดพเดฏเดฟ เดจเดเดคเตเดคเดพเด.
เดกเดฟเดซเตเตพเดเตเดเดพเดฏเดฟ, เดเดฑเตเดฑเดตเตเด เดชเตเดคเดฟเดฏ Kubernetes API เดธเตเดเตเดฎเดฏเตโเดเตเดเตเดคเดฟเดฐเดพเดฏ เดเดฑเดตเดฟเดเดเตเดเตพ kubeval เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดฎเดฟเดเตเด เดเตเดธเตเดเดณเดฟเดฒเตเด เดจเดฟเดเตเดเตพ เดเดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตโเด Kubernetes เดฑเดฟเดฒเตเดธเดฟเดจเตเดคเดฟเดฐเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต. เดชเดคเดพเด เดเดชเดฏเตเดเดฟเดเตเดเต เดเดคเต เดเตเดฏเตเดฏเดพเด --kubernetes-version
:
$ kubeval --kubernetes-version 1.16.1 base-valid.yaml
เดชเดคเดฟเดชเตเดชเต เดซเตเตผเดฎเดพเดฑเตเดฑเดฟเตฝ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเดฃเด เดเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเด Major.Minor.Patch
.
เดธเตเดฅเดฟเดฐเตเดเดฐเดฃเดคเตเดคเต เดชเดฟเดจเตเดคเตเดฃเดฏเตเดเตเดเตเดจเตเดจ เดชเดคเดฟเดชเตเดชเตเดเดณเตเดเต เดเดฐเต เดฒเดฟเดธเตโเดฑเตเดฑเดฟเดจเดพเดฏเดฟ, เดฆเดฏเดตเดพเดฏเดฟ เดฑเดซเตผ เดเตเดฏเตเดฏเตเด --schema-location
.
เดตเตเดฏเดเตเดคเดฟเดเดค YAML เดซเดฏเดฒเตเดเตพเดเตเดเต เดชเตเดฑเดฎเต, kubeval-เดจเต เดกเดฏเดฑเดเตเดเดฑเดฟเดเตพ, stdin เดเดจเตเดจเดฟเดตเดฏเดฟเดฒเตเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเดจเดพเดเตเด.
เดเตเดเดพเดคเต, เดเตเดฌเตเดตเตฝ เดธเดฟเด เดชเตเดชเตเดชเตเดฒเตเดจเดฟเดฒเตเดเตเดเต เดเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เดธเดเดฏเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต. เดเตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเตเดเตเดเต เดฎเดพเดจเดฟเดซเตเดธเตเดฑเตเดฑเตเดเตพ เด เดฏเดฏเตโเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดเตเดธเตเดฑเตเดฑเตเดเตพ เดจเดเดคเตเดคเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเดตเตผเดเตเดเต, kubeval เดฎเตเดจเตเดจเต เดเดเตเดเตโเดชเตเดเตเดเต เดซเตเตผเดฎเดพเดฑเตเดฑเตเดเดณเต เดชเดฟเดจเตเดคเตเดฃเดฏเตโเดเตเดเตเดจเตเดจเต เดเดจเตเดจเดฑเดฟเดฏเตเดจเตเดจเดคเดฟเตฝ เดธเดจเตเดคเตเดทเดฎเตเดฃเตเดเต:
- เดชเตเดฒเตเดฏเดฟเตป เดเตเดเตเดธเตเดฑเตเดฑเต;
- JSON;
- เดเตเดธเตเดฑเตเดฑเต เดเดจเดฟเดคเดฟเดเดเต เดชเตเดฐเตเดเตเดเตเดเตเดเตเตพ (TAP).
เดเดตเดถเตเดฏเดฎเตเดณเตเดณ เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดซเดฒเดเตเดเดณเตเดเต เดเดฐเต เดธเดเดเตเดฐเดนเด เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดเดเตเดเตเดชเตเดเตเดเดฟเดจเตเดฑเต เดเตเดเตเดคเตฝ เดชเดพเดดเตเดธเดฟเดเดเดฟเดจเดพเดฏเดฟ เดเดคเตเดเตเดเดฟเดฒเตเด เดซเตเตผเดฎเดพเดฑเตเดฑเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเดพเด.
เดเตเดฌเตเดตเดฒเดฟเดจเตเดฑเต เดเดฐเต เดชเตเดฐเดพเดฏเตเดฎ, เดเดธเตเดฑเตเดฑเด เดฑเดฟเดธเตเดดเตโเดธเต เดกเตเดซเดจเดฟเดทเดจเตเดเตพ (เดธเดฟเดเตผเดกเดฟ) เดชเดพเดฒเดฟเดเตเดเตเดจเตเดจเตเดฃเตเดเตเดฏเตเดจเตเดจเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเตป เดจเดฟเดฒเดตเดฟเตฝ เด
เดคเดฟเดจเต เดเดดเดฟเดฏเดฟเดฒเตเดฒ เดเดจเตเดจเดคเดพเดฃเต. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, kubeval เดเตเตบเดซเดฟเดเตผ เดเตเดฏเตเดฏเดพเตป เดธเดพเดงเดฟเดเตเดเตเด
เดตเดฟเดญเดตเดเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เดตเดฟเดฒเดฏเดฟเดฐเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เดเดฐเต เดฎเดฟเดเดเตเด เดเดชเดเดฐเดฃเดฎเดพเดฃเต เดเตเดฌเตเดตเตฝ; เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดชเดฐเตเดเตเดทเดฏเดฟเตฝ เดตเดฟเดเดฏเดฟเดเตเดเตเดจเตเดจเดคเต เดฑเดฟเดธเตเดดเตโเดธเต เดฎเดฟเดเดเตเด เดธเดฎเตเดชเตเดฐเดฆเดพเดฏเดเตเดเดณเตเดฎเดพเดฏเดฟ เดชเตเดฐเตเดคเตเดคเดชเตเดชเตเดเตเดจเตเดจเตเดตเตเดจเตเดจเต เดเดฑเดชเตเดชเตเดจเตฝเดเตเดจเตเดจเดฟเดฒเตเดฒ เดเดจเตเดจเดคเต เดเดจเตเดจเดฟเดชเตเดชเดฑเดฏเตเดฃเตเดเดคเดพเดฃเต.
เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเดพเดเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต latest
เดเดฐเต เดเดฃเตเดเตเดฏเตเดจเดฑเดฟเตฝ เดฎเดฟเดเดเตเด เดฐเตเดคเดฟเดเตพ เดชเดพเดฒเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, kubeval เดเดคเต เดเดฐเต เดชเดฟเดถเดเดพเดฏเดฟ เดเดฃเดเตเดเดพเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ, เด
เดคเต เดฑเดฟเดชเตเดชเตเตผเดเตเดเต เดเตเดฏเตเดฏเตเดจเตเดจเดฟเดฒเตเดฒ. เด
เดคเดพเดฏเดคเต, เด
เดคเตเดคเดฐเด YAML-เดจเตเดฑเต เดธเตเดฅเดฟเดฐเตเดเดฐเดฃเด เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเตเดเดณเดฟเดฒเตเดฒเดพเดคเต เดชเตเตผเดคเตเดคเดฟเดฏเดพเดเตเด.
เดจเดฟเดเตเดเตพเดเตเดเต YAML เดตเดฟเดฒเดฏเดฟเดฐเตเดคเตเดคเดพเดจเตเด เดเดพเดเต เดชเตเดฒเตเดณเตเดณ เดฒเดเดเดจเดเตเดเตพ เดคเดฟเดฐเดฟเดเตเดเดฑเดฟเดฏเดพเดจเตเด เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดฃเตเดเตเดเตเดเดฟเตฝ เดเดจเตเดคเตเดเตเดฏเตเดฏเตเด latest
? เดฎเดฟเดเดเตเด เดฐเตเดคเดฟเดเตพเดเตเดเตเดคเดฟเดฐเต เดเดฐเต YAML เดซเดฏเตฝ เดเดเตเดเดจเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเด?
2. เดเตเดฌเต-เดธเตเดเตเตผ
- เดเดฃเตเดเตเดฏเตเดจเตผ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเต เดฑเตเดเตเดเต เดเดฏเดฟเดเตเดเดฒเตเดฒ.
- เดชเตเดกเต เดเดฐเตเดเตเดฏ เดชเดฐเดฟเดถเตเดงเดจเดเดณเตเดเต เดฒเดญเตเดฏเดค.
- เดเดฑเดตเดฟเดเดเตเดเตพเดเตเดเดพเดฏเตเดณเตเดณ เด เดญเตเดฏเตผเดคเตเดฅเดจเดเดณเตเด เดชเดฐเดฟเดงเดฟเดเดณเตเด เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเดจเตเดจเต.
เดชเดฐเดฟเดถเตเดงเดจเดพ เดซเดฒเดเตเดเดณเต เด เดเดฟเดธเตเดฅเดพเดจเดฎเดพเดเตเดเดฟ, เดฎเตเดจเตเดจเต เดซเดฒเดเตเดเตพ เดจเตฝเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต: OK, เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต ะธ เดเตเดฐเดฟเดเตเดเดฟเดเตเดเตฝ.
เดจเดฟเดเตเดเตพเดเตเดเต เดเตบเดฒเตเดจเดฟเตฝ Kube-เดธเตเดเตเตผ เดชเดฐเตเดเตเดทเดฟเดเตเดเดพเดตเตเดจเตเดจเดคเดพเดฃเต เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดชเตเดฐเดพเดฆเตเดถเดฟเดเดฎเดพเดฏเดฟ เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเดพเด.
เดฏเดฅเดพเตผเดคเตเดฅ เดฒเตเดเดจเด เดเดดเตเดคเตเดฎเตเดชเตเตพ, เดเตเดฏเตเดฌเต-เดธเตเดเตเดฑเดฟเดจเตเดฑเต เดเดฑเตเดฑเดตเตเด เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต 1.7.0 เดเดฏเดฟเดฐเตเดจเตเดจเต.
เดจเดฎเตเดฎเตเดเต เดฎเดพเดจเดฟเดซเตเดธเตเดฑเตเดฑเดฟเตฝ เดชเดฐเตเดเตเดทเดฟเดเตเดเต เดจเตเดเตเดเดพเด 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
เดเดฒเตเดฒเดพ เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดฒเดเดเดจเดเตเดเดณเตเด เดเตพเดชเตเดชเตเดเต เดฎเดจเตเดทเตเดฏเตผเดเตเดเต เดตเดพเดฏเดฟเดเตเดเดพเดตเตเดจเตเดจ เดฐเตเดชเดคเตเดคเดฟเตฝ เดตเดฟเดตเดฐเดเตเดเตพ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต ะธ เดเตเดฐเดฟเดเตเดเดฟเดเตเดเตฝ, เดเดคเต เดตเดฟเดเดธเดจ เดธเดฎเดฏเดคเตเดคเต เดตเดณเดฐเตเดฏเดงเดฟเดเด เดธเดนเดพเดฏเดฟเดเตเดเตเดจเตเดจเต.
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 เดชเตเดฒเต) เดชเดพเดฒเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฑเดตเดฟเดเดเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเตป เดธเดพเดงเดฟเดเตเดเตเด. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เด เดตเดฟเดตเดฐเดเตเดเตพ เดเตเดฏเตเดฌเต-เดธเตโเดเตเดฑเดฟเตฝ เดคเดจเตเดจเต เดนเดพเตผเดกเตโเดเตเดกเต เดเตเดฏเตโเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต: เดจเดฟเดเตเดเตพเดเตเดเต เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเดฟเดจเตเดฑเต เดฎเดฑเตเดฑเตเดฐเต เดชเดคเดฟเดชเตเดชเต เดคเดฟเดฐเดเตเดเตเดเตเดเตเดเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ. เดจเดฟเดเตเดเดณเตเดเต เดเตเดฒเดธเตเดฑเตเดฑเตผ เด เดชเตโเดเตเดฐเตเดกเต เดเตเดฏเตเดฏเดพเดจเดพเดฃเต เดจเดฟเดเตเดเตพ เดเดฆเตเดฆเตเดถเดฟเดเตเดเตเดจเตเดจเตเดเตเดเดฟเดฒเต K8-เดจเตเดฑเต เดตเตเดฏเดคเตเดฏเดธเตเดค เดชเดคเดฟเดชเตเดชเตเดเดณเตเดณเตเดณ เดเดจเตเดจเดฟเดฒเดงเดฟเดเด เดเตเดฒเดธเตเดฑเตเดฑเดฑเตเดเตพ เดจเดฟเดเตเดเตพเดเตเดเตเดฃเตเดเตเดเตเดเดฟเตฝ เด เดชเดฐเดฟเดฎเดฟเดคเดฟ เดเดฐเต เดตเดฒเดฟเดฏ เดชเตเดฐเดถเตโเดจเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเตเด.
เด เดคเดฒเตเดฒ
เดเดคเดฟเดจเดเด เดเดฐเต เดชเตเดฐเดถเตเดจเดฎเตเดฃเตเดเต เด เด เดตเดธเดฐเด เดธเดพเดเตเดทเดพเดคเตเดเดฐเดฟเดเตเดเดพเดจเตเดณเตเดณ เดจเดฟเตผเดฆเตเดฆเตเดถเดคเตเดคเตเดเต.
เดเตเดฏเตเดฌเต-เดธเตเดเตเดฑเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดเตเดเตเดคเตฝ เดตเดฟเดตเดฐเดเตเดเตพ เดเดตเดฟเดเต เดเดพเดฃเดพเด
เดฎเดฟเดเดเตเด เดธเดฎเตเดชเตเดฐเดฆเดพเดฏเดเตเดเตพ เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดฎเดฟเดเดเตเด เดเดชเดเดฐเดฃเดฎเดพเดฃเต เดเตเดฏเตเดฌเต-เดธเตเดเตเตผ เดเตเดธเตเดฑเตเดฑเตเดเตพ, เดเดจเตเดจเดพเตฝ เดจเดฟเดเตเดเตพ เดเตเดธเตเดฑเตเดฑเดฟเตฝ เดฎเดพเดฑเตเดฑเดเตเดเตพ เดตเดฐเตเดคเตเดคเตเดเดฏเต เดจเดฟเดเตเดเดณเตเดเต เดธเตเดตเดจเตเดคเด เดจเดฟเดฏเดฎเดเตเดเตพ เดเตเตผเดเตเดเตเดเดฏเต เดเตเดฏเตเดฏเดฃเดฎเตเดเตเดเดฟเตฝ เดเดจเตเดคเตเดเตเดฏเตเดฏเตเด? เด เดฏเตเดฏเต, เดเดคเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ.
เดเตเดฏเตเดฌเต-เดธเตเดเตเตผ เดตเดฟเดชเตเดฒเตเดเดฐเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ: เดจเดฟเดเตเดเตพเดเตเดเต เด เดคเดฟเตฝ เดจเดฏเดเตเดเตพ เดเตเตผเดเตเดเดพเดจเต เดเตเดฐเดฎเตเดเดฐเดฟเดเตเดเดพเดจเต เดเดดเดฟเดฏเดฟเดฒเตเดฒ.
เดเดฎเตเดชเดจเดฟ เดชเตเดณเดฟเดธเดฟเดเตพ เดชเดพเดฒเดฟเดเตเดเตเดจเตเดจเตเดฃเตเดเตเดฏเตเดจเตเดจเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเตป เดจเดฟเดเตเดเตพเดเตเดเต เดเดทเตโเดเดพเดจเตเดธเตเดค เดชเดฐเดฟเดถเตเดงเดจเดเตพ เดเดดเตเดคเดฃเดฎเตเดเตเดเดฟเตฝ, เดจเดฟเดเตเดเตพเดเตเดเต เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดจเดพเดฒเต เดเตเดณเตเดเดณเดฟเตฝ เดเดจเตเดจเต เดเดชเดฏเตเดเดฟเดเตเดเดพเด: เดเตเตบเดซเดฟเดเต-เดฒเดฟเดจเตเดฑเต, เดเตเดชเตเดชเตผ, เดเตเตบเดซเตเดธเตเดฑเตเดฑเต เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดชเตเดณเดพเดฐเดฟเดธเต.
3.Config-lint
YAML, JSON, Terraform, CSV เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดซเดฏเดฒเตเดเตพ, Kubernetes เดฎเดพเดจเดฟเดซเตเดธเตเดฑเตเดฑเตเดเตพ เดเดจเตเดจเดฟเดต เดธเดพเดงเตเดเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เดเดชเดเดฐเดฃเดฎเดพเดฃเต เดเตเตบเดซเดฟเดเต-เดฒเดฟเดจเตเดฑเต.
เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต เดเดคเต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด
เดฏเดฅเดพเตผเดคเตเดฅ เดฒเตเดเดจเด เดเดดเตเดคเตเดจเตเดจ เดธเดฎเดฏเดคเตเดคเต เดจเดฟเดฒเดตเดฟเดฒเต เดฑเดฟเดฒเตเดธเต 1.5.0 เดเดฃเต.
เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเต เดฎเดพเดจเดฟเดซเตเดธเตเดฑเตเดฑเตเดเตพ เดธเดพเดงเตเดเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดฌเดฟเตฝเดฑเตเดฑเต-เดเตป เดเตเดธเตเดฑเตเดฑเตเดเตพ เดเตเตบเดซเดฟเดเต-เดฒเดฟเดจเตเดฑเดฟเดฒเดฟเดฒเตเดฒ.
เดเดคเตเดเตเดเดฟเดฒเตเด เดชเดฐเดฟเดถเตเดงเดจเดเตพ เดจเดเดคเตเดคเดพเตป, เดจเดฟเดเตเดเตพ เดเดเดฟเดคเดฎเดพเดฏ เดจเดฟเดฏเดฎเดเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต. เด เดต "เดฑเตเตพเดธเตเดฑเตเดฑเตเดเตพ" เดเดจเตเดจเต เดตเดฟเดณเดฟเดเตเดเตเดจเตเดจ YAML เดซเดฏเดฒเตเดเดณเดฟเตฝ เดเดดเตเดคเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต (เดจเดฟเดฏเดฎเดเตเดเตพ), เดเตเดเดพเดคเต เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดเดเดจเดฏเตเดฃเตเดเต:
version: 1
description: Rules for Kubernetes spec files
type: Kubernetes
files:
- "*.yaml"
rules:
# ัะฟะธัะพะบ ะฟัะฐะฒะธะป
(rule.yaml
)
เดจเดฎเตเดเตเดเต เดเดคเต เดเตเดเตเดคเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดชเด เดฟเดเตเดเดพเด:
- เดซเตเตฝเดกเต
type
เดเดคเต เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดเตเตบเดซเดฟเดเดฑเตเดทเตป-เดฒเดฟเดจเตเดฑเต เดเดชเดฏเตเดเดฟเดเตเดเตเดฎเตเดจเตเดจเต เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเตเดจเตเดจเต. K8s-เดจเต เดเดคเต เดชเตเดฐเดเดเดฎเดพเดฃเต เดเดชเตเดชเตเดดเตเดKubernetes
. - เดซเตเตฝเดกเดฟเตฝ
files
เดซเดฏเดฒเตเดเตพเดเตเดเต เดชเตเดฑเดฎเต, เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดกเดฏเดฑเดเตเดเดฑเดฟ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดพเตป เดเดดเดฟเดฏเตเด. - เดซเตเตฝเดกเต
rules
เดเดชเดฏเตเดเตเดคเต เดชเดฐเดฟเดถเตเดงเดจเดเตพ เดธเดเตเดเตเดเดฐเดฟเดเตเดเดพเตป เดเดฆเตเดฆเตเดถเดฟเดเตเดเตเดณเตเดณเดคเดพเดฃเต.
เดกเดฟเดชเตเดฒเตเดฏเตโเดฎเตเดจเตเดฑเดฟเดฒเต เดเดฟเดคเตเดฐเดเตเดเตพ เดเดฒเตเดฒเดพเดฏเตเดชเตเดชเตเดดเตเด เดเดฐเต เดตเดฟเดถเตเดตเดธเดจเตเดฏเดฎเดพเดฏ เดถเตเดเดฐเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเดพเดฃเต เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเตเดจเตเดจเต เดเดฑเดชเตเดชเดพเดเตเดเดพเตป เดจเดฟเดเตเดเตพ เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเตเดตเตเดจเตเดจเต เดชเดฑเดฏเดพเด. my-company.com/myapp:1.0
. เด
เดคเตเดคเดฐเดฎเตเดฐเต เดชเดฐเดฟเดถเตเดงเดจ เดจเดเดคเตเดคเตเดจเตเดจ เดเดฐเต เดเตเตบเดซเดฟเดเดฑเตเดทเตป-เดฒเดฟเดจเตเดฑเต เดจเดฟเดฏเดฎเด เดเดคเตเดชเตเดฒเต เดเดพเดฃเดชเตเดชเตเดเตเด:
- 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
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
)
เดฎเตเดเดณเดฟเดฒเตเดณเตเดณ เดฎเดพเดจเดฟเดซเตเดธเตเดฑเตเดฑเดฟเดจเตเดชเตเดชเด เดเดเตเดเตพ เด เดคเต เดเตเดธเตเดฑเตเดฑเต เดจเดเดคเตเดคเตเดจเตเดจเต. เดชเตเดฐเดถเตเดจเดเตเดเดณเตเดจเตเดจเตเด เดเดฃเตเดเตเดคเตเดคเดฟเดฏเดฟเดฒเตเดฒ:
$ config-lint -rules check_image_repo.yaml image-valid-mycompany.yaml
[]
YAML DSL เดเดชเดฏเตเดเดฟเดเตเดเต Kubernetes YAML เดฎเดพเดจเดฟเดซเตเดธเตเดฑเตเดฑเตเดเตพ เดธเดพเดงเตเดเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดจเดฟเดเตเดเดณเตเดเต เดธเตเดตเดจเตเดคเด เดเตเดธเตเดฑเตเดฑเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเดพเตป เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดตเดพเดเตเดฆเดพเดจ เดเดเตเดเดเตเดเตเดเดพเดฃเต เดเตเตบเดซเดฟเดเต-เดฒเดฟเดจเตเดฑเต.
เดเดจเตเดจเดพเตฝ เดจเดฟเดเตเดเตพเดเตเดเต เดเตเดเตเดคเตฝ เดธเดเตเดเตเตผเดฃเตเดฃเดฎเดพเดฏ เดฏเตเดเตเดคเดฟเดฏเตเด เดชเดฐเดฟเดถเตเดงเดจเดเดณเตเด เดตเตเดฃเดฎเตเดเตเดเดฟเตฝ เดเดจเตเดคเตเดเตเดฏเตเดฏเตเด? YAML เดเดคเดฟเดจเต เดตเดณเดฐเต เดชเดฐเดฟเดฎเดฟเดคเดฎเดฒเตเดฒเต? เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดชเตเตผเดฃเตเดฃ เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดเดเต เดญเดพเดทเดฏเดฟเตฝ เดเตเดธเตเดฑเตเดฑเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเดพเดจเดพเดฏเดพเดฒเต?
4. เดเตเดฎเตเดชเต
เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดเตเดธเตเดฑเตเดฑเตเดเดณเต เดตเดฟเดตเดฐเดฟเดเตเดเดพเตป YAML เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ เดเดจเตเดจเดคเดฟเดจเดพเตฝ เดเดคเต เดฐเดฃเตเดเดพเดฎเดคเตเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฃเต. เดชเดเดฐเด เดเดพเดตเดพเดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเดฟเตฝ เดเตเดธเตเดฑเตเดฑเตเดเตพ เดเดดเตเดคเดพเด. เดเตเดฎเตเดชเต เดจเดฟเดฐเดตเดงเดฟ เด เดเดฟเดธเตเดฅเดพเดจ เดเดชเดเดฐเดฃเดเตเดเดณเตเดณเตเดณ เดเดฐเต เดฒเตเดฌเตเดฐเดฑเดฟ เดจเตฝเดเตเดจเตเดจเต, เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเต เดเดฌเตโเดเดเตเดฑเตเดฑเตเดเดณเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดตเดฟเดตเดฐเดเตเดเตพ เดตเดพเดฏเดฟเดเตเดเดพเดจเตเด เดชเดฟเดถเดเตเดเตพ เดฑเดฟเดชเตเดชเตเตผเดเตเดเต เดเตเดฏเตเดฏเดพเดจเตเด เดจเดฟเดเตเดเดณเต เดธเดนเดพเดฏเดฟเดเตเดเตเดจเตเดจเต.
เดเตเดชเตเดชเตผ เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดเตเดเดเตเดเตพ เดเดคเดฟเตฝ เดเดพเดฃเดพเด
เดฏเดฅเดพเตผเดคเตเดฅ เดฒเตเดเดจเด เดเดดเตเดคเตเดจเตเดจ เดธเดฎเดฏเดคเตเดคเต เด เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟเดฏเตเดเต เดเดฑเตเดฑเดตเตเด เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเดพเดฃเต 2.0.1.
เดเตเตบเดซเดฟเดเตผ-เดฒเดฟเดจเตเดฑเต เดชเตเดฒเต, เดเตเดชเตเดชเดฑเดฟเดจเต เดฌเดฟเตฝเดฑเตเดฑเต-เดเตป เดเตเดธเตเดฑเตเดฑเตเดเตพ เดเดฒเตเดฒ. เดเดจเตเดจเต เดเดดเตเดคเดพเด. เดตเดฟเดจเตเดฏเดพเดธเดเตเดเตพ เดชเตเดฒเตเดณเตเดณ เดตเดฟเดถเตเดตเดธเดจเตเดฏเดฎเดพเดฏ เดถเตเดเดฐเดฃเดเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดฎเดพเดคเตเดฐเดฎเดพเดฏเดฟ เดเดฃเตเดเตเดฏเตโเดจเตผ เดเดฎเตเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเตเดฃเตเดเต เดเดจเตเดจเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเตป เด
เดจเตเดตเดฆเดฟเดเตเดเตเด 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
, เดเดฎเดพเตปเดกเต เดเดชเดฏเตเดเดฟเดเตเดเตเด 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
เดเตเดฎเตเดชเดฟเดจเตเดฑเต เดธเดนเดพเดฏเดคเตเดคเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต เดเตเดเตเดคเตฝ เดธเดเตเดเตเตผเดฃเตเดฃเดฎเดพเดฏ เดชเดฐเดฟเดถเตเดงเดจเดเตพ เดจเดเดคเตเดคเดพเดจเดพเดเตเดฎเตเดจเตเดจเต เดตเตเดฏเดเตเดคเดฎเดพเดฃเต - เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเตปเดเตเดฐเตเดธเตเดธเต เดฎเดพเดจเดฟเดซเตเดธเตเดฑเตเดฑเตเดเดณเดฟเดฒเต เดกเตเดฎเตเดฏเตเตป เดจเดพเดฎเดเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเด เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดชเตเดฐเดฟเดตเดฟเดฒเตเดเตเดกเต เดฎเตเดกเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจ เดชเตเดกเตเดเตพ เดจเดฟเดฐเดธเดฟเดเตเดเตเด.
เดเตเดฎเตเดชเดฟเดจเต เดตเดฟเดตเดฟเดง เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ เดเดฃเตเดเต:
DockerImage
เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เดเตปเดชเตเดเตเดเต เดซเดฏเตฝ เดตเดพเดฏเดฟเดเตเดเตเดเดฏเตเด เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดเดเตเดฐเดฟเดฌเตเดฏเตเดเตเดเตเดเดณเตเดณเตเดณ เดเดฐเต เดเดฌเตเดเดเตเดฑเตเดฑเต เดธเตเดทเตเดเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต:name
- เดเดฟเดคเตเดฐเดคเตเดคเดฟเดจเตเดฑเต เดชเตเดฐเต,tag
- เดเดฎเตเดเต เดเดพเดเต,registry
- เดเดฎเตเดเต เดฐเดเดฟเดธเตเดเตเดฐเดฟ,registry_url
- เดชเตเดฐเตเดเตเดเตเดเตเดเตเตพ (https://
) เดเตเดเดพเดคเต เดเดฎเตเดเต เดฐเดเดฟเดธเตเดเตเดฐเดฟ,fqin
- เดเดฟเดคเตเดฐเดคเตเดคเดฟเดจเตเดฑเต เดชเตเตผเดฃเตเดฃ เดธเตเดฅเดพเดจเด.
- เดซเดเดเตเดทเตป
findByName
เดคเดจเตเดจเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดคเดฐเด เด เดจเตเดธเดฐเดฟเดเตเดเต เดเดฐเต เดเดฑเดตเดฟเดเด เดเดฃเตเดเตเดคเตเดคเดพเตป เดธเดนเดพเดฏเดฟเดเตเดเตเดจเตเดจเต (kind
เดชเตเดฐเต ()name
) เดเตปเดชเตเดเตเดเต เดซเดฏเดฒเดฟเตฝ เดจเดฟเดจเตเดจเต. - เดซเดเดเตเดทเตป
findByLabels
เดเดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เดคเดฐเด เดเดชเดฏเตเดเดฟเดเตเดเต เดเดฐเต เดเดฑเดตเดฟเดเด เดเดฃเตเดเตเดคเตเดคเดพเตป เดธเดนเดพเดฏเดฟเดเตเดเตเดจเตเดจเต (kind
) เดเตเดเดพเดคเต เดฒเตเดฌเดฒเตเดเตพ (labels
).
เดจเดฟเดเตเดเตพเดเตเดเต เดฒเดญเตเดฏเดฎเดพเดฏ เดเดฒเตเดฒเดพ เดธเตเดตเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเดณเตเด เดเดพเดฃเดพเตป เดเดดเดฟเดฏเตเด
เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ เดเดคเต เดฎเตเดดเตเดตเตป เดเตปเดชเตเดเตเดเต YAML เดซเดฏเดฒเตเด เดเดฐเต เดตเตเดฐเดฟเดฏเดฌเดฟเดณเดฟเดฒเตเดเตเดเต เดฒเตเดกเต เดเตเดฏเตเดฏเตเดจเตเดจเต $$
เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเดฟเดเตเดเดฟเดจเดพเดฏเดฟ เดเดคเต เดฒเดญเตเดฏเดฎเดพเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต (jQuery เด
เดจเตเดญเดตเด เดเดณเตเดณเดตเตผเดเตเดเต เดชเดฐเดฟเดเดฟเดคเดฎเดพเดฏ เดเดฐเต เดธเดพเดเตเดเตเดคเดฟเดเดค).
เดเตเดชเตเดชเดฑเดฟเดจเตเดฑเต เดชเตเดฐเดงเดพเดจ เดจเตเดเตเดเด เดตเตเดฏเดเตเดคเดฎเดพเดฃเต: เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดญเดพเดทเดฏเดฟเตฝ เดตเตเดฆเดเตเดฆเตเดงเตเดฏเด เดเดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ, เดเตเดเดพเดคเต เดธเตเดเตเดฐเดฟเดเดเต เดเดจเตเดฑเตผเดชเตเดณเตเดทเตป, เดซเดเดเตเดทเดจเตเดเตพ เดฎเตเดคเดฒเดพเดฏเดต เดชเตเดฒเตเดณเตเดณ เดจเดฟเดเตเดเดณเตเดเต เดธเตเดตเดจเตเดคเด เดเตเดธเตเดฑเตเดฑเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเดพเตป เดจเดฟเดเตเดเตพเดเตเดเต เดตเดฟเดตเดฟเดง JavaScript เดธเดตเดฟเดถเตเดทเดคเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเดพเด.
เดเตเดชเตเดชเดฑเดฟเดจเตเดฑเต เดจเดฟเดฒเดตเดฟเดฒเต เดชเดคเดฟเดชเตเดชเต ES5 เด เดฒเตเดฒ, JavaScript เดเดเตเดเดฟเดจเตเดฑเต ES6 เดชเดคเดฟเดชเตเดชเดฟเดฒเดพเดฃเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเดคเต เดเดจเตเดจเดคเตเด เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเดฃเตเดเดคเดพเดฃเต.
เดตเดฟเดถเดฆเดพเดเดถเดเตเดเตพ เดฒเดญเตเดฏเดฎเดพเดฃเต
เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดจเดฟเดเตเดเตพเดเตเดเต เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ JavaScript เดเดทเตโเดเดชเตเดชเตเดเตเดจเตเดจเดฟเดฒเตเดฒเตเดเตเดเดฟเตฝ, เดเตเดฆเตเดฏเดเตเดเตพ เดธเตเดทเตโเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เดจเดฏเดเตเดเตพ เดตเดฟเดตเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดฎเดพเดฏเดฟ เดชเตเดฐเดคเตเดฏเตเดเด เดฐเตเดชเดเตฝเดชเตเดชเดจ เดเตเดฏเตโเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดญเดพเดทเดฏเดพเดฃเต เดจเดฟเดเตเดเตพ เดคเดฟเดฐเดเตเดเตเดเตเดเตเดเตเดจเตเดจเดคเตเดเตเดเดฟเตฝ, เดจเดฟเดเตเดเตพ เดเตเตบเดซเตโเดฑเตเดฑเดธเตเดฑเตเดฑเดฟเดฒเตเดเตเดเต เดถเตเดฐเดฆเตเดงเดฟเดเตเดเดฃเด.
5.เดฎเดคเตเดธเดฐเด
เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดกเดพเดฑเตเดฑ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เดเดเตเดเดเตเดเตเดเดพเดฃเต เดเตเตบเดซเตเดธเตเดฑเตเดฑเต. เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเต เดฎเดพเดจเดฟเดซเตเดธเตเดฑเตเดฑเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เด
เดจเตเดฏเตเดเตเดฏเดฎเดพเดฃเต. เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เด
เดจเตเดตเตเดทเดฃ เดญเดพเดท เดเดชเดฏเตเดเดฟเดเตเดเดพเดฃเต เดชเดฐเดฟเดถเตเดงเดจเดเตพ เดตเดฟเดตเดฐเดฟเดเตเดเตเดจเตเดจเดคเต
เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต เดเตเตบเดซเตเดธเตเดฑเตเดฑเต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเดพเด
เดฏเดฅเดพเตผเดคเตเดฅ เดฒเตเดเดจเด เดเดดเตเดคเตเดฎเตเดชเตเตพ, เดฒเดญเตเดฏเดฎเดพเดฏ เดเดฑเตเดฑเดตเตเด เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต 0.18.2 เดเดฏเดฟเดฐเตเดจเตเดจเต.
เดเตเตบเดซเดฟเดเตผ-เดฒเดฟเดจเตเดฑเต, เดเตเดชเตเดชเตผ เดเดจเตเดจเดฟเดตเดฏเตเดเตเดเต เดธเดฎเดพเดจเดฎเดพเดฏเดฟ, เดฌเดฟเตฝเดฑเตเดฑเต-เดเตป เดเตเดธเตเดฑเตเดฑเตเดเดณเตเดจเตเดจเตเดฎเดฟเดฒเตเดฒเดพเดคเตเดฏเดพเดฃเต เดเตเตบเดซเตเดธเตเดฑเตเดฑเตเด เดตเดฐเตเดจเตเดจเดคเต. เดจเดฎเตเดเตเดเต เด เดคเต เดชเดฐเตเดเตเดทเดฟเดเตเดเต เดธเตเดตเดจเตเดคเด เดจเดฏเด เดเดดเตเดคเดพเด. เดฎเตเดฎเตเดชเดคเตเดคเต เดเดฆเดพเดนเดฐเดฃเดเตเดเดณเดฟเดฒเตเดจเตเดจเดชเตเดฒเต, เดเดฃเตเดเตเดฏเตเดจเตผ เดเดฟเดคเตเดฐเดเตเดเตพ เดตเดฟเดถเตเดตเดธเดจเตเดฏเดฎเดพเดฏ เดเดฑเดตเดฟเดเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเดพเดฃเต เดเดเตเดคเตเดคเดคเตเดจเตเดจเต เดเดเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเด.
เดเดฐเต เดกเดฏเดฑเดเตเดเดฑเดฟ เดธเตเดทเตเดเดฟเดเตเดเตเด 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 เดซเดฏเดฒเดฟเตฝ เดจเดฎเตเดฎเตพ เดฌเตเดฒเตเดเตเดเต เดจเดฟเตผเดตเดเดฟเดเตเดเตเดจเตเดจเต deny
. เด
เดคเดฟเดจเตเดฑเต เดธเดคเตเดฏเด เดเดฐเต เดฒเดเดเดจเดฎเดพเดฏเดฟ เดเดฃเดเตเดเดพเดเตเดเดชเตเดชเตเดเตเดจเตเดจเต. เดฌเตเดฒเตเดเตเดเตเดเดณเดพเดฃเตเดเตเดเดฟเตฝ deny
เดจเดฟเดฐเดตเดงเดฟ, เดเตเตบเดซเตเดธเตเดฑเตเดฑเต เด
เดต เดชเดฐเดธเตเดชเดฐเด เดธเตเดตเดคเดจเตเดคเตเดฐเดฎเดพเดฏเดฟ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต, เดเตเดเดพเดคเต เดเดคเตเดเตเดเดฟเดฒเตเด เดฌเตเดฒเตเดเตเดเตเดเดณเตเดเต เดธเดคเตเดฏเดคเตเดคเต เดฒเดเดเดจเดฎเดพเดฏเดฟ เดเดฃเดเตเดเดพเดเตเดเตเดจเตเดจเต.
เดกเดฟเดซเตเตพเดเตเดเต เดเดเตเดเตโเดชเตเดเตเดเดฟเดจเต เดชเตเดฑเดฎเต, เดเตเตบเดซเตเดธเตเดฑเตเดฑเต JSON, TAP, เดเตเดฌเดฟเตพ เดซเตเตผเดฎเดพเดฑเตเดฑเต เดเดจเตเดจเดฟเดตเดฏเต เดชเดฟเดจเตเดคเตเดฃเดฏเตโเดเตเดเตเดจเตเดจเต - เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เดเดฐเต CI เดชเตเดชเตเดชเตโเดฒเตเดจเดฟเตฝ เดจเดฟเดเตเดเตพเดเตเดเต เดฑเดฟเดชเตเดชเตเตผเดเตเดเตเดเตพ เดเตพเดชเตเดชเตเดเตเดคเตเดคเดฃเดฎเตเดเตเดเดฟเตฝ เดตเดณเดฐเต เดเดชเดฏเตเดเดชเตเดฐเดฆเดฎเดพเดฏ เดธเดตเดฟเดถเตเดทเดค. เดซเตเดฒเดพเดเต เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต เดเดตเดถเตเดฏเดฎเตเดณเตเดณ เดซเตเตผเดฎเดพเดฑเตเดฑเต เดธเดเตเดเดฎเดพเดเตเดเดพเตป เดเดดเดฟเดฏเตเด --output
.
เดจเดฏเดเตเดเตพ เดกเตเดฌเดเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเต เดเดณเตเดชเตเดชเดฎเดพเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดเตเตบเดซเตเดธเตเดฑเตเดฑเดฟเดจเต เดเดฐเต เดซเตเดฒเดพเดเต เดเดฃเตเดเต --trace
. เดจเดฟเตผเดฆเตเดฆเดฟเดทเตโเด เดจเดฏ เดซเดฏเดฒเตเดเตพ เดเตเตบเดซเตเดธเตเดฑเตเดฑเต เดชเดพเดดเตโเดธเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเตเดเตเดเดจเต เดเดจเตเดจเดคเดฟเดจเตเดฑเต เดเดฐเต เดเตเดฐเตเดฏเตเดธเต เดเดคเต เดเดเตเดเตเดชเตเดเตเดเต เดเตเดฏเตเดฏเตเดจเตเดจเต.
เดเดธเดฟเด (เดเดชเตเดชเตบ เดเดฃเตเดเตเดฏเตโเดจเตผ เดเดจเดฟเดทเตเดฏเตเดฑเตเดฑเตเดตเต) เดฐเดเดฟเดธเตโเดเตเดฐเดฟเดเดณเดฟเตฝ เดเตผเดเตเดเดฟเดซเดพเดเตโเดฑเตเดฑเตเดเดณเดพเดฏเดฟ เดฎเดคเตเดธเดฐ เดจเดฏเดเตเดเตพ เดชเตเดฐเดธเดฟเดฆเตเดงเตเดเดฐเดฟเดเตเดเดพเดจเตเด เดชเดเตเดเดฟเดเดพเดจเตเด เดเดดเดฟเดฏเตเด.
ะะพะผะฐะฝะดั push
ะธ pull
เดเดฐเต เดชเตเดฐเดพเดตเดธเตเดคเต เดชเตเดฐเดธเดฟเดฆเตเดงเตเดเดฐเดฟเดเตเดเดพเดจเต เดตเดฟเดฆเตเดฐ เดฐเดเดฟเดธเตเดเตเดฐเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เดเดฐเต เดชเตเดฐเดพเดตเดธเตเดคเต เดตเตเดฃเตเดเตเดเตเดเตเดเดพเดจเต เดจเดฟเดเตเดเดณเต เด
เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต. เดชเตเดฐเดพเดฆเตเดถเดฟเด เดกเตเดเตเดเตผ เดฐเดเดฟเดธเตเดเตเดฐเดฟเดฏเดฟเตฝ เดเดเตเดเตพ เดธเตเดทเตเดเดฟเดเตเด เดจเดฏเด เดชเตเดฐเดธเดฟเดฆเตเดงเตเดเดฐเดฟเดเตเดเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเดพเด conftest push
.
เดจเดฟเดเตเดเดณเตเดเต เดชเตเดฐเดพเดฆเตเดถเดฟเด เดกเตเดเตเดเตผ เดฐเดเดฟเดธเตเดเตเดฐเดฟ เดเดฐเดเดญเดฟเดเตเดเตเด:
$ docker run -it --rm -p 5000:5000 registry
เดฎเดฑเตเดฑเตเดฐเต เดเตเตผเดฎเดฟเดจเดฒเดฟเตฝ, เดจเดฟเดเตเดเตพ เดจเตเดฐเดคเตเดคเต เดธเตเดทเตเดเดฟเดเตเด เดกเดฏเดฑเดเตเดเดฑเดฟเดฏเดฟเดฒเตเดเตเดเต เดชเตเดเตเด conftest-checks
เดคเดพเดดเต เดชเดฑเดฏเตเดจเตเดจ เดเดฎเดพเตปเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเด:
$ conftest push 127.0.0.1:5000/amitsaha/opa-bundle-example:latest
เดเดฎเดพเตปเดกเต เดตเดฟเดเดฏเดเดฐเดฎเดพเดฃเตเดเตเดเดฟเตฝ, เดเดคเตเดชเตเดฒเตเดณเตเดณ เดเดฐเต เดธเดจเตเดฆเตเดถเด เดจเดฟเดเตเดเตพ เดเดพเดฃเตเด:
2020/06/10 14:25:43 pushed bundle with digest: sha256:e9765f201364c1a8a182ca637bc88201db3417bacc091e7ef8211f6c2fd2609c
เดเดชเตเดชเตเตพ เดเดฐเต เดคเดพเตฝเดเตเดเดพเดฒเดฟเด เดกเดฏเดฑเดเตเดเดฑเดฟ เดธเตเดทเตเดเดฟเดเตเดเต เด
เดคเดฟเตฝ เดเดฎเดพเตปเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเด conftest pull
. เดฎเตเดฎเตเดชเดคเตเดคเต เดเดฎเดพเตปเดกเต เดธเตเดทเตเดเดฟเดเตเด เดชเดพเดเตเดเตเดเต เดเดคเต เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเตเด:
$ cd $(mktemp -d)
$ conftest pull 127.0.0.1:5000/amitsaha/opa-bundle-example:latest
เดคเดพเตฝเดเตเดเดพเดฒเดฟเด เดกเดฏเดฑเดเตเดเดฑเดฟเดฏเดฟเตฝ เดเดฐเต เดเดชเดกเดฏเดฑเดเตโเดเดฑเดฟ เดฆเตเดถเตเดฏเดฎเดพเดเตเด policy
เดเดเตเดเดณเตเดเต เดจเดฏ เดซเดฏเตฝ เด
เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต:
$ tree
.
โโโ policy
โโโ check_image_registry.rego
เดถเตเดเดฐเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเตเดฐเดฟเดเตเดเต เดเตเดธเตเดฑเตเดฑเตเดเตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด:
$ 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 เดเดคเตเดตเดฐเต เดชเดฟเดจเตเดคเตเดฃเดฏเตโเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ. เด
เดคเดฟเดจเดพเตฝ เดจเดฟเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ เดจเดฟเดเตเดเตพ เดญเดพเดเตเดฏเดตเดพเดจเดพเดฃเตเดจเตเดจเต เดเดฐเตเดคเตเด
เดเตผเดเตเดเดฟเดซเดพเดเตโเดฑเตเดฑเต เดซเตเตผเดฎเดพเดฑเตเดฑเต เดธเดฎเดพเดจเดฎเดพเดฃเต
เดชเตเดณเดฟเดธเดฟ เดชเดเตเดเดฟเดเดฒเดฟเดจเตเดฏเตเด เดเตเตบเดซเตเดธเตเดฑเตเดฑเดฟเดจเตเดฑเต เดฎเดฑเตเดฑเต เดธเดตเดฟเดถเตเดทเดคเดเดณเตเดฏเตเด เดเตเดฑเดฟเดเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต เดเตเดเตเดคเดฒเดฑเดฟเดฏเดพเตป เดเดดเดฟเดฏเตเด
เดเตเดธเดจเตเดฎเตเดเตเดธ. Polaris
เด เดฒเตเดเดจเดคเตเดคเดฟเตฝ เดเตผเดเตเด เดเตเดฏเตเดฏเตเดจเตเดจ เด
เดตเดธเดพเดจ เดเดชเดเดฐเดฃเด
เดชเตเดณเดพเดฐเดฟเดธเต เดเดฐเต เดเตเดฒเดธเตเดฑเตเดฑเดฑเดฟเตฝ เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเดพเด เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดฎเดพเตปเดกเต เดฒเตเตป เดฎเตเดกเดฟเตฝ เดเดชเดฏเตเดเดฟเดเตเดเดพเด. เดจเดฟเดเตเดเตพ เดเดนเดฟเดเตเดเดคเตเดชเตเดฒเต, เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเต เดฎเดพเดจเดฟเดซเตเดธเตเดฑเตเดฑเตเดเดณเต เดธเตเดฅเดฟเดฐเดฎเดพเดฏเดฟ เดตเดฟเดถเดเดฒเดจเด เดเตเดฏเตเดฏเดพเตป เดเดคเต เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต.
เดเดฎเดพเตปเดกเต เดฒเตเตป เดฎเตเดกเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดฎเตเดชเตเตพ, เดธเตเดฐเดเตเดทเดฏเตเด เดฎเดฟเดเดเตเด เดฐเตเดคเดฟเดเดณเตเด (เดเตเดฏเตเดฌเต-เดธเตเดเตเดฑเดฟเดจเต เดธเดฎเดพเดจเดฎเดพเดฏเดคเต) เดชเตเดฒเตเดณเตเดณ เดฎเตเดเดฒเดเตพ เดเตพเดเตเดเตเดณเตเดณเตเดจเตเดจ เดฌเดฟเตฝเดฑเตเดฑเต-เดเตป เดเตเดธเตเดฑเตเดฑเตเดเตพ เดฒเดญเตเดฏเดฎเดพเดฃเต. เดเตเดเดพเดคเต, เดจเดฟเดเตเดเตพเดเตเดเต เดจเดฟเดเตเดเดณเตเดเต เดธเตเดตเดจเตเดคเด เดเตเดธเตเดฑเตเดฑเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด (เดเตเตบเดซเดฟเดเต-เดฒเดฟเดจเตเดฑเต, เดเตเดชเตเดชเตผ, เดเตเตบเดซเตเดธเตเดฑเตเดฑเต เดเดจเตเดจเดฟเดต เดชเตเดฒเต).
เดฎเดฑเตเดฑเตเดฐเต เดตเดฟเดงเดคเตเดคเดฟเตฝ เดชเดฑเดเตเดเดพเตฝ, เดชเตเดณเดพเดฐเดฟเดธเต เดฐเดฃเตเดเต เดตเดฟเดญเดพเดเดคเตเดคเดฟเดฒเตเดณเตเดณ เดเดชเดเดฐเดฃเดเตเดเดณเตเดเตเดฏเตเด เดชเตเดฐเดฏเตเดเดจเดเตเดเตพ เดธเดเดฏเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต: เด เดจเตเดคเตผเดจเดฟเตผเดฎเตเดฎเดฟเดคเดตเตเด เดเดทเตโเดเดพเดจเตเดธเตเดคเดตเตเดฎเดพเดฏ เดเตเดธเตเดฑเตเดฑเตเดเตพเดเตเดเตเดชเตเดชเด.
เดเดฎเดพเตปเดกเต เดฒเตเตป เดฎเตเดกเดฟเตฝ Polaris เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเดพเตป, เดเดชเดฏเตเดเดฟเดเตเดเตเด
เดฏเดฅเดพเตผเดคเตเดฅ เดฒเตเดเดจเด เดเดดเตเดคเตเดจเตเดจ เดธเดฎเดฏเดคเตเดคเต, เดชเดคเดฟเดชเตเดชเต 1.0.3 เดฒเดญเตเดฏเดฎเดพเดฃเต.
เดเตปเดธเตเดฑเตเดฑเดพเดณเตเดทเตป เดชเตเตผเดคเตเดคเดฟเดฏเดพเดฏเดพเตฝ เดจเดฟเดเตเดเตพเดเตเดเต เดฎเดพเดจเดฟเดซเตเดธเตเดฑเตเดฑเดฟเตฝ เดชเตเดณเดพเดฐเดฟเดธเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด base-valid.yaml
เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดเดฎเดพเตปเดกเต เดเดชเดฏเตเดเดฟเดเตเดเต:
$ polaris audit --audit-path base-valid.yaml
เดจเดเดคเตเดคเดฟเดฏ เดชเดฐเดฟเดถเตเดงเดจเดเดณเตเดเตเดฏเตเด เด เดตเดฏเตเดเต เดซเดฒเดเตเดเดณเตเดเตเดฏเตเด เดตเดฟเดถเดฆเดฎเดพเดฏ เดตเดฟเดตเดฐเดฃเดคเตเดคเตเดเต เดเดคเต JSON เดซเตเตผเดฎเดพเดฑเตเดฑเดฟเตฝ เดเดฐเต เดธเตเดเตเดฐเดฟเดเดเต เดเดเตเดเตเดชเตเดเตเดเต เดเตเดฏเตเดฏเตเด. เดเดเตเดเตเดชเตเดเตเดเดฟเดจเต เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดเดเดจ เดเดฃเตเดเดพเดฏเดฟเดฐเดฟเดเตเดเตเด:
{
"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": [
/* ะดะปะธะฝะฝัะน ัะฟะธัะพะบ */
]
}
เดชเตเตผเดฃเตเดฃเดฎเดพเดฏ เดเดเตเดเตเดชเตเดเตเดเต เดฒเดญเตเดฏเดฎเดพเดฃเต
เดเตเดฏเตเดฌเต-เดธเตโเดเตเตผ เดชเตเดฒเต, เดฎเดพเดจเดฟเดซเตเดธเตเดฑเตเดฑเต เดฎเดฟเดเดเตเด เดฐเตเดคเดฟเดเตพ เดชเดพเดฒเดฟเดเตเดเดพเดคเตเดค เดฎเตเดเดฒเดเดณเดฟเดฒเต เดชเตเดฐเดถเตโเดจเดเตเดเตพ เดชเตเดณเดพเดฐเดฟเดธเต เดคเดฟเดฐเดฟเดเตเดเดฑเดฟเดฏเตเดจเตเดจเต:
- เดเดพเดฏเตเดเตพเดเตเดเต เดเดฐเตเดเตเดฏ เดชเดฐเดฟเดถเตเดงเดจเดเดณเตเดจเตเดจเตเดฎเดฟเดฒเตเดฒ.
- เดเดฃเตเดเตเดฏเตเดจเตผ เดเดฟเดคเตเดฐเดเตเดเดณเตเดเต เดเดพเดเตเดเตพ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดฟเดฏเดฟเดเตเดเดฟเดฒเตเดฒ.
- เดเดฃเตเดเตเดฏเตเดจเตผ เดฑเตเดเตเดเต เดเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต.
- เดฎเตเดฎเตเดฎเดฑเดฟเดเตเดเตเด เดธเดฟเดชเดฟเดฏเตเดตเดฟเดจเตเดฎเตเดณเตเดณ เด เดญเตเดฏเตผเดคเตเดฅเดจเดเดณเตเด เดชเดฐเดฟเดงเดฟเดเดณเตเด เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดฟเดฏเดฟเดเตเดเดฟเดฒเตเดฒ.
เดเดฐเต เดชเดฐเดฟเดถเตเดงเดจเดฏเตเด, เด
เดคเดฟเดจเตเดฑเต เดซเดฒเดเตเดเดณเต เดเดถเตเดฐเดฏเดฟเดเตเดเต, เดจเดฟเตผเดฃเดพเดฏเดเดคเดฏเตเดเต เดเดฐเต เดชเดฐเดฟเดงเดฟ เดจเดฟเดถเตเดเดฏเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต: เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต เด
เดฅเดตเดพ เด
เดชเดเดเด. เดฒเดญเตเดฏเดฎเดพเดฏ เดฌเดฟเตฝเดฑเตเดฑเต-เดเตป เดเตเดธเตเดฑเตเดฑเตเดเดณเตเดเตเดเตเดฑเดฟเดเตเดเต เดเตเดเตเดคเดฒเดฑเดฟเดฏเดพเตป, เดฆเดฏเดตเดพเดฏเดฟ เดฑเดซเตผ เดเตเดฏเตเดฏเตเด
เดตเดฟเดถเดฆเดพเดเดถเดเตเดเตพ เดเดตเดถเตเดฏเดฎเดฟเดฒเตเดฒเตเดเตเดเดฟเตฝ, เดจเดฟเดเตเดเตพเดเตเดเต เดซเตเดฒเดพเดเต เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดพเด --format score
. เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดชเตเดณเดพเดฐเดฟเดธเต 1 เดฎเตเดคเตฝ 100 โโ- เดตเดฐเตเดฏเตเดณเตเดณ เดธเดเดเตเดฏเดเตพ เดชเตเดฑเดชเตเดชเตเดเตเดตเดฟเดเตเดเตเด เดธเตเดเตเดพเตผ (เด
เดคเดพเดฏเดคเต เดตเดฟเดฒเดฏเดฟเดฐเตเดคเตเดคเตฝ):
$ polaris audit --audit-path test-data/base-valid.yaml --format score
68
เดธเตเดเตเตผ 100-เดฒเตเดเตเดเต เด
เดเตเดเตเดเตเดจเตเดคเตเดฑเตเด เดเดฐเดพเดฑเดฟเดจเตเดฑเต เด
เดณเดตเต เดเตเดเตเด. เดจเดฟเดเตเดเตพ เดเดฎเดพเตปเดกเดฟเดจเตเดฑเต เดเดเตเดธเดฟเดฑเตเดฑเต เดเตเดกเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ polaris audit
, เดเดคเต 0 เดจเต เดคเตเดฒเตเดฏเดฎเดพเดฃเตเดจเตเดจเต เดฎเดพเดฑเตเดจเตเดจเต.
เดถเดเตเดคเดฟเดฏเดพเดฃเต polaris audit
เดฐเดฃเตเดเต เดซเตเดฒเดพเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดชเตเดเตเดฏเดฎเดฒเตเดฒเดพเดคเตเดค เดเตเดกเต เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต เดเตเดฒเดฟ เด
เดตเดธเดพเดจเดฟเดชเตเดชเดฟเดเตเดเดพเด:
- เดซเตเดฒเดพเดเต
--set-exit-code-below-score
1-100 เดถเตเดฐเตเดฃเดฟเดฏเดฟเดฒเตเดณเตเดณ เดเดฐเต เดชเดฐเดฟเดงเดฟ เดฎเตเดฒเตเดฏเด เดเดฐเต เดเตผเดเตเดฏเตเดฎเตเดจเตเดฑเดพเดฏเดฟ เดเดเตเดเตเดเตเดจเตเดจเต. เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดธเตเดเตเตผ เดคเตเดฐเตเดทเตเตพเดกเดฟเดจเต เดคเดพเดดเตเดฏเดพเดฃเตเดเตเดเดฟเตฝ, เดเดเตเดธเดฟเดฑเตเดฑเต เดเตเดกเต 4 เดเดชเดฏเตเดเดฟเดเตเดเต เดเดฎเดพเตปเดกเต เดชเตเดฑเดคเตเดคเตเดเดเดเตเดเตเด. เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดจเดฟเดถเตเดเดฟเดค เดคเตเดฐเตเดทเตเตพเดกเต เดฎเตเดฒเตเดฏเดฎเตเดณเตเดณเดชเตเดชเตเตพ เดเดคเต เดตเดณเดฐเต เดเดชเดฏเตเดเดชเตเดฐเดฆเดฎเดพเดฃเต (เดชเดฑเดฏเตเด 75) เดเตเดเดพเดคเต เดธเตเดเตเตผ เดคเดพเดดเต เดชเตเดฏเดพเตฝ เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เด เดฒเตเตผเดเตเดเต เดฒเดญเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต. - เดซเตเดฒเดพเดเต
--set-exit-code-on-danger
เด เดชเดเด เดชเดฐเดฟเดถเตเดงเดจเดเดณเดฟเตฝ เดเดจเตเดจเต เดชเดฐเดพเดเดฏเดชเตเดชเตเดเตเดเดพเตฝ เดเตเดกเต 3 เดเดชเดฏเตเดเดฟเดเตเดเต เดเดฎเดพเตปเดกเต เดชเดฐเดพเดเดฏเดชเตเดชเตเดเดพเตป เดเดเดฏเดพเดเตเดเตเด.
เดตเดฟเดถเตเดตเดธเดจเตเดฏเดฎเดพเดฏ เดเดฐเต เดถเตเดเดฐเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเดพเดฃเต เดเดฟเดคเตเดฐเด เดเดเตเดคเตเดคเดคเตเดจเตเดจเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดเดทเตโเดเดพเดจเตเดธเตเดค เดชเดฐเดฟเดถเตเดงเดจ เดธเตเดทเตโเดเดฟเดเตเดเดพเตป เดจเดฎเตเดเตเดเต เดถเตเดฐเดฎเดฟเดเตเดเดพเด. เดเดทเตโเดเดพเดจเตเดธเตเดค เดชเดฐเดฟเดถเตเดงเดจเดเตพ YAML เดซเตเตผเดฎเดพเดฑเตเดฑเดฟเตฝ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดฟเดฏเดฟเดเตเดเตเดฃเตเดเต, เดเตเดเดพเดคเต JSON เดธเตเดเตเดฎ เดเดชเดฏเตเดเดฟเดเตเดเดพเดฃเต เดเตเดธเตเดฑเตเดฑเต เดตเดฟเดตเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดคเต.
เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ 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 เดธเตเดเตเดฎ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต. เด เดชเดฐเตเดเตเดทเดฏเดฟเดฒเต เดชเตเดฐเดงเดพเดจ เดตเดพเดเตเดเตpattern
เดเดฎเตเดเต เดเดฑเดตเดฟเดเด เดเดตเดถเตเดฏเดฎเตเดณเตเดณเดคเตเดฎเดพเดฏเดฟ เดคเดพเดฐเดคเดฎเตเดฏเด เดเตเดฏเตเดฏเดพเตป เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต.
เดฎเตเดเดณเดฟเดฒเตเดณเตเดณ เดเตเดธเตเดฑเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเดเตเดเตพ เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดชเตเดณเดพเดฐเดฟเดธเต เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดธเตเดทเตเดเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต:
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
. เดเดชเตเดชเตเตพ เดจเดฟเดเตเดเตพเดเตเดเต เดเดเดพเด polaris audit
เดธเตเดฅเดฟเดฐเตเดเดฐเดฃเด เดเดตเดถเตเดฏเดฎเตเดณเตเดณ เดเดฐเต YAML เดฎเดพเดจเดฟเดซเตเดธเตเดฑเตเดฑเดฟเดจเตเดชเตเดชเด.
เดจเดฎเตเดเตเดเต เดจเดฎเตเดฎเตเดเต เดชเตเดฐเดเดเดจเดชเดคเตเดฐเดฟเด เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเด base-valid.yaml
:
$ polaris audit --config custom_check.yaml --audit-path base-valid.yaml
เดเตเด polaris audit
เดฎเตเดเดณเดฟเตฝ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดฟเดฏ เดเดชเดฏเตเดเตเดคเต เดชเดฐเดฟเดถเตเดงเดจ เดฎเดพเดคเตเดฐเด เดจเดเดคเตเดคเดฟ, เด
เดคเต เดชเดฐเดพเดเดฏเดชเตเดชเตเดเตเดเต.
เดจเดฟเดเตเดเตพ เดเดฟเดคเตเดฐเด เดถเดฐเดฟเดฏเดพเดเตเดเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ my-company.com/http-echo:1.0
, เดชเตเดณเดพเดฐเดฟเดธเต เดตเดฟเดเดฏเดเดฐเดฎเดพเดฏเดฟ เดชเตเตผเดคเตเดคเดฟเดฏเดพเดเตเดเตเด. เดฎเดพเดฑเตเดฑเดเตเดเดณเตเดณเตเดณ เดชเตเดฐเดเดเดจเดชเดคเตเดฐเดฟเด เดเดคเดฟเดจเตเดเดเด เดชเตเดฑเดคเตเดคเดฟเดฑเดเตเดเดฟเดฏเดฟเดเตเดเตเดฃเตเดเต image-valid-mycompany.yaml
.
เดเดชเตเดชเตเตพ เดเตเดฆเตเดฏเด เดเดฏเตผเดจเตเดจเตเดตเดฐเตเดจเตเดจเต: เดเดทเตโเดเดพเดจเตเดธเตเดคเดฎเดพเดฏเดตเดฏเตโเดเตเดเตเดชเตเดชเด เดฌเดฟเตฝเดฑเตเดฑเต-เดเตป เดเตเดธเตเดฑเตเดฑเตเดเตพ เดเดเตเดเดจเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเดพเด? เดเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ! เดจเดฟเดเตเดเตพ เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดซเดฏเดฒเดฟเดฒเตเดเตเดเต เดฌเดฟเตฝเดฑเตเดฑเต-เดเตป เดเตเดธเตเดฑเตเดฑเต เดเดกเดจเตเดฑเดฟเดซเดฏเดฑเตเดเตพ เดเตเตผเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต. เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดเดคเต เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดซเตเด เดเดเตเดเตเดเตเด:
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
)
เดเดฐเต เดธเดฎเตเดชเตเตผเดฃเตเดฃ เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดซเดฏเดฒเดฟเดจเตเดฑเต เดเดฐเต เดเดฆเดพเดนเดฐเดฃเด เดฒเดญเตเดฏเดฎเดพเดฃเต
เดฎเดพเดจเดฟเดซเตเดธเตเดฑเตเดฑเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเด base-valid.yaml
เดฌเดฟเตฝเดฑเตเดฑเต-เดเตป, เดเดทเตโเดเดพเดจเตเดธเตเดค เดชเดฐเดฟเดถเตเดงเดจเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต, เดจเดฟเดเตเดเตพเดเตเดเต เดเดฎเดพเตปเดกเต เดเดชเดฏเตเดเดฟเดเตเดเดพเด:
$ polaris audit --config config_with_custom_check.yaml --audit-path base-valid.yaml
เดชเตเดณเดพเดฐเดฟเดธเต เดเดทเตโเดเดพเดจเตเดธเตเดคเดฎเดพเดฏเดต เดเดชเดฏเตเดเดฟเดเตเดเต เดฌเดฟเตฝเดฑเตเดฑเต-เดเตป เดเตเดธเตเดฑเตเดฑเตเดเตพ เดชเตเตผเดคเตเดคเตเดเดฐเดฟเดเตเดเตเดจเตเดจเต, เด เดคเตเดตเดดเดฟ เดฐเดฃเตเดเต เดฒเตเดเดเตเดเดณเดฟเดฒเตเด เดฎเดฟเดเดเตเดเดคเต เดธเดเดฏเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต.
เดฎเดฑเตเดตเดถเดคเตเดคเต, เดฑเตเดเต เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดพเดตเดพเดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดชเตเดฒเตเดณเตเดณ เดเตเดเตเดคเตฝ เดถเดเตเดคเดฎเดพเดฏ เดญเดพเดทเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเดพเดจเตเดณเตเดณ เดเดดเดฟเดตเดฟเดฒเตเดฒเดพเดฏเตเดฎ เดเตเดเตเดคเตฝ เดธเดเตเดเตเตผเดฃเตเดฃเดฎเดพเดฏ เดเตเดธเตเดฑเตเดฑเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเดคเต เดคเดเดฏเตเดจเตเดจ เดเดฐเต เดชเดฐเดฟเดฎเดฟเดค เดเดเดเดฎเดพเดฃเต.
เดชเตเดณเดพเดฐเดฟเดธเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดเตเดเตเดคเตฝ เดตเดฟเดตเดฐเดเตเดเตพ เดเดตเดฟเดเต เดฒเดญเตเดฏเดฎเดพเดฃเต
เดธเดเดเตเดฐเดนเด
Kubernetes YAML เดซเดฏเดฒเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเดจเตเด เดตเดฟเดฒเดฏเดฟเดฐเตเดคเตเดคเดพเดจเตเด เดจเดฟเดฐเดตเดงเดฟ เดเตเดณเตเดเตพ เดฒเดญเตเดฏเดฎเดพเดฃเตเดเตเดเดฟเดฒเตเด, เดเตเดธเตเดฑเตเดฑเตเดเตพ เดเดเตเดเดจเต เดฐเตเดชเดเตฝเดชเดจ เดเตเดฏเตเดฏเตเดเดฏเตเด เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด เดเดจเตเดจเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดตเตเดฏเดเตเดคเดฎเดพเดฏ เดงเดพเดฐเดฃ เดเดฃเตเดเดพเดฏเดฟเดฐเดฟเดเตเดเตเดฃเตเดเดคเต เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต.
เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดชเตเดชเตเดชเต เดฒเตเดจเดฟเดฒเตเดเต เดเดเดจเตเดจเตเดชเตเดเตเดจเตเดจ เดเตเดฌเตเตผเดจเตเดฑเตเดฑเดธเต เดฎเดพเดจเดฟเดซเตเดธเตเดฑเตเดฑเตเดเตพ เดเดเตเดเตเดเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ, เด เดคเตเดคเดฐเดฎเตเดฐเต เดชเตเดชเตเดชเตเดฒเตเดจเดฟเดจเตเดฑเต เดเดฆเตเดฏเดชเดเดฟเดฏเดพเดเดพเด เดเตเดฌเตเดตเตฝ. เดเดฌเตโเดเดเตเดฑเตเดฑเต เดจเดฟเตผเดตเดเดจเดเตเดเตพ เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเต API เดธเตเดเตเดฎเดฏเตเดฎเดพเดฏเดฟ เดชเตเดฐเตเดคเตเดคเดชเตเดชเตเดเตเดจเตเดจเตเดฃเตเดเต เดเดจเตเดจเต เดเดคเต เดจเดฟเดฐเตเดเตเดทเดฟเดเตเดเตเด.
เด เดคเตเดคเดฐเดฎเตเดฐเต เด เดตเดฒเตเดเดจเด เดชเตเตผเดคเตเดคเดฟเดฏเดพเดฏเดฟเดเตเดเดดเดฟเดเตเดเดพเตฝ, เดธเตเดฑเตเดฑเดพเตปเดกเตเตผเดกเต เดฌเตเดธเตเดฑเตเดฑเต เดชเตเดฐเดพเดเตเดเตเดธเตเดเดณเตเด เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เดจเดฏเดเตเดเดณเตเด เดชเดพเดฒเดฟเดเตเดเตเดจเตเดจเดคเต เดชเตเดฒเตเดฏเตเดณเตเดณ เดเตเดเตเดคเตฝ เดธเดเตเดเตเตผเดฃเตเดฃเดฎเดพเดฏ เดเตเดธเตเดฑเตเดฑเตเดเดณเดฟเดฒเตเดเตเดเต เดเดฐเดพเตพเดเตเดเต เดจเตเดเตเดเดพเด. เดเดตเดฟเดเตเดฏเดพเดฃเต เดเตเดฏเตเดฌเต-เดธเตเดเตเดฑเตเด เดชเตเดณเดพเดฐเดฟเดธเตเด เดเดชเดฏเตเดเดชเตเดฐเดฆเดฎเดพเดเตเดจเตเดจเดคเต.
เดธเดเตเดเตเตผเดฃเตเดฃเดฎเดพเดฏ เดเดตเดถเตเดฏเดเดคเดเดณเตเดณเตเดณเดตเตผเดเตเดเตเด เดชเดฐเดฟเดถเตเดงเดจเดเตพ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดเดทเตโเดเดพเดจเตเดธเตเดคเดฎเดพเดเตเดเตเดฃเตเดเดตเตผเดเตเดเตเด, เดเตเดฎเตเดชเต, เดเตเตบเดซเดฟเดเตผ-เดฒเดฟเดจเตเดฑเต, เดเตเตบเดซเตเดธเตเดฑเตเดฑเต เดเดจเตเดจเดฟเดต เด เดจเตเดฏเตเดเตเดฏเดฎเดพเดเตเด..
Conftest เดเด config-lint เดเด เดเดทเตเดเดพเดจเตเดธเตเดค เดชเดฐเดฟเดถเตเดงเดจเดเตพ เดจเดฟเตผเดตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต YAML เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต, เดเตเดเดพเดคเต เดเตเดชเตเดชเตผ เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดชเตเตผเดฃเตเดฃ เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดเดเต เดญเดพเดทเดฏเดฟเดฒเตเดเตเดเต เดชเตเดฐเดตเตเดถเดจเด เดจเตฝเดเตเดจเตเดจเต, เดเดคเต เดตเดณเดฐเต เดเดเตผเดทเดเดฎเดพเดฏ เดคเดฟเดฐเดเตเดเตเดเตเดชเตเดชเดพเดเตเดเดฟ เดฎเดพเดฑเตเดฑเตเดจเตเดจเต.
เดฎเดฑเตเดตเดถเดคเตเดคเต, เด เดเดชเดเดฐเดฃเดเตเดเดณเดฟเตฝ เดเดจเตเดจเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต เดฎเตเดฒเตเดฏเดตเดคเตเดคเดพเดฃเต, เด เดคเดฟเดจเดพเตฝ, เดเดฒเตเดฒเดพ เดเตเดธเตเดฑเตเดฑเตเดเดณเตเด เดธเตเดตเดฎเตเดงเดฏเดพ เดธเตเดทเตเดเดฟเดเตเดเตเด, เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดชเตเดณเดพเดฐเดฟเดธเต เดคเดฟเดฐเดเตเดเตเดเตเดคเตเดคเต เด เดคเดฟเตฝ เดเดตเดถเตเดฏเดฎเตเดณเตเดณเดคเต เดฎเดพเดคเตเดฐเด เดเตเตผเดเตเดเตเด? เด เดเตเดฆเตเดฏเดคเตเดคเดฟเดจเต เดตเตเดฏเดเตเดคเดฎเดพเดฏ เดเดคเตเดคเดฐเด เดเดฒเตเดฒ.
เดเตเดตเดเตเดฏเตเดณเตเดณ เดชเดเตเดเดฟเด เดเดฐเต เดเดชเดเดฐเดฃเดคเตเดคเดฟเดจเตเดฑเตเดฏเตเด เดเดฐเต เดนเตเดฐเดธเตเดต เดตเดฟเดตเดฐเดฃเด เดจเตฝเดเตเดจเตเดจเต:
เดเดชเดเดฐเดฃเด
เดเดฆเตเดฆเตเดถเตเดฏเด
เด
เดธเตเดเดฐเตเดฏเดเตเดเตพ
เดเดชเดฏเตเดเตเดคเต เดชเดฐเดฟเดถเตเดงเดจเดเตพ
เดเตเดฌเตเดตเตฝ
API เดธเตเดเตเดฎเดฏเตเดเต เดเดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตโเด เดชเดคเดฟเดชเตเดชเดฟเดจเตเดคเดฟเดฐเต YAML เดฎเดพเดจเดฟเดซเตเดธเตโเดฑเตเดฑเตเดเตพ เดธเดพเดงเตเดเดฐเดฟเดเตเดเตเดจเตเดจเต
เดธเดฟเดเตผเดกเดฟเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ
เดเดฒเตเดฒ
kube-เดธเตเดเตเตผ
เดฎเดฟเดเดเตเด เดฐเตเดคเดฟเดเตพเดเตเดเตเดคเดฟเดฐเตเดฏเตเดณเตเดณ YAML เดชเตเดฐเดเดเดจเดเตเดเดณเต เดตเดฟเดถเดเดฒเดจเด เดเตเดฏเตเดฏเตเดจเตเดจเต
เดเดฑเดตเดฟเดเดเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเตป เดจเดฟเดเตเดเดณเตเดเต Kubernetes API เดชเดคเดฟเดชเตเดชเต เดคเดฟเดฐเดเตเดเตเดเตเดเตเดเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ
เดเดฒเตเดฒ
เดเตเดฎเตเดชเต
YAML เดฎเดพเดจเดฟเดซเตเดธเตเดฑเตเดฑเตเดเตพเดเตเดเดพเดฏเดฟ เดเดทเตโเดเดพเดจเตเดธเตเดค JavaScript เดเตเดธเตเดฑเตเดฑเตเดเตพ เดธเตเดทเตโเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เดชเตเดคเต เดเดเตเดเดเตเดเตเดเต
เด
เดจเตเดคเตผเดจเดฟเตผเดฎเตเดฎเดฟเดค เดชเดฐเดฟเดถเตเดงเดจเดเดณเตเดจเตเดจเตเดฎเดฟเดฒเตเดฒ. เดฎเตเดถเด เดกเตเดเตเดฏเตเดฎเตเดจเตเดฑเตเดทเตป
เด
config-lint
YAML-เตฝ เดเตพเดเตเดเตเตผเดคเตเดค เดเดฐเต เดกเตเดฎเตเดฏเตเตป-เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เดญเดพเดทเดฏเดฟเตฝ เดเตเดธเตเดฑเตเดฑเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เดชเตเดคเต เดเดเตเดเดเตเดเตเดเต. เดตเดฟเดตเดฟเดง เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดซเตเตผเดฎเดพเดฑเตเดฑเตเดเตพ เดชเดฟเดจเตเดคเตเดฃเดฏเตเดเตเดเตเดจเตเดจเต (เดเดฆเดพ. เดเตเดฑเดพเดซเตเด)
เดฑเตเดกเดฟเดฎเตเดฏเตเดกเต เดเตเดธเตเดฑเตเดฑเตเดเดณเตเดจเตเดจเตเดฎเดฟเดฒเตเดฒ. เด
เดจเตเดคเตผเดจเดฟเตผเดฎเตเดฎเดฟเดค เด
เดตเดเดพเดถเดตเดพเดฆเดเตเดเดณเตเด เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเดณเตเด เดฎเดคเดฟเดฏเดพเดเดฃเดฎเตเดจเตเดจเดฟเดฒเตเดฒ
เด
เดเดฑเตเดฑเตเดฎเตเดเตเดเตฝ
Rego (เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เด
เดจเตเดตเตเดทเดฃ เดญเดพเดท) เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฟเดเตเดเดณเตเดเต เดธเตเดตเดจเตเดคเด เดเตเดธเตเดฑเตเดฑเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เดเดเตเดเดเตเดเตเดเต. OCI เดฌเดฃเตเดเดฟเดฒเตเดเตพ เดตเดดเดฟ เดชเตเดณเดฟเดธเดฟเดเตพ เดชเดเตเดเดฟเดเดพเตป เด
เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต
เด
เดจเตเดคเตผเดจเดฟเตผเดฎเตเดฎเดฟเดค เดชเดฐเดฟเดถเตเดงเดจเดเดณเตเดจเตเดจเตเดฎเดฟเดฒเตเดฒ. เดเดจเดฟเดเตเดเต เดฑเตเดเต เดชเด เดฟเดเตเดเดฃเด. เดจเดฏเดเตเดเตพ เดชเตเดฐเดธเดฟเดฆเตเดงเตเดเดฐเดฟเดเตเดเตเดฎเตเดชเตเตพ เดกเตเดเตเดเตผ เดนเดฌเต เดชเดฟเดจเตเดคเตเดฃเดฏเตเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ
เด
เดชเตเดณเดพเดฐเดฟเดธเต
เด
เดตเดฒเตเดเดจเดเตเดเตพ YAML เดธเตเดฑเตเดฑเดพเตปเดกเตเตผเดกเต เดฌเตเดธเตเดฑเตเดฑเต เดชเตเดฐเดพเดเตเดเตเดธเตเดเตพเดเตเดเต เดเดคเดฟเดฐเดพเดฏเดฟ เดชเตเดฐเดเดเดฎเดพเดฃเต. JSON เดธเตเดเตเดฎ เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฟเดเตเดเดณเตเดเต เดธเตเดตเดจเตเดคเด เดเตเดธเตเดฑเตเดฑเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเดพเตป เดจเดฟเดเตเดเดณเต เด
เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต
JSON เดธเตเดเตเดฎเดฏเต เด
เดเดฟเดธเตเดฅเดพเดจเดฎเดพเดเตเดเดฟเดฏเตเดณเตเดณ เดเตเดธเตเดฑเตเดฑเต เดเดดเดฟเดตเตเดเตพ เดฎเดคเดฟเดฏเดพเดเดฃเดฎเตเดจเตเดจเดฟเดฒเตเดฒ
เด
เด เดเดชเดเดฐเดฃเดเตเดเตพ Kubernetes เดเตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเตเดเตเดเตเดณเตเดณ เดเดเตโเดธเดธเดฟเดจเต เดเดถเตเดฐเดฏเดฟเดเตเดเดพเดคเตเดคเดคเดฟเดจเดพเตฝ, เด เดต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเดพเตป เดเดณเตเดชเตเดชเดฎเดพเดฃเต. เดเดฑเดตเดฟเด เดซเดฏเดฒเตเดเตพ เดซเดฟเตฝเดเตเดเตผ เดเตเดฏเตเดฏเดพเดจเตเด เดชเตเดฐเตเดเดเตเดฑเตเดฑเตเดเดณเดฟเดฒเต เดชเตเตพ เด เดญเตเดฏเตผเดคเตเดฅเดจเดเดณเตเดเต เดฐเดเดฏเดฟเดคเดพเดเตเดเตพเดเตเดเต เดฆเตเดฐเตเดค เดซเตเดกเตโเดฌเดพเดเตเดเต เดจเตฝเดเดพเดจเตเด เด เดต เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต.
เดตเดฟเดตเตผเดคเตเดคเดเดจเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเดฟ.เดเดธเต
เดเดเตเดเดณเตเดเต เดฌเตเดฒเตเดเดฟเดฒเตเด เดตเดพเดฏเดฟเดเตเดเตเด:
- ยซ
เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเต เดเตเดฒเดธเตเดฑเตเดฑเดฑเตเดเดณเต เดเดฐเตเดเตเดฏเดเดฐเดฎเดพเดฏเดฟ เดจเดฟเดฒเดจเดฟเตผเดคเตเดคเดพเตป เดชเตเดณเดพเดฐเดฟเดธเต เด เดตเดคเดฐเดฟเดชเตเดชเดฟเดเตเดเต "; - ยซ
Kubernetes-เดจเต YAML เดชเดฟเดจเตเดคเตเดฃเดฏเตเดณเตเดณ Vim "; - ยซ
Google-เดจเตเดฑเต 7 เดเดฃเตเดเตเดฏเตโเดจเตผ เดฎเดฟเดเดเตเด เดธเดฎเตเดชเตเดฐเดฆเดพเดฏเดเตเดเตพ ".
เด เดตเดฒเดเดฌเด: www.habr.com