เจจเฉเจ เจเจฐเฉเฅค เจ เจจเฉเจตเจพเจฆ: K8s เจตเจพเจคเจพเจตเจฐเจฃเจพเจ เจฒเจ YAML เจธเฉฐเจฐเจเจจเจพเจตเจพเจ เจฆเฉ เจตเฉฑเจง เจฐเจนเฉ เจเจฟเจฃเจคเฉ เจฆเฉ เจจเจพเจฒ, เจเจนเจจเจพเจ เจฆเฉ เจธเจตเฉเจเจฒเจฟเจค เจคเจธเจฆเฉเจ เจฆเฉ เจฒเฉเฉ เจตเฉฑเจง เจคเฉเจ เจตเฉฑเจง เจเจผเจฐเฉเจฐเฉ เจนเฉ เจเจพเจเจฆเฉ เจนเฉเฅค เจเจธ เจธเจฎเฉเจเจฟเจ เจฆเฉ เจฒเฉเจเจ เจจเฉ เจจเจพ เจธเจฟเจฐเจซเจผ เจเจธ เจเจพเจฐเจ เจฒเจ เจฎเฉเจเฉเจฆเจพ เจนเฉฑเจฒเจพเจ เจฆเฉ เจเฉเจฃ เจเฉเจคเฉ, เจธเจเฉเจ เจเจน เจฆเฉเจเจฃ เจฒเจ เจเจฟ เจเจน เจเจฟเจตเฉเจ เจเฉฐเจฎ เจเจฐเจฆเฉ เจนเจจ, เจเฉฑเจ เจเจฆเจพเจนเจฐเจฃ เจตเจเฉเจ เจคเฉเจจเจพเจคเฉ เจฆเฉ เจตเจฐเจคเฉเจ เจตเฉ เจเฉเจคเฉเฅค เจเจน เจเจนเจจเจพเจ เจฒเจ เจฌเจนเฉเจค เจเจพเจฃเจเจพเจฐเฉ เจญเจฐเจชเฉเจฐ เจธเจพเจฌเจค เจนเฉเจเจ เจเฉ เจเจธ เจตเจฟเจธเจผเฉ เจตเจฟเฉฑเจ เจฆเจฟเจฒเจเจธเจชเฉ เจฐเฉฑเจเจฆเฉ เจนเจจ.
TL; เจกเจพ: เจเจน เจฒเฉเจ เจตเจงเฉเจ เจ เจญเจฟเจเจธเจพเจ เจ เจคเฉ เจฒเฉเฉเจพเจ เจฆเฉ เจตเจฟเจฐเฉเฉฑเจง เจเฉเจฌเจฐเจจเฉเจเจธ YAML เจซเจพเจเจฒเจพเจ เจจเฉเฉฐ เจชเฉเจฐเจฎเจพเจฃเจฟเจค เจเจฐเจจ เจ เจคเฉ เจฎเฉเจฒเจพเจเจเจฃ เจเจฐเจจ เจฒเจ เจเฉ เจธเจฅเจฟเจฐ เจเฉเจฒเจพเจ เจฆเฉ เจคเฉเจฒเจจเจพ เจเจฐเจฆเจพ เจนเฉเฅค
เจเฉเจฌเจฐเจจเฉเจเจธ เจตเจฐเจเจฒเฉเจกเจธ เจจเฉเฉฐ เจเจฎ เจคเฉเจฐ 'เจคเฉ YAML เจฆเจธเจคเจพเจตเฉเจเจผเจพเจ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉเฅค YAML เจจเจพเจฒ เจธเจฎเฉฑเจธเจฟเจเจตเจพเจ เจตเจฟเฉฑเจเฉเจ เจเฉฑเจ เจนเฉ เจฎเฉเจจเฉเจซเฉเจธเจ เจซเจพเจเจฒเจพเจ เจตเจฟเจเจเจพเจฐ เจฐเฉเจเจพเจตเจเจพเจ เจเจพเจ เจธเจฌเฉฐเจงเจพเจ เจจเฉเฉฐ เจจเจฟเจฐเจงเจพเจฐเจค เจเจฐเจจ เจตเจฟเฉฑเจ เจฎเฉเจธเจผเจเจฒเฅค
เจเจฆเฉเจ เจเฉ เจเฉ เจธเจพเจจเฉเฉฐ เจเจน เจฏเจเฉเจจเฉ เจฌเจฃเจพเจเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉ เจเจฟ เจเจฒเฉฑเจธเจเจฐ เจตเจฟเฉฑเจ เจคเฉเจจเจพเจค เจธเจพเจฐเฉเจเจ เจคเจธเจตเฉเจฐเจพเจ เจเฉฑเจ เจญเจฐเฉเจธเฉเจฏเฉเจ เจฐเจเจฟเจธเจเจฐเฉ เจคเฉเจ เจเจเจเจฆเฉเจเจ เจนเจจ?
เจฎเฉเจ เจเจนเจจเจพเจ เจคเฉเจจเจพเจคเฉเจเจ เจจเฉเฉฐ เจเจฟเจตเฉเจ เจฐเฉเจ เจธเจเจฆเจพ เจนเจพเจ เจเจฟเจนเจจเจพเจ เจเฉเจฒ เจชเฉเจกเจกเจฟเจธเจฐเจชเจธเจผเจจเจฌเจเจ เจจเจนเฉเจ เจนเจจ เจเจฒเฉฑเจธเจเจฐ เจจเฉเฉฐ เจญเฉเจเจฃ เจคเฉเจ?
เจธเจฅเจฟเจฐ เจเฉเจธเจเจฟเฉฐเจ เจฆเจพ เจเจเฉเจเจฐเจฃ เจคเฉเจนเจพเจจเฉเฉฐ เจตเจฟเจเจพเจธ เจฆเฉ เจชเฉเจพเจ 'เจคเฉ เจเจฒเจคเฉเจเจ เจ เจคเฉ เจจเฉเจคเฉ เจฆเฉเจเจ เจเจฒเฉฐเจเจฃเจพเจตเจพเจ เจฆเฉ เจชเจเจพเจฃ เจเจฐเจจ เจฆเฉ เจเจเจฟเจ เจฆเจฟเฉฐเจฆเจพ เจนเฉเฅค เจเจน เจเจพเจฐเฉฐเจเฉ เจจเฉเฉฐ เจตเจงเจพเจเจเจฆเจพ เจนเฉ เจเจฟ เจธเจฐเฉเจค เจชเจฐเจฟเจญเจพเจธเจผเจพเจตเจพเจ เจธเจนเฉ เจ เจคเฉ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจนเจจ, เจ เจคเฉ เจเจธเจฆเฉ เจธเฉฐเจญเจพเจตเจจเจพ เจตเฉฑเจง เจเจพเจเจฆเฉ เจนเฉ เจเจฟ เจเจคเจชเจพเจฆเจจ เจตเจฐเจเจฒเฉเจก เจตเจงเฉเจ เจ เจญเจฟเจเจธเจพเจ เจฆเฉ เจชเจพเจฒเจฃเจพ เจเจฐเฉเจเจพเฅค
เจเฉเจฌเจฐเจจเฉเจเจธ เจธเจฅเจฟเจฐ YAML เจซเจพเจเจฒ เจจเจฟเจฐเฉเจเจฃ เจเจเฉเจธเจฟเจธเจเจฎ เจจเฉเฉฐ เจนเฉเจ เจฒเจฟเจเฉเจเจ เจธเจผเฉเจฐเฉเจฃเฉเจเจ เจตเจฟเฉฑเจ เจตเฉฐเจกเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉ:
- API เจชเฉเจฐเจฎเจพเจฃเจ. เจเจธ เจธเจผเฉเจฐเฉเจฃเฉ เจตเจฟเฉฑเจ เจเฉเจฒ เจเฉเจฌเจฐเจจเฉเจเจธ API เจธเจฐเจตเจฐ เจฆเฉเจเจ เจฒเฉเฉเจพเจ เจฆเฉ เจตเจฟเจฐเฉเฉฑเจง YAML เจฎเฉเจจเฉเจซเฉเจธเจ เจฆเฉ เจเจพเจเจ เจเจฐเจฆเฉ เจนเจจเฅค
- เจคเจฟเจเจฐ เจเฉเจธเจเจฐ. เจเจธ เจธเจผเฉเจฐเฉเจฃเฉ เจฆเฉ เจเฉเจฒ เจธเฉเจฐเฉฑเจเจฟเจ, เจตเจงเฉเจ เจ เจญเจฟเจเจธเจพเจ เจฆเฉ เจชเจพเจฒเจฃเจพ เจเจฆเจฟ เจฒเจ เจคเจฟเจเจฐ เจเฉเจคเฉ เจเฉเจธเจเจพเจ เจฆเฉ เจจเจพเจฒ เจเจเจเจฆเฉ เจนเจจเฅค
- เจเจธเจเจฎ เจตเฉเจฒเฉเจกเฉเจเจฐ. เจเจธ เจธเจผเฉเจฐเฉเจฃเฉ เจฆเฉ เจชเฉเจฐเจคเฉเจจเจฟเจง เจคเฉเจนเจพเจจเฉเฉฐ เจตเฉฑเจ-เจตเฉฑเจ เจญเจพเจธเจผเจพเจตเจพเจ เจตเจฟเฉฑเจ เจเจธเจเจฎ เจเฉเจธเจ เจฌเจฃเจพเจเจฃ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเฉ เจนเจจ, เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจฐเฉเจเฉ เจ เจคเฉ เจเจพเจตเจพเจธเจเฉเจฐเจฟเจชเจเฅค
เจเจธ เจฒเฉเจ เจตเจฟเฉฑเจ เจ เจธเฉเจ เจเฉ เจตเฉฑเจ-เจตเฉฑเจ เจธเจพเจงเจจเจพเจ เจฆเจพ เจตเจฐเจฃเจจ เจ เจคเฉ เจคเฉเจฒเจจเจพ เจเจฐเจพเจเจเฉ:
- เจเฉเจฌเฉเจตเจพเจฒ;
- kube-เจธเจเฉเจฐ;
- config-lint;
- เจคเจพเจเจฌเจพ;
- เจฎเฉเจเจพเจฌเจฒเจพ;
- เจชเฉเจฒเจพเจฐเจฟเจธ.
เจเฉเจฐ, เจเจ เจธเจผเฉเจฐเฉ เจเจฐเฉเจ!
เจคเฉเจจเจพเจคเฉเจเจ เจฆเฉ เจเจพเจเจ เจเฉเจคเฉ เจเจพ เจฐเจนเฉ เจนเฉ
เจเจธ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ เจเจฟ เจ เจธเฉเจ เจเฉเจฒเจธ เจฆเฉ เจคเฉเจฒเจจเจพ เจเจฐเจจเจพ เจธเจผเฉเจฐเฉ เจเจฐเฉเจ, เจเจ เจเฉเจ เจฌเฉเจเจเจฐเจพเจเจเจก เจฌเจฃเจพเจเจ เจเจฟเจธ 'เจคเฉ เจเจจเฉเจนเจพเจ เจฆเฉ เจเจพเจเจ เจเฉเจคเฉ เจเจพ เจธเจเฉเฅค
เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเฉ เจฎเฉเจจเฉเจซเฉเจธเจเฉ เจตเจฟเฉฑเจ เจฌเจนเฉเจค เจธเจพเจฐเฉเจเจ เจคเจฐเฉเฉฑเจเฉเจเจ เจนเจจ เจ เจคเฉ เจตเจงเฉเจ เจ เจญเจฟเจเจธเจพเจ เจฆเฉ เจเฉเจฐ-เจชเจพเจฒเจฃเจพ เจนเฉ: เจคเฉเจธเฉเจ เจเจนเจจเจพเจ เจตเจฟเฉฑเจเฉเจ เจเจฟเฉฐเจจเฉเจเจ เจฒเฉฑเจญ เจธเจเจฆเฉ เจนเฉ?
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 เจจเจพเจฒ เจฌเจพเจนเจฐ เจ เจเจพเจตเฉเจเจพเฅค เจคเฉเจธเฉเจ เจเจธเจจเฉเฉฐ เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเฉ เจคเจฐเฉเจเฉ เจจเจพเจฒ เจฆเฉเจ เจธเจเจฆเฉ เจนเฉ:
$ echo $?
0
เจเจฒเฉ เจนเฉเจฃ เจเฉฑเจ เจตเฉฑเจเจฐเฉ เจฎเฉเจจเฉเจซเฉเจธเจ เจจเจพเจฒ เจเฉเจฌเฉเจตเจฒ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเฉเจ:
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
, เจตเจฟเฉฑเจ เจเฉฑเจ เจเฉเจฃเจเจพเจฐ เจธเจผเจพเจฎเจฒ เจเจฐเจจเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ เจเฉ เจชเฉเจก เจฆเฉ เจฒเฉเจฌเจฒ เจจเจพเจฒ เจฎเฉเจฒ เจเจพเจเจฆเจพ เจนเฉเจตเฉเฅค เจเจชเจฐเฉเจเจค เจฎเฉเจจเฉเจซเฉเจธเจ เจตเจฟเฉฑเจ เจเฉฑเจ เจเฉเจฃเจเจพเจฐ เจธเจผเจพเจฎเจฒ เจจเจนเฉเจ เจนเฉ, เจเจธเจฒเจ เจเฉเจฌเฉเจตเจพเจฒ เจจเฉ เจเฉฑเจ เจเจฒเจคเฉ เจฆเฉ เจฐเจฟเจชเฉเจฐเจ เจเฉเจคเฉ เจ
เจคเฉ เจเฉฑเจ เจเฉเจฐ-เจเจผเฉเจฐเฉ เจเฉเจก เจจเจพเจฒ เจฌเจพเจนเจฐ เจจเจฟเจเจฒเจฟเจเฅค
เจฎเฉเจ เจนเฉเจฐเจพเจจ เจนเจพเจ เจเจฟ เจเฉ เจฎเฉเจ เจ
เจเจฟเจนเจพ เจเจฐเจฆเจพ เจนเจพเจ เจคเจพเจ เจเฉ เจนเฉเจตเฉเจเจพ 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
)
เจเฉเจฌเฉเจตเจพเจฒ เจตเจฐเจเฉ เจธเจพเจงเจจเจพเจ เจฆเจพ เจซเจพเจเจฆเจพ เจเจน เจนเฉ เจเจฟ เจเจธ เจคเจฐเฉเจนเจพเจ เจฆเฉเจเจ เจเจฒเจคเฉเจเจ เจจเฉเฉฐ เจคเฉเจจเจพเจคเฉ เจเฉฑเจเจฐ เจตเจฟเฉฑเจ เจเจฒเจฆเฉ เจซเฉเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค
เจเจธ เจคเฉเจ เจเจฒเจพเจตเจพ, เจเจนเจจเจพเจ เจเจพเจเจเจพเจ เจฒเจ เจเจฒเฉฑเจธเจเจฐ เจคเฉฑเจ เจชเจนเฉเฉฐเจ เจฆเฉ เจฒเฉเฉ เจจเจนเฉเจ เจนเฉ; เจเจนเจจเจพเจ เจจเฉเฉฐ เจเจซเจฒเจพเจเจจ เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค
เจฎเฉเจฒ เจฐเฉเจช เจตเจฟเฉฑเจ, เจเฉเจฌเฉเจตเจฒ เจจเจตเฉเจจเจคเจฎ เจเฉเจฌเจฐเจจเฉเจเจธ API เจธเจเฉเจฎเจพ เจฆเฉ เจตเจฟเจฐเฉเฉฑเจง เจธเจฐเฉเจคเจพเจ เจฆเฉ เจเจพเจเจ เจเจฐเจฆเจพ เจนเฉเฅค เจนเจพเจฒเจพเจเจเจฟ, เจเจผเจฟเจเจฆเจพเจคเจฐ เจฎเจพเจฎเจฒเจฟเจเจ เจตเจฟเฉฑเจ เจคเฉเจนเจพเจจเฉเฉฐ เจเจฟเจธเฉ เจเจพเจธ เจเฉเจฌเจฐเจจเฉเจเจธ เจฐเฉเจฒเฉเจเจผ เจฆเฉ เจตเจฟเจฐเฉเฉฑเจง เจเจพเจเจ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉ เจธเจเจฆเฉ เจนเฉเฅค เจเจน เจซเจฒเฉเจ เจตเจฐเจค เจเฉ เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉ --kubernetes-version
:
$ kubeval --kubernetes-version 1.16.1 base-valid.yaml
เจเจฟเจฐเจชเจพ เจเจฐเจเฉ เจจเฉเจ เจเจฐเฉ เจเจฟ เจธเฉฐเจธเจเจฐเจฃ เจซเจพเจฐเจฎเฉเจ เจตเจฟเฉฑเจ เจจเจฟเจฐเจงเจพเจฐเจค เจเฉเจคเจพ เจเจพเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ Major.Minor.Patch
.
เจธเฉฐเจธเจเจฐเจฃเจพเจ เจฆเฉ เจธเฉเจเฉ เจฒเจ เจเจฟเจจเฉเจนเจพเจ เจฒเจ เจชเฉเจธเจผเจเฉเจเจฐเจจ เจธเจฎเจฐเจฅเจฟเจค เจนเฉ, เจเจฟเจฐเจชเจพ เจเจฐเจเฉ เจตเฉเจเฉ --schema-location
.
เจตเจฟเจ เจเจคเฉเจเจค YAML เจซเจพเจเจฒเจพเจ เจคเฉเจ เจเจฒเจพเจตเจพ, kubeval เจกเจพเจเจฐเฉเจเจเจฐเฉเจเจ เจ เจคเฉ stdin เจจเจพเจฒ เจตเฉ เจเฉฐเจฎ เจเจฐ เจธเจเจฆเจพ เจนเฉเฅค
เจเจธ เจคเฉเจ เจเจฒเจพเจตเจพ, เจเฉเจฌเฉเจตเจพเจฒ เจเจธเจพเจจเฉ เจจเจพเจฒ เจธเฉเจเจ เจชเจพเจเจชเจฒเจพเจเจจ เจตเจฟเฉฑเจ เจเจเฉเจเฉเจฐเจฟเจค เจนเฉ เจเจพเจเจฆเจพ เจนเฉเฅค เจเจฒเฉฑเจธเจเจฐ เจจเฉเฉฐ เจฎเฉเจจเฉเจซเฉเจธเจ เจญเฉเจเจฃ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ เจเฉเจธเจ เจเจฒเจพเจเจฃ เจฆเฉ เจเฉฑเจเจพ เจฐเฉฑเจเจฃ เจตเจพเจฒเจฟเจเจ เจจเฉเฉฐ เจเจน เจเจพเจฃ เจเฉ เจเฉเจธเจผเฉ เจนเฉเจตเฉเจเฉ เจเจฟ เจเฉเจฌเฉเจตเจฒ เจคเจฟเฉฐเจจ เจเจเจเจชเฉเฉฑเจ เจซเจพเจฐเจฎเฉเจเจพเจ เจฆเจพ เจธเจฎเจฐเจฅเจจ เจเจฐเจฆเจพ เจนเฉ:
- เจธเจพเจฆเจพ เจชเจพเจ ;
- JSON;
- เจเฉเจธเจ เจเจจเฉเจฅเจฟเฉฐเจ เจชเฉเจฐเฉเจเฉเจเฉเจฒ (TAP)เฅค
เจ เจคเฉ เจเจฟเจธเฉ เจตเฉ เจซเจพเจฐเจฎเฉเจ เจจเฉเฉฐ เจฒเฉเฉเฉเจฆเฉ เจเจฟเจธเจฎ เจฆเฉ เจจเจคเฉเจเจฟเจเจ เจฆเจพ เจธเฉฐเจเฉเจช เจฌเจฃเจพเจเจฃ เจฒเจ เจเจเจเจชเฉเฉฑเจ เจจเฉเฉฐ เจชเจพเจฐเจธ เจเจฐเจจ เจฒเจ เจตเจฐเจคเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค
เจเฉเจฌเฉเจตเจฒ เจฆเฉเจเจ เจเจฎเฉเจเจ เจตเจฟเฉฑเจเฉเจ เจเฉฑเจ เจเจน เจนเฉ เจเจฟ เจเจน เจตเจฐเจคเจฎเจพเจจ เจตเจฟเฉฑเจ เจเจธเจเจฎ เจฐเจฟเจธเฉเจฐเจธ เจชเจฐเจฟเจญเจพเจธเจผเจพเจตเจพเจ (CRDs) เจฆเฉ เจชเจพเจฒเจฃเจพ เจฆเฉ เจเจพเจเจ เจจเจนเฉเจ เจเจฐ เจธเจเจฆเจพ เจนเฉเฅค เจนเจพเจฒเจพเจเจเจฟ, เจเฉเจฌเฉเจตเจพเจฒ เจจเฉเฉฐ เจธเฉฐเจฐเจเจฟเจค เจเจฐเจจเจพ เจธเฉฐเจญเจต เจนเฉ
เจเฉเจฌเฉเจตเจพเจฒ เจธเจฐเฉเจคเจพเจ เจฆเฉ เจเจพเจเจ เจ เจคเฉ เจฎเฉเจฒเจพเจเจเจฃ เจฒเจ เจเฉฑเจ เจตเจงเฉเจ เจธเจพเจงเจจ เจนเฉ; เจนเจพเจฒเจพเจเจเจฟ, เจเจธ เจเฉฑเจฒ 'เจคเฉ เจเจผเฉเจฐ เจฆเจฟเฉฑเจคเจพ เจเจพเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ เจเจฟ เจเฉเจธเจ เจชเจพเจธ เจเจฐเจจเจพ เจเจธ เจเฉฑเจฒ เจฆเฉ เจเจฐเฉฐเจเฉ เจจเจนเฉเจ เจฆเจฟเฉฐเจฆเจพ เจนเฉ เจเจฟ เจธเจฐเฉเจค เจตเจงเฉเจ เจ เจญเจฟเจเจธเจพเจ เจฆเฉ เจชเจพเจฒเจฃเจพ เจเจฐเจฆเจพ เจนเฉเฅค
เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจเฉเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจเจพ latest
เจเฉฑเจ เจเฉฐเจเฉเจจเจฐ เจตเจฟเฉฑเจ เจตเจงเฉเจ เจ
เจญเจฟเจเจธเจพเจ เจฆเฉ เจชเจพเจฒเจฃเจพ เจจเจนเฉเจ เจเจฐเจฆเจพ เจนเฉเฅค เจนเจพเจฒเจพเจเจเจฟ, เจเฉเจฌเฉเจตเจพเจฒ เจเจธ เจจเฉเฉฐ เจเจฒเจคเฉ เจจเจนเฉเจ เจฎเฉฐเจจเจฆเจพ เจ
เจคเฉ เจเจธเจฆเฉ เจฐเจฟเจชเฉเจฐเจ เจจเจนเฉเจ เจเจฐเจฆเจพเฅค เจญเจพเจต, เจ
เจเจฟเจนเฉ YAML เจฆเฉ เจคเจธเจฆเฉเจ เจฌเจฟเจจเจพเจ เจเฉเจคเจพเจตเจจเฉเจเจ เจฆเฉ เจชเฉเจฐเฉ เจนเฉ เจเจพเจตเฉเจเฉเฅค
เจชเจฐ เจเฉ เจคเฉเจธเฉเจ YAML เจฆเจพ เจฎเฉเจฒเจพเจเจเจฃ เจเจฐเจจเจพ เจเจพเจนเฉเฉฐเจฆเฉ เจนเฉ เจ
เจคเฉ เจเฉเจ เจตเจฐเจเฉ เจเจฒเฉฐเจเจฃเจพเจตเจพเจ เจฆเฉ เจชเจเจพเจฃ เจเจฐเจจเจพ เจเจพเจนเฉเฉฐเจฆเฉ เจนเฉ เจคเจพเจ เจเฉ เจนเฉเจตเฉเจเจพ latest
? เจฎเฉเจ เจตเจงเฉเจ เจ
เจญเจฟเจเจธเจพเจ เจฆเฉ เจตเจฟเจฐเฉเฉฑเจง เจเฉฑเจ YAML เจซเจพเจเจฒ เจฆเฉ เจเจพเจเจ เจเจฟเจตเฉเจ เจเจฐเจพเจ?
2. เจเฉเจฌเฉ-เจธเจเฉเจฐ
- เจเฉฐเจเฉเจจเจฐ เจจเฉเฉฐ เจฐเฉเจ เจฆเฉ เจคเฉเจฐ เจคเฉ เจจเจนเฉเจ เจเจฒเจพเจเจฃเจพ.
- เจชเฉเจก เจธเจฟเจนเจค เจเจพเจเจเจพเจ เจฆเฉ เจเจชเจฒเจฌเจงเจคเจพเฅค
- เจธเจฐเฉเจคเจพเจ เจฒเจ เจฌเฉเจจเจคเฉเจเจ เจ เจคเฉ เจธเฉเจฎเจพเจตเจพเจ เจธเฉเฉฑเจ เจเจฐเจจเจพเฅค
เจเฉเจธเจ เจฆเฉ เจจเจคเฉเจเจฟเจเจ เจฆเฉ เจเจงเจพเจฐ 'เจคเฉ, เจคเจฟเฉฐเจจ เจจเจคเฉเจเฉ เจฆเจฟเฉฑเจคเฉ เจเจ เจนเจจ: OK, เจเฉเจคเจพเจตเจจเฉ ะธ CRITICAL.
เจคเฉเจธเฉเจ เจเฉเจฌเฉ-เจธเจเฉเจฐ เจเจจเจฒเจพเจเจจ เจ เจเจผเจฎเจพ เจธเจเจฆเฉ เจนเฉ เจเจพเจ เจเจธเจจเฉเฉฐ เจธเจฅเจพเจจเจ เจคเฉเจฐ 'เจคเฉ เจธเจฅเจพเจชเจฟเจค เจเจฐ เจธเจเจฆเฉ เจนเฉเฅค
เจ เจธเจฒ เจฒเฉเจ เจฒเจฟเจเจฃ เจฆเฉ เจธเจฎเฉเจ, เจเฉเจฌเฉ-เจธเจเฉเจฐ เจฆเจพ เจจเจตเฉเจจเจคเจฎ เจธเฉฐเจธเจเจฐเจฃ 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 เจเฉเจฌเฉเจตเจฒ เจเฉเจธเจ เจชเจพเจธ เจเจฐเจฆเจพ เจนเฉ, เจเจฆเฉเจ เจเจฟ เจเฉเจฌเฉ-เจธเจเฉเจฐ เจนเฉเจ เจฒเจฟเจเฉเจเจ เจเจพเจฎเฉเจเจ เจตเฉฑเจฒ เจเจธเจผเจพเจฐเจพ เจเจฐเจฆเจพ เจนเฉ:
- เจคเจฟเจเจฐเฉ เจเจพเจเจเจพเจ เจจเฉเฉฐ เจเฉเจเจซเจฟเจเจฐ เจจเจนเฉเจ เจเฉเจคเจพ เจเจฟเจ เจนเฉเฅค
- CPU เจธเจฐเฉเจคเจพเจ เจ เจคเฉ เจฎเฉเจฎเฉเจฐเฉ เจฒเจ เจเฉเจ เจฌเฉเจจเจคเฉเจเจ เจเจพเจ เจธเฉเจฎเจพเจตเจพเจ เจจเจนเฉเจ เจนเจจเฅค
- เจชเฉเจก เจตเจฟเจเจจ เจฌเจเจ เจจเจฟเจฐเจงเจพเจฐเจค เจจเจนเฉเจ เจเฉเจคเฉ เจเจ เจนเจจเฅค
- เจตเจฟเจเฉเฉเฉ เจฆเฉ เจเฉเจ เจจเจฟเจฏเจฎ เจจเจนเฉเจ เจนเจจ (เจตเจฟเจฐเฉเจงเฉ เจธเจพเจเจ) เจเจชเจฒเจฌเจงเจคเจพ เจจเฉเฉฐ เจตเฉฑเจง เจคเฉเจ เจตเฉฑเจง เจเจฐเจจ เจฒเจ.
- เจเฉฐเจเฉเจจเจฐ เจฐเฉเจ เจฆเฉ เจคเฉเจฐ เจคเฉ เจเฉฑเจฒเจฆเจพ เจนเฉ.
เจเจน เจธเจพเจฐเฉเจเจ เจเจฎเฉเจเจ เจฌเจพเจฐเฉ เจตเฉเจง เจจเฉเจเจคเฉ เจนเจจ เจเจฟเจจเฉเจนเจพเจ เจจเฉเฉฐ เจคเฉเจจเจพเจคเฉ เจจเฉเฉฐ เจตเจงเฉเจฐเฉ เจเฉเจธเจผเจฒ เจ เจคเฉ เจญเจฐเฉเจธเฉเจฎเฉฐเจฆ เจฌเจฃเจพเจเจฃ เจฒเจ เจธเฉฐเจฌเฉเจงเจฟเจค เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฅค
เจฆเฉ เจเฉเจฎ kube-score
เจเจพเจฃเจเจพเจฐเฉ เจจเฉเฉฐ เจชเฉเฉเจนเจจเจฏเฉเจ เจฐเฉเจช เจตเจฟเฉฑเจ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจเจฐเจฆเจพ เจนเฉ, เจเจฟเจธ เจตเจฟเฉฑเจ เจนเจฐ เจเจฟเจธเจฎ เจฆเฉ เจเจฒเฉฐเจเจฃเจพ เจตเฉ เจธเจผเจพเจฎเจฒ เจนเฉ เจเฉเจคเจพเจตเจจเฉ ะธ CRITICAL, เจเฉ เจตเจฟเจเจพเจธ เจฆเฉเจฐเจพเจจ เจฌเจนเฉเจค เจฎเจฆเจฆ เจเจฐเจฆเจพ เจนเฉเฅค
เจเจฟเจนเฉเฉ เจฒเฉเจ 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
เจเฉเจฌเฉเจตเจพเจฒ เจฆเฉ เจคเจฐเฉเจนเจพเจ, เจเฉเจฌเฉ-เจธเจเฉเจฐ เจเฉฑเจ เจเฉเจฐ-เจเจผเฉเจฐเฉ เจเจเจเจผเจฟเจ เจเฉเจก เจตเจพเจชเจธ เจเจฐเจฆเจพ เจนเฉ เจเจฆเฉเจ เจเฉเจ เจเฉเจธเจ เจ เจธเจซเจฒ เจนเฉเฉฐเจฆเจพ เจนเฉ CRITICAL. เจคเฉเจธเฉเจ เจเจธ เจฒเจ เจธเจฎเจพเจจ เจชเฉเจฐเฉเจธเฉเจธเจฟเฉฐเจ เจจเฉเฉฐ เจตเฉ เจธเจฎเจฐเฉฑเจฅ เจเจฐ เจธเจเจฆเฉ เจนเฉ เจเฉเจคเจพเจตเจจเฉ.
เจเจธ เจคเฉเจ เจเจฒเจพเจตเจพ, เจตเฉฑเจ-เจตเฉฑเจ API เจธเฉฐเจธเจเจฐเจฃเจพเจ (เจเจฟเจตเฉเจ เจเจฟ เจเฉเจฌเฉเจตเจฒ เจตเจฟเฉฑเจ) เจฆเฉ เจชเจพเจฒเจฃเจพ เจฒเจ เจธเจฐเฉเจคเจพเจ เจฆเฉ เจเจพเจเจ เจเจฐเจจเจพ เจธเฉฐเจญเจต เจนเฉเฅค เจนเจพเจฒเจพเจเจเจฟ, เจเจน เจเจพเจฃเจเจพเจฐเฉ เจเฉเจฆ เจเฉเจฌเฉ-เจธเจเฉเจฐ เจตเจฟเฉฑเจ เจนเจพเจฐเจกเจเฉเจก เจเฉเจคเฉ เจเจ เจนเฉ: เจคเฉเจธเฉเจ เจเฉเจฌเจฐเจจเฉเจเจธ เจฆเจพ เจเฉเจ เจตเฉฑเจเจฐเจพ เจธเฉฐเจธเจเจฐเจฃ เจจเจนเฉเจ เจเฉเจฃ เจธเจเจฆเฉเฅค เจเจน เจธเฉเจฎเจพ เจเฉฑเจ เจตเฉฑเจกเฉ เจธเจฎเฉฑเจธเจฟเจ เจนเฉ เจธเจเจฆเฉ เจนเฉ เจเฉเจเจฐ เจคเฉเจธเฉเจ เจเจชเจฃเฉ เจเจฒเฉฑเจธเจเจฐ เจจเฉเฉฐ เจ เฉฑเจชเจเจฐเฉเจก เจเจฐเจจเจพ เจเจพเจนเฉเฉฐเจฆเฉ เจนเฉ เจเจพเจ เจเฉเจเจฐ เจคเฉเจนเจพเจกเฉ เจเฉเจฒ K8s เจฆเฉ เจตเฉฑเจ-เจตเฉฑเจ เจธเฉฐเจธเจเจฐเจฃเจพเจ เจตเจพเจฒเฉ เจเจ เจเจฒเฉฑเจธเจเจฐ เจนเจจเฅค
เจจเฉเจ เจเจฐเฉ
เจชเจนเจฟเจฒเจพเจ เจนเฉ เจเฉฑเจ เจฎเฉเฉฑเจฆเจพ เจนเฉ เจเจธ เจฎเฉเจเฉ เจจเฉเฉฐ เจฎเจนเจฟเจธเฉเจธ เจเจฐเจจ เจฒเจ เจเฉฑเจ เจชเฉเจฐเจธเจคเจพเจต เจฆเฉ เจจเจพเจฒ.
เจเฉเจฌเฉ-เจธเจเฉเจฐ เจฌเจพเจฐเฉ เจนเฉเจฐ เจเจพเจฃเจเจพเจฐเฉ เจเฉฑเจฅเฉ เจฒเฉฑเจญเฉ เจเจพ เจธเจเจฆเฉ เจนเฉ
เจเฉเจฌเฉ-เจธเจเฉเจฐ เจเฉเจธเจ เจธเจญ เจคเฉเจ เจตเจงเฉเจ เจ เจญเจฟเจเจธเจพเจ เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเจจ เจฒเจ เจเฉฑเจ เจตเจงเฉเจ เจธเจพเจงเจจ เจนเจจ, เจชเจฐ เจเฉเจเจฐ เจคเฉเจนเจพเจจเฉเฉฐ เจเฉเจธเจ เจตเจฟเฉฑเจ เจคเจฌเจฆเฉเจฒเฉเจเจ เจเจฐเจจ เจเจพเจ เจเจชเจฃเฉ เจเฉเจฆ เจฆเฉ เจจเจฟเจฏเจฎ เจเฉเฉเจจ เจฆเฉ เจฒเฉเฉ เจนเฉ เจคเจพเจ เจเฉ เจนเฉเจตเฉเจเจพ? เจนเจพเจ, เจเจน เจจเจนเฉเจ เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพเฅค
เจเฉเจฌเฉ-เจธเจเฉเจฐ เจตเจฟเจธเจคเฉเจฐเจฟเจค เจจเจนเฉเจ เจนเฉ: เจคเฉเจธเฉเจ เจเจธ เจตเจฟเฉฑเจ เจจเฉเจคเฉเจเจ เจจเจนเฉเจ เจเฉเฉ เจธเจเจฆเฉ เจเจพเจ เจเจนเจจเจพเจ เจจเฉเฉฐ เจ เจจเฉเจเฉเจฒ เจจเจนเฉเจ เจเจฐ เจธเจเจฆเฉเฅค
เจเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจเฉฐเจชเจจเฉ เจฆเฉเจเจ เจจเฉเจคเฉเจเจ เจฆเฉ เจชเจพเจฒเจฃเจพ เจฆเฉ เจชเฉเจธเจผเจเฉ เจเจฐเจจ เจฒเจ เจเจธเจเจฎ เจเฉเจธเจ เจฒเจฟเจเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉ, เจคเจพเจ เจคเฉเจธเฉเจ เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเฉ เจเจพเจฐ เจเฉเจฒเจพเจ เจตเจฟเฉฑเจเฉเจ เจเฉฑเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐ เจธเจเจฆเฉ เจนเฉ: config-lint, copper, confest, เจเจพเจ polaris.
3. เจเฉเจจเจซเจฟเจ-เจฒเจฟเฉฐเจ
Config-lint YAML, JSON, Terraform, CSV เจธเฉฐเจฐเจเจจเจพ เจซเจพเจเจฒเจพเจ เจ เจคเฉ Kubernetes เจฎเฉเจจเฉเจซเฉเจธเจเจพเจ เจจเฉเฉฐ เจชเฉเจฐเจฎเจพเจฃเจฟเจค เจเจฐเจจ เจฒเจ เจเฉฑเจ เจเฉเจฒ เจนเฉเฅค
เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเจธเจจเฉเฉฐ เจเฉฐเจธเจเจพเจฒ เจเจฐ เจธเจเจฆเฉ เจนเฉ
เจ เจธเจฒ เจฒเฉเจ เจฒเจฟเจเจฃ เจฆเฉ เจธเจฎเฉเจ เจฆเฉ เจคเฉเจฐ 'เจคเฉ เจฎเฉเจเฉเจฆเจพ เจฐเจฟเจฒเฉเจเจผ 1.5.0 เจนเฉเฅค
Config-lint เจตเจฟเฉฑเจ Kubernetes เจฎเฉเจจเฉเจซเฉเจธเจเจพเจ เจจเฉเฉฐ เจชเฉเจฐเจฎเจพเจฃเจฟเจค เจเจฐเจจ เจฒเจ เจฌเจฟเจฒเจ-เจเจจ เจเฉเจธเจ เจจเจนเฉเจ เจนเฉเฉฐเจฆเฉ เจนเจจเฅค
เจเฉเจ เจตเฉ เจเฉเจธเจ เจเจฐเจตเจพเจเจฃ เจฒเจ, เจคเฉเจนเจพเจจเฉเฉฐ เจเจเจฟเจค เจจเจฟเจฏเจฎ เจฌเจฃเจพเจเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉเฅค เจเจน YAML เจซเจพเจเจฒเจพเจ เจตเจฟเฉฑเจ เจฒเจฟเจเฉ เจเจ เจนเจจ เจเจฟเจนเจจเจพเจ เจจเฉเฉฐ "เจจเจฟเจฏเจฎ" เจเจฟเจนเจพ เจเจพเจเจฆเจพ เจนเฉ (เจจเจฟเจฏเจฎ), เจ เจคเฉ เจนเฉเจ เจฆเจฟเฉฑเจคเฉ เจฌเจฃเจคเจฐ เจนเฉ:
version: 1
description: Rules for Kubernetes spec files
type: Kubernetes
files:
- "*.yaml"
rules:
# ัะฟะธัะพะบ ะฟัะฐะฒะธะป
(rule.yaml
)
เจเจ เจเจธเจฆเจพ เจนเฉเจฐ เจงเจฟเจเจจ เจจเจพเจฒ เจ เจงเจฟเจเจจ เจเจฐเฉเจ:
- เจเฉเจคเจฐ
type
เจฆเฉฑเจธเจฆเจพ เจนเฉ เจเจฟ เจเจฟเจธ เจเจฟเจธเจฎ เจฆเฉ เจธเฉฐเจฐเจเจจเจพ config-lint เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเฉเจเฉเฅค 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
[]
Config-lint เจเฉฑเจ เจธเจผเจพเจจเจฆเจพเจฐ เจซเจฐเฉเจฎเจตเจฐเจ เจนเฉ เจเฉ เจคเฉเจนเจพเจจเฉเฉฐ YAML DSL เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ Kubernetes YAML เจฎเฉเจจเฉเจซเฉเจธเจ เจจเฉเฉฐ เจชเฉเจฐเจฎเจพเจฃเจฟเจค เจเจฐเจจ เจฒเจ เจเจชเจฃเฉ เจเฉเจฆ เจฆเฉ เจเฉเจธเจ เจฌเจฃเจพเจเจฃ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉเฅค
เจชเจฐ เจเจฆเฉเจ เจเฉ เจเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจตเจงเฉเจฐเฉ เจเฉเฉฐเจเจฒเจฆเจพเจฐ เจคเจฐเจ เจ เจคเฉ เจเฉเจธเจเจพเจ เจฆเฉ เจฒเฉเฉ เจนเฉ? เจเฉ YAML เจเจธ เจฒเจ เจฌเจนเฉเจค เจธเฉเจฎเจค เจจเจนเฉเจ เจนเฉ? เจเฉ เจคเฉเจธเฉเจ เจเฉฑเจ เจชเฉเจฐเฉ เจชเฉเจฐเฉเจเจฐเจพเจฎเจฟเฉฐเจ เจญเจพเจธเจผเจพ เจตเจฟเฉฑเจ เจเฉเจธเจ เจฌเจฃเจพ เจธเจเจฆเฉ เจนเฉ เจคเจพเจ เจเฉ เจนเฉเจตเฉเจเจพ?
4. เจคเจพเจเจฌเจพ
เจนเจพเจฒเจพเจเจเจฟ, เจเจน เจฌเจพเจ เจฆ เจตเจพเจฒเฉ เจจเจพเจฒเฉเจ เจตเฉฑเจเจฐเจพ เจนเฉ เจเจฟเจเจเจเจฟ เจเจน เจเฉเจธเจเจพเจ เจฆเจพ เจตเจฐเจฃเจจ เจเจฐเจจ เจฒเจ YAML เจฆเฉ เจตเจฐเจคเฉเจ เจจเจนเฉเจ เจเจฐเจฆเจพ เจนเฉเฅค เจเจธเจฆเฉ เจฌเจเจพเจ เจเฉเจธเจเจพเจ เจจเฉเฉฐ JavaScript เจตเจฟเฉฑเจ เจฒเจฟเจเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค เจเจพเจชเจฐ เจเจ เจฌเฉเจจเจฟเจเจฆเฉ เจธเจพเจงเจจเจพเจ เจจเจพเจฒ เจเฉฑเจ เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจฆเจพ เจนเฉ, เจเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจเฉเจฌเจฐเจจเฉเจเจธ เจตเจธเจคเฉเจเจ เจฌเจพเจฐเฉ เจเจพเจฃเจเจพเจฐเฉ เจชเฉเฉเจนเจจ เจ เจคเฉ เจเจฒเจคเฉเจเจ เจฆเฉ เจฐเจฟเจชเฉเจฐเจ เจเจฐเจจ เจตเจฟเฉฑเจ เจฎเจฆเจฆ เจเจฐเจฆเจพ เจนเฉเฅค
เจเจพเจชเจฐ เจจเฉเฉฐ เจเฉฐเจธเจเจพเจฒ เจเจฐเจจ เจฒเจ เจเจฆเจฎ เจตเจฟเฉฑเจ เจฒเฉฑเจญเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉ
2.0.1 เจ เจธเจฒเฉ เจฒเฉเจ เจฒเจฟเจเจฃ เจฆเฉ เจธเจฎเฉเจ เจเจธ เจเจชเจฏเฉเจเจคเจพ เจฆเจพ เจจเจตเฉเจจเจคเจฎ เจฐเฉเจฒเฉเจเจผ เจนเฉเฅค
config-lint เจตเจพเจเจ, เจเจพเจชเจฐ เจตเจฟเฉฑเจ เจฌเจฟเจฒเจ-เจเจจ เจเฉเจธเจ เจจเจนเฉเจ เจนเฉเฉฐเจฆเฉ เจนเจจเฅค เจเจฒเฉ เจเฉฑเจ เจฒเจฟเจเจฆเฉ เจนเจพเจเฅค เจเจธ เจจเฉเฉฐ เจเจพเจเจ เจเจฐเจจ เจฆเจฟเจ เจเจฟ เจคเฉเจจเจพเจคเฉเจเจ เจตเจฟเจธเจผเฉเจธเจผ เจคเฉเจฐ 'เจคเฉ เจญเจฐเฉเจธเฉเจฏเฉเจ เจฐเจฟเจชเฉเจเจผเจเจฐเฉเจเจ เจเจฟเจตเฉเจ เจเจฟ เจเฉฐเจเฉเจจเจฐ เจเจฟเฉฑเจคเจฐเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉเจเจ เจนเจจ 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 เจตเจฟเจธเจผเฉเจธเจผเจคเจพเจตเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐ เจธเจเจฆเฉ เจนเฉ, เจเจฟเจตเฉเจ เจเจฟ เจธเจเฉเจฐเจฟเฉฐเจ เจเฉฐเจเจฐเจชเฉเจฒเฉเจธเจผเจจ, เจซเฉฐเจเจธเจผเจจ, เจเจฆเจฟเฅค
เจเจน เจตเฉ เจจเฉเจ เจเฉเจคเจพ เจเจพเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ เจเจฟ เจเจพเจชเจฐ เจฆเจพ เจฎเฉเจเฉเจฆเจพ เจธเฉฐเจธเจเจฐเจฃ JavaScript เจเฉฐเจเจฃ เจฆเฉ ES5 เจธเฉฐเจธเจเจฐเจฃ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉ, ES6 เจจเจพเจฒ เจจเจนเฉเจเฅค
'เจคเฉ เจเจชเจฒเจฌเจง เจตเฉเจฐเจตเฉ
เจนเจพเจฒเจพเจเจเจฟ, เจเฉเจเจฐ เจคเฉเจธเฉเจ เจธเฉฑเจเจฎเฉเฉฑเจ JavaScript เจจเฉเฉฐ เจชเจธเฉฐเจฆ เจจเจนเฉเจ เจเจฐเจฆเฉ เจนเฉ เจ เจคเฉ เจธเจตเจพเจฒ เจฌเจฃเจพเจเจฃ เจ เจคเฉ เจจเฉเจคเฉเจเจ เจฆเจพ เจตเจฐเจฃเจจ เจเจฐเจจ เจฒเจ เจเจพเจธ เจคเฉเจฐ 'เจคเฉ เจคเจฟเจเจฐ เจเฉเจคเฉ เจเจ เจญเจพเจธเจผเจพ เจจเฉเฉฐ เจคเจฐเจเฉเจน เจฆเจฟเฉฐเจฆเฉ เจนเฉ, เจคเจพเจ เจคเฉเจนเจพเจจเฉเฉฐ เจตเจฟเจตเจพเจฆ เจตเฉฑเจฒ เจงเจฟเจเจจ เจฆเฉเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉเฅค
5. Conftest
Confest เจธเฉฐเจฐเจเจจเจพ เจกเฉเจเจพ เจฆเฉ เจเจพเจเจ เจฒเจ เจเฉฑเจ เจขเจพเจเจเจพ เจนเฉเฅค เจเฉเจฌเจฐเจจเฉเจเจธ เจฎเฉเจจเฉเจซเฉเจธเจ เจฆเฉ เจเจพเจเจ/เจชเฉเจคเจพเจฒ เจฒเจ เจตเฉ เจขเฉเจเจตเจพเจ เจนเฉเฅค เจเฉเจธเจเจพเจ เจฆเจพ เจตเจฐเจฃเจจ เจเฉฑเจ เจตเจฟเจธเจผเฉเจธเจผ เจชเฉเฉฑเจเจเจฟเฉฑเจ เจญเจพเจธเจผเจพ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ
เจคเฉเจธเฉเจ เจตเจฐเจค เจเฉ เจเจจเจซเฉเจธเจ เจเฉฐเจธเจเจพเจฒ เจเจฐ เจธเจเจฆเฉ เจนเฉ
เจ เจธเจฒ เจฒเฉเจ เจฒเจฟเจเจฃ เจฆเฉ เจธเจฎเฉเจ, เจเจชเจฒเจฌเจง เจจเจตเฉเจจเจคเจฎ เจธเฉฐเจธเจเจฐเจฃ 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
เจเฉเจธเจ เจ เจจเฉเจฎเจพเจจเจค เจคเฉเจฐ 'เจคเฉ เจ เจธเจซเจฒ เจฐเจฟเจนเจพ เจเจฟเจเจเจเจฟ เจเจฟเฉฑเจคเจฐ เจเฉฑเจ เจ เจตเจฟเจธเจผเจตเจพเจธ เจธเจฐเฉเจค เจคเฉเจ เจเจ เจธเจจเฅค
เจฐเฉเจเฉ เจซเจพเจเจฒ เจตเจฟเฉฑเจ เจ
เจธเฉเจ เจฌเจฒเจพเจ เจจเฉเฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเจฐเจฆเฉ เจนเจพเจ deny
. เจเจธ เจฆเฉ เจธเฉฑเจเจพเจ เจจเฉเฉฐ เจเจฒเฉฐเจเจฃเจพ เจฎเฉฐเจจเจฟเจ เจเจพเจเจฆเจพ เจนเฉเฅค เจเฉเจเจฐ เจฌเจฒเจพเจ deny
เจเจ, เจเฉฐเจเฉเจธเจ เจเจนเจจเจพเจ เจจเฉเฉฐ เจเฉฑเจ เจฆเฉเจเฉ เจคเฉเจ เจธเฉเจคเฉฐเจคเจฐ เจคเฉเจฐ 'เจคเฉ เจเจพเจเจเจฆเฉ เจนเจจ, เจ
เจคเฉ เจเจฟเจธเฉ เจตเฉ เจฌเจฒเจพเจ เจฆเฉ เจธเฉฑเจเจพเจ เจจเฉเฉฐ เจเจฒเฉฐเจเจฃเจพ เจฎเฉฐเจจเจฟเจ เจเจพเจเจฆเจพ เจนเฉเฅค
เจกเจฟเจซเฉเจฒเจ เจเจเจเจชเฉเฉฑเจ เจคเฉเจ เจเจฒเจพเจตเจพ, เจเจจเจซเฉเจธเจ JSON, TAP เจ
เจคเฉ เจเฉเจฌเจฒ เจซเจพเจฐเจฎเฉเจ เจฆเจพ เจธเจฎเจฐเจฅเจจ เจเจฐเจฆเจพ เจนเฉ - เจเฉฑเจ เจฌเจนเฉเจค เจนเฉ เจเจชเจฏเฉเจเฉ เจตเจฟเจธเจผเฉเจธเจผเจคเจพ เจเฉเจเจฐ เจคเฉเจนเจพเจจเฉเฉฐ เจฎเฉเจเฉเจฆเจพ CI เจชเจพเจเจชเจฒเจพเจเจจ เจตเจฟเฉฑเจ เจฐเจฟเจชเฉเจฐเจเจพเจ เจจเฉเฉฐ เจเจฎเจฌเฉเจก เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฅค เจคเฉเจธเฉเจ เจซเจฒเฉเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจฒเฉเฉเฉเจฆเจพ เจซเจพเจฐเจฎเฉเจ เจธเฉเฉฑเจ เจเจฐ เจธเจเจฆเฉ เจนเฉ --output
.
เจจเฉเจคเฉเจเจ เจจเฉเฉฐ เจกเฉเจฌเฉฑเจ เจเจฐเจจเจพ เจเจธเจพเจจ เจฌเจฃเจพเจเจฃ เจฒเจ, เจเจจเจซเฉเจธเจ เจฆเจพ เจเฉฑเจ เจซเจฒเฉเจ เจนเฉ --trace
. เจเจน เจเฉฑเจ เจเจฐเฉเจธ เจเจเจเจชเฉเฉฑเจ เจเจฐเจฆเจพ เจนเฉ เจเจฟ เจเจฟเจตเฉเจ เจเจจเจซเฉเจธเจ เจจเจฟเจฐเจงเจพเจฐเจค เจจเฉเจคเฉ เจซเจพเจเจฒเจพเจ เจจเฉเฉฐ เจชเจพเจฐเจธ เจเจฐเจฆเจพ เจนเฉเฅค
เจฎเฉเจเจพเจฌเจฒเฉ เจฆเฉเจเจ เจจเฉเจคเฉเจเจ เจจเฉเฉฐ OCI (เจเจชเจจ เจเฉฐเจเฉเจจเจฐ เจเจจเฉเจธเจผเฉเจเจเจฟเจต) เจฐเจเจฟเจธเจเจฐเฉเจเจ เจตเจฟเฉฑเจ เจเจฒเจพเจคเจฎเจ เจเฉเจเจผเจพเจ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจชเฉเจฐเจเจพเจธเจผเจฟเจค เจ เจคเฉ เจธเจพเจเจเจพ เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค
ะะพะผะฐะฝะดั 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 เจ
เจเฉ เจธเจฎเจฐเจฅเจฟเจค เจจเจนเฉเจ เจนเฉเฅค เจเจธ เจฒเจ เจเฉเจเจฐ เจคเฉเจธเฉเจ เจตเจฐเจคเจฆเฉ เจนเฉ เจคเจพเจ เจเจชเจฃเฉ เจเจช เจจเฉเฉฐ เจเฉเจธเจผเจเจฟเจธเจฎเจค เจธเจฎเจเฉ
เจเจฐเจเฉเจซเฉเจเจ เจซเจพเจฐเจฎเฉเจ เจฆเฉ เจธเจฎเจพเจจ เจนเฉ
เจคเฉเจธเฉเจ เจจเฉเจคเฉ เจธเจผเฉเจ
เจฐเจฟเฉฐเจ เจ
เจคเฉ เจเจพเจเจเฉเจธเจ เจฆเฉเจเจ เจนเฉเจฐ เจตเจฟเจธเจผเฉเจธเจผเจคเจพเจตเจพเจ เจฌเจพเจฐเฉ เจเฉฑเจฅเฉ เจนเฉเจฐ เจเจพเจฃ เจธเจเจฆเฉ เจนเฉ
6. เจชเฉเจฒเจพเจฐเจฟเจธ
เจเจธ เจฒเฉเจ เจตเจฟเจ เจเจฐเจเจพ เจเฉเจคเฉ เจเจพเจตเฉเจเฉ, เจเฉ เจเจฟ เจเจเจฐเฉ เจธเฉฐเจฆ เจนเฉ
เจชเฉเจฒเจพเจฐเจฟเจธ เจจเฉเฉฐ เจเฉฑเจ เจเจฒเฉฑเจธเจเจฐ เจตเจฟเฉฑเจ เจธเจฅเจพเจชเจฟเจค เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉ เจเจพเจ เจเจฎเจพเจเจก เจฒเจพเจเจจ เจฎเฉเจก เจตเจฟเฉฑเจ เจตเจฐเจคเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค เจเจฟเจตเฉเจ เจเจฟ เจคเฉเจธเฉเจ เจ เจจเฉเจฎเจพเจจ เจฒเจเจพเจเจ เจนเฉเจตเฉเจเจพ, เจเจน เจคเฉเจนเจพเจจเฉเฉฐ เจเฉเจฌเจฐเจจเฉเจเจธ เจฎเฉเจจเฉเจซเฉเจธเจเจธ เจฆเจพ เจธเจฅเจฟเจฐ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจเจฐเจจ เจฆเฉ เจเจเจฟเจ เจฆเจฟเฉฐเจฆเจพ เจนเฉเฅค
เจเจฎเจพเจเจก เจฒเจพเจเจจ เจฎเฉเจก เจตเจฟเฉฑเจ เจเฉฑเจฒเจฃ เจตเฉเจฒเฉ, เจฌเจฟเจฒเจ-เจเจจ เจเฉเจธเจ เจธเฉเจฐเฉฑเจเจฟเจ เจ เจคเฉ เจตเจงเฉเจ เจ เจญเจฟเจเจธเจพเจ (เจเจฟเจเจฌ-เจธเจเฉเจฐ เจฆเฉ เจธเจฎเจพเจจ) เจตเจฐเจเฉ เจเฉเจคเจฐเจพเจ เจจเฉเฉฐ เจเจตเจฐ เจเจฐเจจ เจฒเจ เจเจชเจฒเจฌเจง เจนเฉเฉฐเจฆเฉ เจนเจจเฅค เจเจธ เจคเฉเจ เจเจฒเจพเจตเจพ, เจคเฉเจธเฉเจ เจเจชเจฃเฉ เจเฉเจฆ เจฆเฉ เจเฉเจธเจ เจฌเจฃเจพ เจธเจเจฆเฉ เจนเฉ (เจเจฟเจตเฉเจ เจเจฟ config-lint, copper เจ เจคเฉ confest เจตเจฟเฉฑเจ)เฅค
เจฆเฉเจเฉ เจธเจผเจฌเจฆเจพเจ เจตเจฟเฉฑเจ, เจชเฉเจฒเจพเจฐเจฟเจธ เจเฉเจฒเจธ เจฆเฉเจเจ เจฆเฉเจตเจพเจ เจธเจผเฉเจฐเฉเจฃเฉเจเจ เจฆเฉ เจฒเจพเจญเจพเจ เจจเฉเฉฐ เจเฉเฉเจฆเจพ เจนเฉ: เจฌเจฟเจฒเจ-เจเจจ เจ เจคเฉ เจเจธเจเจฎ เจเฉเจธเจเจพเจ เจฆเฉ เจจเจพเจฒเฅค
เจเจฎเจพเจเจก เจฒเจพเจเจจ เจฎเฉเจก เจตเจฟเฉฑเจ เจชเฉเจฒเจพเจฐเจฟเจธ เจจเฉเฉฐ เจธเจฅเจพเจชเจฟเจค เจเจฐเจจ เจฒเจ, เจตเจฐเจคเฉ
เจ เจธเจฒ เจฒเฉเจ เจฒเจฟเจเจฃ เจฆเฉ เจธเจฎเฉเจ, เจธเฉฐเจธเจเจฐเจฃ 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": [
/* ะดะปะธะฝะฝัะน ัะฟะธัะพะบ */
]
}
เจชเฉเจฐเจพ เจเจเจเจชเฉเฉฑเจ เจเจชเจฒเจฌเจง เจนเฉ
เจเจฟเจเจฌ-เจธเจเฉเจฐ เจตเจพเจเจ, เจชเฉเจฒเจพเจฐเจฟเจธ เจเจนเจจเจพเจ เจเฉเจคเจฐเจพเจ เจตเจฟเฉฑเจ เจฎเฉเฉฑเจฆเจฟเจเจ เจฆเฉ เจชเจเจพเจฃ เจเจฐเจฆเจพ เจนเฉ เจเจฟเฉฑเจฅเฉ เจฎเฉเจจเฉเจซเฉเจธเจ เจตเจงเฉเจ เจ เจญเจฟเจเจธเจพเจ เจจเฉเฉฐ เจชเฉเจฐเจพ เจจเจนเฉเจ เจเจฐเจฆเจพ เจนเฉ:
- เจซเจฒเฉเจเจ เจฒเจ เจเฉเจ เจธเจฟเจนเจค เจเจพเจเจ เจจเจนเฉเจ เจนเฉเฅค
- เจเฉฐเจเฉเจจเจฐ เจเจฟเฉฑเจคเจฐเจพเจ เจฒเจ เจเฉเจ เจจเจฟเจฐเจงเจพเจฐเจค เจจเจนเฉเจ เจเฉเจคเฉ เจเจ เจนเจจเฅค
- เจเฉฐเจเฉเจจเจฐ เจฐเฉเจ เจฆเฉ เจคเฉเจฐ เจคเฉ เจเฉฑเจฒเจฆเจพ เจนเฉ.
- เจฎเฉเจฎเฉเจฐเฉ เจ เจคเฉ CPU เจฒเจ เจฌเฉเจจเจคเฉเจเจ เจ เจคเฉ เจธเฉเจฎเจพเจตเจพเจ เจจเจฟเจฐเจงเจพเจฐเจค เจจเจนเฉเจ เจเฉเจคเฉเจเจ เจเจเจเจ เจนเจจเฅค
เจนเจฐเฉเจ เจเฉเจธเจ, เจเจธเจฆเฉ เจจเจคเฉเจเจฟเจเจ 'เจคเฉ เจจเจฟเจฐเจญเจฐ เจเจฐเจฆเจพ เจนเฉ, เจจเฉเฉฐ เจจเจพเจเจผเฉเจเจคเจพ เจฆเฉ เจเฉฑเจ เจกเจฟเจเจฐเฉ เจจเจฟเจฐเจงเจพเจฐเจค เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ: เจเฉเจคเจพเจตเจจเฉ เจ เจเจผเจคเจฐเจพ. เจเจชเจฒเจฌเจง เจฌเจฟเจฒเจ-เจเจจ เจเฉเจธเจเจพเจ เจฌเจพเจฐเฉ เจนเฉเจฐ เจเจพเจฃเจจ เจฒเจ, เจเจฟเจฐเจชเจพ เจเจฐเจเฉ เจตเฉเจเฉ
เจเฉเจเจฐ เจตเฉเจฐเจตเจฟเจเจ เจฆเฉ เจฒเฉเฉ เจจเจนเฉเจ เจนเฉ, เจคเจพเจ เจคเฉเจธเฉเจ เจเฉฐเจกเจพ เจจเจฟเจธเจผเจเจฟเจค เจเจฐ เจธเจเจฆเฉ เจนเฉ --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
เจชเฉเจฒเจพเจฐเจฟเจธ เจเจธเจเจฎ เจเฉเจธเจเจพเจ เจฆเฉ เจจเจพเจฒ เจฌเจฟเจฒเจ-เจเจจ เจเฉเจธเจเจพเจ เจฆเฉ เจชเฉเจฐเจคเฉ เจเจฐเจฆเจพ เจนเฉ, เจเจธ เจคเจฐเฉเจนเจพเจ เจฆเฉเจตเจพเจ เจธเฉฐเจธเจพเจฐเจพเจ เจฆเฉ เจธเจญ เจคเฉเจ เจตเจงเฉเจ เจจเฉเฉฐ เจเฉเฉเจฆเจพ เจนเฉเฅค
เจฆเฉเจเฉ เจชเจพเจธเฉ, เจฐเฉเจเฉ เจเจพเจ เจเจพเจตเจพ เจธเจเฉเจฐเจฟเจชเจ เจตเจฐเจเฉเจเจ เจตเจงเฉเจฐเฉ เจธเจผเจเจคเฉเจธเจผเจพเจฒเฉ เจญเจพเจธเจผเจพเจตเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจ เจฆเฉ เจ เจธเจฎเจฐเฉฑเจฅเจพ เจตเจงเฉเจฐเฉ เจเฉเฉฐเจเจฒเจฆเจพเจฐ เจเฉเจธเจเจพเจ เจฆเฉ เจธเจฟเจฐเจเจฃเจพ เจจเฉเฉฐ เจฐเฉเจเจฃ เจฒเจ เจเฉฑเจ เจธเฉเจฎเจค เจเจพเจฐเจ เจนเฉ เจธเจเจฆเฉ เจนเฉเฅค
เจชเฉเจฒเจพเจฐเจฟเจธ เจฌเจพเจฐเฉ เจนเฉเจฐ เจเจพเจฃเจเจพเจฐเฉ เจเฉฑเจฅเฉ เจเจชเจฒเจฌเจง เจนเฉ
เจธเฉฐเจเฉเจช
เจเจฆเฉเจ เจเจฟ เจเฉเจฌเจฐเจจเฉเจเจธ YAML เจซเจพเจเจฒเจพเจ เจฆเจพ เจฎเฉเจเจเจจเจพ เจ เจคเฉ เจฎเฉเจฒเจพเจเจเจฃ เจเจฐเจจ เจฒเจ เจฌเจนเฉเจค เจธเจพเจฐเฉ เจธเจพเจงเจจ เจเจชเจฒเจฌเจง เจนเจจ, เจเฉเจธเจเจพเจ เจจเฉเฉฐ เจเจฟเจตเฉเจ เจกเจฟเจเจผเจพเจเจจ เจ เจคเฉ เจฒเจพเจเฉ เจเฉเจคเจพ เจเจพเจตเฉเจเจพ เจเจธ เจฌเจพเจฐเฉ เจธเจชเจธเจผเจ เจธเจฎเจ เจนเฉเจฃเจพ เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจจ เจนเฉ.
เจฎเจฟเจธเจพเจฒ เจฒเจ, เจเฉเจเจฐ เจคเฉเจธเฉเจ เจชเจพเจเจชเจฒเจพเจเจจ เจตเจฟเฉฑเจเฉเจ เจฒเฉฐเจ เจฐเจนเฉ เจเฉเจฌเจฐเจจเฉเจเจธ เจฎเฉเจจเฉเจซเฉเจธเจเจธ เจจเฉเฉฐ เจฒเฉเจเจฆเฉ เจนเฉ, เจคเจพเจ เจเฉเจฌเฉเจตเจพเจฒ เจ เจเจฟเจนเฉ เจชเจพเจเจชเจฒเจพเจเจจ เจตเจฟเฉฑเจ เจชเจนเจฟเจฒเจพ เจเจฆเจฎ เจนเฉ เจธเจเจฆเจพ เจนเฉเฅค. เจเจน เจจเจฟเจเจฐเจพเจจเฉ เจเจฐเฉเจเจพ เจเจฟ เจเฉ เจเจฌเจเฉเจเจ เจชเจฐเจฟเจญเจพเจธเจผเจพ Kubernetes API เจธเจเฉเจฎเจพ เจฆเฉ เจ เจจเฉเจเฉเจฒ เจนเฉ เจเจพเจ เจจเจนเฉเจเฅค
เจเฉฑเจ เจตเจพเจฐ เจเจฆเฉเจ เจ เจเจฟเจนเฉ เจธเจฎเฉเจเจฟเจ เจชเฉเจฐเฉ เจนเฉ เจเจพเจเจฆเฉ เจนเฉ, เจคเจพเจ เจเฉเจ เจนเฉเจฐ เจตเจงเฉเจ เจเฉเจธเจเจพเจ เจตเฉฑเจฒ เจตเจง เจธเจเจฆเจพ เจนเฉ, เจเจฟเจตเฉเจ เจเจฟ เจฎเจฟเจเจฐเฉ เจตเจงเฉเจ เจ เจญเจฟเจเจธเจพเจ เจ เจคเฉ เจเจพเจธ เจจเฉเจคเฉเจเจ เจฆเฉ เจชเจพเจฒเจฃเจพเฅค เจเจน เจเจน เจฅเจพเจ เจนเฉ เจเจฟเฉฑเจฅเฉ เจเจฟเจเจฌ-เจธเจเฉเจฐ เจ เจคเฉ เจชเฉเจฒเจพเจฐเจฟเจธ เจเฉฐเจฎ เจเจเจฃเจเฉเฅค
เจเจนเจจเจพเจ เจฒเจ เจเจฟเจนเจจเจพเจ เจฆเฉเจเจ เจเฉเฉฐเจเจฒเจฆเจพเจฐ เจฒเฉเฉเจพเจ เจนเจจ เจ เจคเฉ เจเจนเจจเจพเจ เจจเฉเฉฐ เจตเจฟเจธเจฅเจพเจฐ เจตเจฟเฉฑเจ เจเฉเจธเจเจพเจ เจจเฉเฉฐ เจ เจจเฉเจเฉเจฒเจฟเจค เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉ, เจคเจพเจเจฌเจพ, เจเฉเจเจซเจฟเจ-เจฒเจฟเฉฐเจ เจ เจคเฉ เจเจจเจซเฉเจธเจ เจขเฉเจเจตเฉเจ เจนเฉเจฃเจเฉเฅค.
Confest เจ เจคเฉ config-lint เจเจธเจเจฎ เจเฉเจธเจเจพเจ เจจเฉเฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเจฐเจจ เจฒเจ YAML เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเจจ, เจ เจคเฉ เจเจพเจชเจฐ เจคเฉเจนเจพเจจเฉเฉฐ เจเฉฑเจ เจชเฉเจฐเฉ เจชเฉเจฐเฉเจเฉเจฐเจพเจฎเจฟเฉฐเจ เจญเจพเจธเจผเจพ เจคเฉฑเจ เจชเจนเฉเฉฐเจ เจฆเจฟเฉฐเจฆเจพ เจนเฉ, เจเจธ เจจเฉเฉฐ เจเฉฑเจ เจฌเจนเฉเจค เจนเฉ เจเจเจฐเจธเจผเจ เจตเจฟเจเจฒเจช เจฌเจฃเจพเจเจเจฆเจพ เจนเฉเฅค
เจฆเฉเจเฉ เจชเจพเจธเฉ, เจเฉ เจเจนเจจเจพเจ เจตเจฟเฉฑเจเฉเจ เจเจฟเจธเฉ เจเฉฑเจ เจเฉเจฒ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจเจพ เจ เจคเฉ เจเจธเจฒเจ, เจธเจพเจฐเฉ เจเฉเจธเจเจพเจ เจจเฉเฉฐ เจนเฉฑเจฅเฉเจ เจฌเจฃเจพเจเจฃเจพ, เจเจพเจ เจชเฉเจฒเจพเจฐเจฟเจธ เจจเฉเฉฐ เจคเจฐเจเฉเจน เจฆเฉเจฃเจพ เจ เจคเฉ เจธเจฟเจฐเจซเจผ เจเจนเฉ เจเฉเฉเจจเจพ เจนเฉ เจเฉ เจเจธ เจตเจฟเฉฑเจ เจฒเฉเฉเฉเจเจฆเจพ เจนเฉ? เจเจธ เจธเจตเจพเจฒ เจฆเจพ เจเฉเจ เจธเจชเฉฑเจธเจผเจ เจเจตเจพเจฌ เจจเจนเฉเจ เจนเฉ.
เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเฉ เจธเจพเจฐเจฃเฉ เจนเจฐเฉเจ เจเฉเจฒ เจฆเจพ เจธเฉฐเจเฉเจช เจตเจฐเจฃเจจ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจฆเฉ เจนเฉ:
เจเฉเจฒ
เจเจฆเฉเจธเจผ
shortcomings
เจเจชเจญเฉเจเจคเจพ เจเฉเจธเจ
เจเฉเจฌเฉเจตเจพเจฒ
API เจธเจเฉเจฎเจพ เจฆเฉ เจเฉฑเจ เจเจพเจธ เจธเฉฐเจธเจเจฐเจฃ เจฆเฉ เจตเจฟเจฐเฉเฉฑเจง YAML เจชเฉเจฐเจเจเจพเจตเฉ เจจเฉเฉฐ เจชเฉเจฐเจฎเจพเจฃเจฟเจค เจเจฐเจฆเจพ เจนเฉ
CRD เจจเจพเจฒ เจเฉฐเจฎ เจจเจนเฉเจ เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ
เจเฉเจ
kube-เจธเจเฉเจฐ
เจธเจญ เจคเฉเจ เจตเจงเฉเจ เจ
เจญเจฟเจเจธเจพเจ เจฆเฉ เจตเจฟเจฐเฉเฉฑเจง YAML เจชเฉเจฐเจเจเจพเจตเฉ เจฆเจพ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจเจฐเจฆเจพ เจนเฉ
เจธเจฐเฉเจคเจพเจ เจฆเฉ เจเจพเจเจ เจเจฐเจจ เจฒเจ เจคเฉเจนเจพเจกเฉ Kubernetes API เจธเฉฐเจธเจเจฐเจฃ เจฆเฉ เจเฉเจฃ เจจเจนเฉเจ เจเฉเจคเฉ เจเจพ เจธเจเจฆเฉ
เจเฉเจ
เจคเจพเจเจฌเจพ
YAML เจฎเฉเจจเฉเจซเฉเจธเจ เจฒเจ เจเจธเจเจฎ JavaScript เจเฉเจธเจ เจฌเจฃเจพเจเจฃ เจฒเจ เจเฉฑเจ เจเจฎ เจซเจฐเฉเจฎเจตเจฐเจ
เจเฉเจ เจฌเจฟเจฒเจ-เจเจจ เจเฉเจธเจ เจจเจนเฉเจ เจนเจจเฅค เจเจฐเจพเจฌ เจฆเจธเจคเจพเจตเฉเจเจผ
เจเฉ
config-lint
YAML เจตเจฟเฉฑเจ เจเจฎเจฌเฉเจก เจเฉเจคเฉ เจเฉฑเจ เจกเฉเจฎเฉเจจ-เจตเจฟเจธเจผเฉเจธเจผ เจญเจพเจธเจผเจพ เจตเจฟเฉฑเจ เจเฉเจธเจ เจฌเจฃเจพเจเจฃ เจฒเจ เจเฉฑเจ เจเจฎ เจซเจฐเฉเจฎเจตเจฐเจเฅค เจตเฉฑเจ-เจตเฉฑเจ เจธเฉฐเจฐเจเจจเจพ เจซเจพเจฐเจฎเฉเจเจพเจ เจฆเจพ เจธเจฎเจฐเจฅเจจ เจเจฐเจฆเจพ เจนเฉ (เจเจฟเจตเฉเจ เจเจฟ เจเฉเจฐเจพเจซเจพเจฐเจฎ)
เจเฉเจ เจฐเฉเจกเฉเจฎเฉเจก เจเฉเจธเจ เจจเจนเฉเจ เจนเจจเฅค เจฌเจฟเจฒเจ-เจเจจ เจฆเจพเจ
เจตเฉ เจ
เจคเฉ เจซเฉฐเจเจธเจผเจจ เจเจพเจซเจผเฉ เจจเจนเฉเจ เจนเฉ เจธเจเจฆเฉ เจนเจจ
เจเฉ
เจฎเฉเจเจพเจฌเจฒเจพ
เจฐเฉเจเฉ (เจเฉฑเจ เจตเจฟเจธเจผเฉเจธเจผ เจชเฉเฉฑเจเจเจฟเฉฑเจ เจญเจพเจธเจผเจพ) เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจคเฉเจนเจพเจกเฉ เจเจชเจฃเฉ เจเฉเจธเจ เจฌเจฃเจพเจเจฃ เจฒเจ เจเฉฑเจ เจขเจพเจเจเจพเฅค OCI เจฌเฉฐเจกเจฒเจพเจ เจฐเจพเจนเฉเจ เจจเฉเจคเฉเจเจ เจจเฉเฉฐ เจธเจพเจเจเจพ เจเจฐเจจ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉ
เจเฉเจ เจฌเจฟเจฒเจ-เจเจจ เจเฉเจธเจ เจจเจนเฉเจ เจนเจจเฅค เจฎเฉเจจเฉเฉฐ เจฐเฉเจเฉ เจธเจฟเฉฑเจเจฃเจพ เจนเฉเฅค เจจเฉเจคเฉเจเจ เจชเฉเจฐเจเจพเจธเจผเจฟเจค เจเจฐเจจ เจตเฉเจฒเฉ เจกเฉเจเจฐ เจนเฉฑเจฌ เจธเจฎเจฐเจฅเจฟเจค เจจเจนเฉเจ เจนเฉ
เจเฉ
เจชเฉเจฒเจฐเจฟเจธ
เจธเจฎเฉเจเจฟเจเจตเจพเจ YAML เจฎเจฟเจเจฐเฉ เจตเจงเฉเจ เจ
เจญเจฟเจเจธเจพเจ เจฆเฉ เจตเจฟเจฐเฉเฉฑเจง เจชเฉเจฐเจเจ เจนเฉเฉฐเจฆเจพ เจนเฉเฅค เจคเฉเจนเจพเจจเฉเฉฐ JSON เจธเจเฉเจฎเจพ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเจชเจฃเฉ เจเฉเจฆ เจฆเฉ เจเฉเจธเจ เจฌเจฃเจพเจเจฃ เจฆเฉ เจเจเจฟเจ เจฆเจฟเฉฐเจฆเจพ เจนเฉ
JSON เจธเจเฉเจฎเจพ 'เจคเฉ เจเจงเจพเจฐเจฟเจค เจเฉเจธเจ เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ เจเจพเจซเจผเฉ เจจเจนเฉเจ เจนเฉ เจธเจเจฆเฉเจเจ
เจเฉ
เจเจฟเจเจเจเจฟ เจเจน เจเฉเจฒ เจเฉเจฌเจฐเจจเฉเจเจธ เจเจฒเฉฑเจธเจเจฐ เจคเฉฑเจ เจชเจนเฉเฉฐเจ 'เจคเฉ เจจเจฟเจฐเจญเจฐ เจจเจนเฉเจ เจเจฐเจฆเฉ เจนเจจ, เจเจน เจเฉฐเจธเจเจพเจฒ เจเจฐเจจ เจฒเจ เจเจธเจพเจจ เจนเจจเฅค เจเจน เจคเฉเจนเจพเจจเฉเฉฐ เจธเจฐเฉเจค เจซเจพเจเจฒเจพเจ เจจเฉเฉฐ เจซเจฟเจฒเจเจฐ เจเจฐเจจ เจ เจคเฉ เจชเฉเจฐเฉเจเฉเจเจเจพเจ เจตเจฟเฉฑเจ เจชเฉเฉฑเจฒ เจฌเฉเจจเจคเฉเจเจ เจฆเฉ เจฒเฉเจเจเจพเจ เจจเฉเฉฐ เจคเฉเจฐเฉฐเจค เจซเฉเจกเจฌเฉเจ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจจ เจฆเฉ เจเจเจฟเจ เจฆเจฟเฉฐเจฆเฉ เจนเจจ.
เจ เจจเฉเจตเจพเจฆเจ เจคเฉเจ เจชเฉ.เจเจธ
เจธเจพเจกเฉ เจฌเจฒเฉเจ 'เจคเฉ เจตเฉ เจชเฉเฉเจนเฉ:
- ยซ
เจชเฉเจฒเจพเจฐเจฟเจธ เจจเฉเฉฐ เจเฉเจฌเจฐเจจเฉเจเจธ เจเจฒเฉฑเจธเจเจฐเจพเจ เจจเฉเฉฐ เจธเจฟเจนเจคเจฎเฉฐเจฆ เจฐเฉฑเจเจฃ เจฒเจ เจชเฉเจธเจผ เจเฉเจคเจพ เจเจฟเจ "; - ยซ
เจเฉเจฌเจฐเจจเฉเจเจธ เจฒเจ YAML เจธเจฎเจฐเจฅเจจ เจจเจพเจฒ เจตเจฟเจฎ "; - ยซ
เจเฉเจเจฒ เจฆเฉ เจ เจจเฉเจธเจพเจฐ เจเฉฐเจเฉเจจเจฐเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจ เจฒเจ 7 เจธเจญ เจคเฉเจ เจตเจงเฉเจ เจ เจญเจฟเจเจธ ".
เจธเจฐเฉเจค: www.habr.com