前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【K8s】cloudcfg 源码分析 01-01

【K8s】cloudcfg 源码分析 01-01

原创
作者头像
Librant
发布2022-07-17 15:15:04
1790
发布2022-07-17 15:15:04
举报
文章被收录于专栏:跟我一起学 K8s跟我一起学 K8s

【注】源码分析均以 k8s 的第一个 commit 代码分析;

cloudcfg 可以看成 kubectl 的早期版本;

入口文件位置:

代码语言:go
复制
cmd/cloudcfg/cloudcfg.go

首先从命令行中,获取 method 的参数,拼接成发送给 api-server 的 url 信息;

代码语言:go
复制
method := flag.Arg(0)
url := *httpServer + "/api/v1beta1" + flag.Arg(1)

获取鉴权的参数:

代码语言:go
复制
auth, err := cloudcfg.LoadAuthInfo(*authConfig)

这里直接将参数拼接后发送, 获取对应的资源信息;

  • 查询
代码语言:go
复制
method == "get" 
method == "list" {
    url = url + "?labels=" + *labelQuery	
    request, err = http.NewRequest("GET", url, nil)
  • 删除
代码语言:go
复制
method == "delete" {
    request, err = http.NewRequest("DELETE", url, nil)
  • 创建
代码语言:go
复制
method == "create" {
    request, err = cloudcfg.RequestWithBody(*config, url, "POST")
  • 更新
代码语言:go
复制
method == "update" {
    request, err = cloudcfg.RequestWithBody(*config, url, "PUT")
  • 回滚
代码语言:go
复制
method == "rollingupdate" {
    client := &kube_client.Client{
        Host: *httpServer,
        Auth: &auth,
    }
    cloudcfg.Update(flag.Arg(1), client, *updatePeriod)

最重要的部分是对控制器的管理:

代码语言:go
复制
method == "run" {
    err = cloudcfg.RunController(image, name, replicas, kube_client.Client{Host: *httpServer, Auth: &auth}, *portSpec, *servicePort)

method == "stop" {
    err = cloudcfg.StopController(flag.Arg(1), kube_client.Client{Host: *httpServer, Auth: &auth})

method == "rm" {
    err = cloudcfg.DeleteController(flag.Arg(1), kube_client.Client{Host: *httpServer, Auth: &auth})

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云代码分析
腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档