kubesphere版本:v3.1.0
参考文档:KubeSphere (v3.1.0)
之前是通过kubesphere devops模块ui运行的,不太方便,创建流水线时,虽然有触发远程构建的选项,但需要知道Jenkins地址,需要配负载均衡挺麻烦的。
后来,通过查看kubesphere api文档,发现有实现方式的。以下是容器中进行的,所以访问svc,具体如下:
第一步:获取access_token
curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
'http://ks-apiserver.kubesphere-system.svc/oauth/token' \
--data-urlencode 'grant_type=password' \
--data-urlencode 'username=[你的kubesphere用户名]' \
--data-urlencode 'password=[用户密码]'
第二步:获取Jenkins-Crumb,这一步很重要,不然后面调用接口触发构建时,Jenkins会报错,网上有解决方案是对Jenkins进行配置,但感觉不太安全。
curl -X GET -H "Authorization: Bearer [第一步获取到的access_token]" \
'http://ks-apiserver.kubesphere-system.svc/kapis/devops.kubesphere.io/v1alpha2/crumbissuer'
第三步:通过api远程触发构建,运行流水线
curl -X POST -H "Authorization: Bearer [第一步获取到的access_token]" \
-H 'Content-Type: application/json' \
-H 'Jenkins-Crumb: [第二步获取到的crumb字段值]' \
'http://ks-apiserver.kubesphere-system.svc/kapis/devops.kubesphere.io/v1alpha2/devops/{devops项目的namespace名称}/pipelines/{具体的pipeline名称}/runs'
至此,成功!也算是一次探索了!