[英]Using kubectl rollout restart equivalent with k8s python client
我正在嘗試開發 AWS lambda 以使用 python 客戶端進行rollout restart deployment
。 我在 github 存儲庫或參考資料中找不到任何實現。 在kubectl rollout restart
中使用 -v 並沒有給我足夠的提示來繼續開發。
無論如何,它與 python 客戶端更相關:
https://github.com/kubernetes-client/python
有任何想法嗎? 也許我可能會錯過一些東西
python 客戶端直接與 Kubernetes API 交互。 類似於kubectl
所做的。 但是, kubectl
添加了一些實用命令,其中包含 Kubernetes API 中未包含的邏輯。 Rollout 是這些實用程序之一。
在這種情況下,這意味着您有兩種方法。 您可以對 API 調用kubectl rollout restart進行反向工程。 專業提示:使用 go,您實際上可以導入內部 Kubectl 行為和庫,這非常容易。 所以考慮用 golang 編寫你的 lambda。
或者,您可以讓您的 Lambda 調用 Kubectl 二進制文件(使用 python 中的 process exec 庫)。 但是,這確實意味着您需要以某種方式將二進制文件包含在 lambda 中(通過將其與 lambda 一起上傳或構建包含 k 的kubectl
層)。
@Andre Pires,可以這樣完成:
data := fmt.Sprintf(`{"spec":{"template":{"metadata":{"annotations":{"kubectl.kubernetes.io/restartedAt":"%s"}}}},"strategy":{"type":"RollingUpdate","rollingUpdate":{"maxUnavailable":"%s","maxSurge": "%s"}}}`, time.Now().String(), "25%", "25%")
newDeployment, err := clientImpl.ClientSet.AppsV1().Deployments(item.Pod.Namespace).Patch(context.Background(), deployment.Name, types.StrategicMergePatchType, []byte(data), metav1.PatchOptions{FieldManager: "kubectl-rollout"})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.