如何使用 go-client 在 kubernetes 中重新启动部署

Pat*_*Sai 7 kubernetes kubernetes-go-client

有没有办法使用 go-client 重新启动 kubernetes 部署。我不知道如何实现这一点,请帮助我!

And*_*eda 13

如果你运行,kubectl rollout restart deployment/my-deploy -v=10你会看到 kubectl 实际上向 APIServer 发送了一个 PATCH 请求,并设置了.spec.template.metadata.annotations如下内容:

kubectl.kubernetes.io/restartedAt: '2022-11-29T16:33:08+03:30'
Run Code Online (Sandbox Code Playgroud)

因此,您可以使用 client-go 来执行此操作:

clientset, err :=kubernetes.NewForConfig(config)
if err != nil {
    // Do something with err
}
deploymentsClient := clientset.AppsV1().Deployments(namespace)
data := fmt.Sprintf(`{"spec": {"template": {"metadata": {"annotations": {"kubectl.kubernetes.io/restartedAt": "%s"}}}}}`, time.Now().Format("20060102150405"))
deployment, err := deploymentsClient.Patch(ctx, deployment_name, k8stypes.StrategicMergePatchType, []byte(data), v1.PatchOptions{})
if err != nil {
    // Do something with err
}
Run Code Online (Sandbox Code Playgroud)