kubesphere 通过telepresence的开发流程

195 阅读3分钟

kubesphere 开发流程网上看着有不少,但是都比较琐碎,没有从头到尾的教程,最近在开发云平台,然后自己整理了一下从头到尾的操作,大家可以看看参考一下

这里就以修改ks-apiserver为例

该文档是在已经安装好kubesphere基础上进行调试,如没有安装,请先部署kubesphere

依赖:

A running KubeSphere cluster (Kubernetes version >v1.15.x <v1.19.x)

Go (>1.11.x)

Docker (18.x)

Telepresence - for debugging (www.telepresence.io/ )

kubebuilder (latest stable version is ok github.com/kubernetes-…)

More tools for debugging

一、编译产物

# 拉取代码
git clone git@github.com:kubesphere/kubesphere.git
export GOPROXY=https://goproxy.cnexport GO111MODULE=on
#下载相应依赖
go mod tidy
#编译产物
make ks-apiserver

二、集群配置文件

先获取集群jwtSecret文本

kubectl -n kubesphere-system get cm kubesphere-config -o yaml | grep -v “apiVersion” | grep jwtSecret

mkdir /etc/kubesphere/vim kubesphere.yaml
# 以下为集群基础配置文件authentication:  oauthOptions:
    accessTokenMaxAge: 0
    clients:
    - name: kubesphere
      secret: kubesphere
      redirectURIs:
      - '*'
  authenticateRateLimiterMaxTries: 10
  authenticateRateLimiterDuration: 10m0s
  loginHistoryRetentionPeriod: 168h
  maximumClockSkew: 10s
  multipleLogin: true# 此处为集群的jwtSecret
  jwtSecret: "XdIZiwl744eLuFIMajp6xJXsrEOiauia"  oauthOptions:
    accessTokenMaxAge: 0
    accessTokenInactivityTimeout: 30m
#authorization:
#    mode: "AlwaysAllow"
monitoring:
  endpoint: http://proetheus-k8s.kubesphere-monitoring-system.svc:9090 

三、启动集群

cd kubesphere/bin/cmd/

./ks-apiserver

此为启动成功

# 测试ks-apiserver是否为正常启动
curl -v http://127.0.0.1:9090/kapis/config.kubesphere.io/v1alpha2/configs/configz

如上输出则为集群正常启动

四、开发

进行简单的开发修改

vim pkg/models/resources/v1alpha3/deployment/deployments.go

这里主要修改了获取deployment容器时将名称改为大写

# 重新编译
make ks-apiserver

在编译好之后,按照上面第二和第三段落启动服务器准备进行测试

五、测试

kubectl -n kubesphere-system get po -o wide

确保ks-apiserver的pod为正常运行

安装telepresence

# 1. Download the latest binary (~95 MB):
sudo curl -fL https://app.getambassador.io/download/tel2oss/releases/download/v2.20.0/telepresence-linux-amd64 -o /usr/local/bin/telepresence

# 2. Make the binary executable:
sudo chmod a+x /usr/local/bin/telepresence 

安装完成之后

telepresence version 显示版本号为正确安装

以下操作一定要确保集群内的docker能访问到仓库否则会安装Traffic Manager失败

# 拉取Traffic Manager pod
telepresence helm install

安装成功之后,使用telepresence开始进行测试

因为telepresence 新版本必须登录需要登录官网注册注册账号

需要使用apikey来进行登录

app.getambassador.io/cloud/welco…

# 登录
telepresence login --apikey "xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# 进行代理映射
telepresence intercept ks-apiserver --namespace kubesphere-system  --port 9090

如下输出为成功启动

检查ks-apiserver是否注入代理pod

kubectl describe pods -n kubesphere-system ks-apiserver-{集群pod名称}

如下有telepresence 相应的label并且pod状态为running则为代理成功

进入集群查看工作负载检查修改是否生效

修改前:

修改后: