Update deployment.go
This commit is contained in:
parent
bedbf1f65a
commit
8ba971e7f2
@ -18,13 +18,11 @@ var Deployment deployment
|
|||||||
|
|
||||||
type deployment struct{}
|
type deployment struct{}
|
||||||
|
|
||||||
//定义列表的返回内容,Items是deployment元素列表,Total为deployment元素数量
|
|
||||||
type DeploymentsResp struct {
|
type DeploymentsResp struct {
|
||||||
Items []appsv1.Deployment `json:"items"`
|
Items []appsv1.Deployment `json:"items"`
|
||||||
Total int `json:"total"`
|
Total int `json:"total"`
|
||||||
}
|
}
|
||||||
|
|
||||||
//定义DeployCreate结构体,用于创建deployment需要的参数属性的定义
|
|
||||||
type DeployCreate struct {
|
type DeployCreate struct {
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
Namespace string `json:"namespace"`
|
Namespace string `json:"namespace"`
|
||||||
@ -38,7 +36,6 @@ type DeployCreate struct {
|
|||||||
HealthPath string `json:"health_path"`
|
HealthPath string `json:"health_path"`
|
||||||
}
|
}
|
||||||
|
|
||||||
//定义DeploysNp类型,用于返回namespace中deployment的数量
|
|
||||||
type DeploysNp struct {
|
type DeploysNp struct {
|
||||||
Namespace string `json:"namespace"`
|
Namespace string `json:"namespace"`
|
||||||
DeployNum int `json:"deployment_num"`
|
DeployNum int `json:"deployment_num"`
|
||||||
@ -46,13 +43,11 @@ type DeploysNp struct {
|
|||||||
|
|
||||||
//获取deployment列表,支持过滤、排序、分页
|
//获取deployment列表,支持过滤、排序、分页
|
||||||
func (d *deployment) GetDeployments(filterName, namespace string, limit, page int) (deploymentsResp *DeploymentsResp, err error) {
|
func (d *deployment) GetDeployments(filterName, namespace string, limit, page int) (deploymentsResp *DeploymentsResp, err error) {
|
||||||
//获取deploymentList类型的deployment列表
|
|
||||||
deploymentList, err := K8s.ClientSet.AppsV1().Deployments(namespace).List(context.TODO(), metav1.ListOptions{})
|
deploymentList, err := K8s.ClientSet.AppsV1().Deployments(namespace).List(context.TODO(), metav1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error(errors.New("获取Deployment列表失败, " + err.Error()))
|
logger.Error(errors.New("获取Deployment列表失败, " + err.Error()))
|
||||||
return nil, errors.New("获取Deployment列表失败, " + err.Error())
|
return nil, errors.New("获取Deployment列表失败, " + err.Error())
|
||||||
}
|
}
|
||||||
//将deploymentList中的deployment列表(Items),放进dataselector对象中,进行排序
|
|
||||||
selectableData := &dataSelector{
|
selectableData := &dataSelector{
|
||||||
GenericDataList: d.toCells(deploymentList.Items),
|
GenericDataList: d.toCells(deploymentList.Items),
|
||||||
DataSelect: &DataSelectQuery{
|
DataSelect: &DataSelectQuery{
|
||||||
@ -68,7 +63,6 @@ func (d *deployment) GetDeployments(filterName, namespace string, limit, page in
|
|||||||
total := len(filtered.GenericDataList)
|
total := len(filtered.GenericDataList)
|
||||||
data := filtered.Sort().Paginate()
|
data := filtered.Sort().Paginate()
|
||||||
|
|
||||||
//将[]DataCell类型的deployment列表转为appsv1.deployment列表
|
|
||||||
deployments := d.fromCells(data.GenericDataList)
|
deployments := d.fromCells(data.GenericDataList)
|
||||||
|
|
||||||
return &DeploymentsResp{
|
return &DeploymentsResp{
|
||||||
@ -90,15 +84,13 @@ func (d *deployment) GetDeploymentDetail(deploymentName, namespace string) (depl
|
|||||||
|
|
||||||
//设置deployment副本数
|
//设置deployment副本数
|
||||||
func (d *deployment) ScaleDeployment(deploymentName, namespace string, scaleNum int) (replica int32, err error) {
|
func (d *deployment) ScaleDeployment(deploymentName, namespace string, scaleNum int) (replica int32, err error) {
|
||||||
//获取autoscalingv1.Scale类型的对象,能点出当前的副本数
|
|
||||||
scale, err := K8s.ClientSet.AppsV1().Deployments(namespace).GetScale(context.TODO(), deploymentName, metav1.GetOptions{})
|
scale, err := K8s.ClientSet.AppsV1().Deployments(namespace).GetScale(context.TODO(), deploymentName, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error(errors.New("获取Deployment副本数信息失败, " + err.Error()))
|
logger.Error(errors.New("获取Deployment副本数信息失败, " + err.Error()))
|
||||||
return 0, errors.New("获取Deployment副本数信息失败, " + err.Error())
|
return 0, errors.New("获取Deployment副本数信息失败, " + err.Error())
|
||||||
}
|
}
|
||||||
//修改副本数
|
|
||||||
scale.Spec.Replicas = int32(scaleNum)
|
scale.Spec.Replicas = int32(scaleNum)
|
||||||
//更新副本数,传入scale对象
|
|
||||||
newScale, err := K8s.ClientSet.AppsV1().Deployments(namespace).UpdateScale(context.TODO(), deploymentName, scale, metav1.UpdateOptions{})
|
newScale, err := K8s.ClientSet.AppsV1().Deployments(namespace).UpdateScale(context.TODO(), deploymentName, scale, metav1.UpdateOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error(errors.New("更新Deployment副本数信息失败, " + err.Error()))
|
logger.Error(errors.New("更新Deployment副本数信息失败, " + err.Error()))
|
||||||
@ -110,7 +102,6 @@ func (d *deployment) ScaleDeployment(deploymentName, namespace string, scaleNum
|
|||||||
|
|
||||||
//创建deployment,接收DeployCreate对象
|
//创建deployment,接收DeployCreate对象
|
||||||
func (d *deployment) CreateDeployment(data *DeployCreate) (err error) {
|
func (d *deployment) CreateDeployment(data *DeployCreate) (err error) {
|
||||||
//初始化appsv1.Deployment类型的对象,并将入参的data数据放进去
|
|
||||||
deployment := &appsv1.Deployment{
|
deployment := &appsv1.Deployment{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: data.Name,
|
Name: data.Name,
|
||||||
@ -187,7 +178,6 @@ func (d *deployment) CreateDeployment(data *DeployCreate) (err error) {
|
|||||||
corev1.ResourceMemory: resource.MustParse(data.Memory),
|
corev1.ResourceMemory: resource.MustParse(data.Memory),
|
||||||
}
|
}
|
||||||
|
|
||||||
//调用sdk创建deployment
|
|
||||||
_, err = K8s.ClientSet.AppsV1().Deployments(data.Namespace).
|
_, err = K8s.ClientSet.AppsV1().Deployments(data.Namespace).
|
||||||
Create(context.TODO(), deployment, metav1.CreateOptions{})
|
Create(context.TODO(), deployment, metav1.CreateOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -211,11 +201,6 @@ func (d *deployment) DeleteDeployment(deploymentName, namespace string) (err err
|
|||||||
|
|
||||||
//重启deployment
|
//重启deployment
|
||||||
func (d *deployment) RestartDeployment(deploymentName, namespace string) (err error) {
|
func (d *deployment) RestartDeployment(deploymentName, namespace string) (err error) {
|
||||||
//此功能等同于一下kubectl命令
|
|
||||||
//kubectl deployment ${service} -p \
|
|
||||||
//'{"spec":{"template":{"spec":{"containers":[{"name":"'"${service}"'","env":[{"name":"RESTART_","value":"'$(date +%s)'"}]}]}}}}'
|
|
||||||
|
|
||||||
//使用patchData Map组装数据
|
|
||||||
patchData := map[string]interface{}{
|
patchData := map[string]interface{}{
|
||||||
"spec": map[string]interface{}{
|
"spec": map[string]interface{}{
|
||||||
"template": map[string]interface{}{
|
"template": map[string]interface{}{
|
||||||
@ -232,13 +217,12 @@ func (d *deployment) RestartDeployment(deploymentName, namespace string) (err er
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
//序列化为字节,因为patch方法只接收字节类型参数
|
|
||||||
patchByte, err := json.Marshal(patchData)
|
patchByte, err := json.Marshal(patchData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error(errors.New("json序列化失败, " + err.Error()))
|
logger.Error(errors.New("json序列化失败, " + err.Error()))
|
||||||
return errors.New("json序列化失败, " + err.Error())
|
return errors.New("json序列化失败, " + err.Error())
|
||||||
}
|
}
|
||||||
//调用patch方法更新deployment
|
|
||||||
_, err = K8s.ClientSet.AppsV1().Deployments(namespace).Patch(context.TODO(), deploymentName, "application/strategic-merge-patch+json", patchByte, metav1.PatchOptions{})
|
_, err = K8s.ClientSet.AppsV1().Deployments(namespace).Patch(context.TODO(), deploymentName, "application/strategic-merge-patch+json", patchByte, metav1.PatchOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error(errors.New("重启Deployment失败, " + err.Error()))
|
logger.Error(errors.New("重启Deployment失败, " + err.Error()))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user