关于运维:clientgo-gin的简单整合十一Delete

背景:

实现了client-go gin的简略整合十-Update,上面演示一下namespace deployment pod的删除,删除实现了也能够总结一下进行更深刻的操作了!删除就从pod deployment namespace的程序开始了!

delete Pod

以nginx Pod为例

留神:zhangpeng namespace 下nginx pod为例

[zhangpeng@zhangpeng k8s]$ kubectl get pods -n zhangpeng
NAME                        READY   STATUS    RESTARTS   AGE
nginx                       1/1     Running   0          113s
zhangpeng-5546976d9-mkslb   1/1     Running   0          102m
zhangpeng-5546976d9-tcsb5   1/1     Running   0          101m

编写对于pod delete的代码

持续模拟create update 写delete办法,其实delete只须要namespace 和pod的name就能够了,简化一下:
/src/service/Pod.go

func DeletePod(g *gin.Context) {
    var NewPod Pod
    if err := g.ShouldBind(&NewPod); err != nil {
        g.JSON(500, err)
    }
    err := K8sClient.CoreV1().Pods(NewPod.Namespace).Delete(context.TODO(), NewPod.Name, metav1.DeleteOptions{})
    if err != nil {
        fmt.Println(err)
    }
    g.JSON(200, "ok")
}

增加路由运行main.go

main.go减少路由,并运行main.go

    r.POST("/pod/delete", service.DeletePod)

postman操作

http://127.0.0.1:8080/pod/delete

{"name":"nginx",
"namespace":"zhangpeng"}

delete deployment

以zhangpeng deployment为例

namespace zhangpeng命名空间下zhangpeng deployment为例

[zhangpeng@zhangpeng k8s]$ kubectl get pods -n zhangpeng
NAME                        READY   STATUS    RESTARTS   AGE
zhangpeng-5546976d9-mkslb   1/1     Running   0          124m
zhangpeng-5546976d9-tcsb5   1/1     Running   0          123m
[zhangpeng@zhangpeng k8s]$ kubectl get deployment -n zhangpeng
NAME        READY   UP-TO-DATE   AVAILABLE   AGE
zhangpeng   2/2     2            2           141m

编写delete deployment代码

/src/service/Deployment.go

func DeleteDep(g *gin.Context) {
    var newDep Deployment
    if err := g.ShouldBind(&newDep); err != nil {
        g.JSON(500, err)
    }
    err := K8sClient.AppsV1().Deployments(newDep.Namespace).Delete(context.Background(), newDep.Name, metav1.DeleteOptions{})
    if err != nil {
        g.JSON(500, err)
    }
    g.JSON(200, "Deployment has delete")
}

增加路由并运行main.go

    r.POST("/deployment/delete", service.DeleteDep)
 

postman测试

http://127.0.0.1:8080/deploym…

{"name":"zhangpeng",
"namespace":"zhangpeng"}

delete namespace

以zhangpeng namespace为例

[zhangpeng@zhangpeng k8s]$ kubectl get ns
NAME              STATUS   AGE
default           Active   54d
kube-node-lease   Active   54d
kube-public       Active   54d
kube-system       Active   54d
zhangpeng         Active   21h
zhangpeng1        Active   24h

编写delete namespace代码

/src/service/Deployment.go

func DeleteDep(g *gin.Context) {
    var newDep Deployment
    if err := g.ShouldBind(&newDep); err != nil {
        g.JSON(500, err)
    }
    err := K8sClient.AppsV1().Deployments(newDep.Namespace).Delete(context.Background(), newDep.Name, metav1.DeleteOptions{})
    if err != nil {
        g.JSON(500, err)
    }
    g.JSON(200, "Deployment has delete")
}

增加路由并运行main.go

    r.POST("/namespace/update", service.DeleteNameSpace)

postman测试

http://127.0.0.1:8080/namespa…

{"name":"zhangpeng"}

总结

  1. client-go 基于gin 的curd算是根本实现
  2. 接下来要实现的
  3. 更优雅的输入
  4. 扩大一下statefulset svc configmap 等等其余k8s资源
  5. 数据的类型也的整顿一下
  6. 办法的提取,公共类的整顿?构造整顿一下

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理