1. 程式人生 > >Kubernetes YAML最佳實踐和策略

Kubernetes YAML最佳實踐和策略

Kubernetes工作負載最常用YAML格式的檔案來定義。 YAML的問題之一就是很難描述清單檔案之間的約束或關係。 如果你希望檢查是否已從受信任的登錄檔中提取部署到群集中的所有映像,該怎麼辦? 如何防止沒有Pod安全策略的工作負載提交到叢集? 整合靜態檢查可以在更接近開發生命週期的時間內捕獲錯誤和違反策略的行為。 並且由於改善了資源定義的有效性和安全性,因此你可以相信生產工作負載遵循最佳實踐。 Kubernetes YAML檔案的靜態檢查生態系統可以分為以下幾類: - API驗證程式:此類工具針對Kubernetes API伺服器驗證給定的YAML清單。 - 內建檢查器:此類工具捆綁了針對安全性,最佳實踐等的自覺檢查。 - 自定義驗證器:此類工具允許使用多種語言(例如python和Javascript)編寫自定義檢查。 在本文中,你將學習到六個不同的工具: ```bash Kubeval Kube-score Config-lint Copper Conftest Polaris ``` Let's Go ~~~ ### 基準服務 首先部署一個基準服務,以便後面測試對比 ```yaml 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 ``` 部署完成並驗證如下: ```shell [root@k8s-node001 Test]# kubectl get po NAME READY STATUS RESTARTS AGE http-echo-57dd74545-rtxzm 1/1 Running 0 65s http-echo-57dd74545-trst7 1/1 Running 0 65s [root@k8s-node001 Test]# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE http-echo ClusterIP 10.102.2