forked from nudtpc/pcm-kubernetes
40 lines
1.3 KiB
Go
40 lines
1.3 KiB
Go
package pkg
|
|
|
|
import (
|
|
"context"
|
|
"github.com/sirupsen/logrus"
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
"k8s.io/client-go/dynamic"
|
|
kubernetes2 "k8s.io/client-go/kubernetes"
|
|
)
|
|
|
|
func Pause(name, namespace, kind string, clientSet *kubernetes2.Clientset, dynamicClient dynamic.Interface) {
|
|
// 缩放副本数量为0
|
|
rs := int32(0)
|
|
switch kind {
|
|
case "Deployment":
|
|
deployment, err := clientSet.AppsV1().Deployments(namespace).Get(context.Background(), name, metav1.GetOptions{})
|
|
if err == nil {
|
|
deployment.Spec.Replicas = &rs
|
|
annotations := deployment.GetAnnotations()
|
|
annotations["deploy.cloud.sealos.io/pause"] = `{"target":"","value":""}`
|
|
_, err = clientSet.AppsV1().Deployments(namespace).Update(context.Background(), deployment, metav1.UpdateOptions{})
|
|
if err != nil {
|
|
logrus.Error(err)
|
|
}
|
|
}
|
|
case "StatefulSet":
|
|
sts, err := clientSet.AppsV1().StatefulSets(namespace).Get(context.Background(), name, metav1.GetOptions{})
|
|
if err == nil {
|
|
sts.Spec.Replicas = &rs
|
|
annotations := sts.GetAnnotations()
|
|
annotations["deploy.cloud.sealos.io/pause"] = `{"target":"","value":""}`
|
|
_, err = clientSet.AppsV1().StatefulSets(namespace).Update(context.Background(), sts, metav1.UpdateOptions{})
|
|
|
|
if err != nil {
|
|
logrus.Error(err)
|
|
}
|
|
}
|
|
}
|
|
}
|