1、从Kubernetes获取ServiceAccount token

Service Account 是 Kubernetes 用于集群内运行的程序,进行服务发现时调用 API 的帐号,帐号的 token 会直接挂载到 Pod
中,可以供程序直接使用,ServiceAccount给运行在Pod中的进程提供一个身份

如果kubernetes开启了ServiceAccount,那么会在每个namespace下面都会创建一个默认的default的sa。我这里使用的是默认的default。

步骤:

(1)登录到kubernetes集群中,使用命令

kubectl get -n uase-iot-dev secret

uase-iot-dev是你的命名空间

然后使用kubectl get -n uase-iot-dev secret default-token-v0jdt -o yaml

查看拿到token,但是这个token是经过base64加密过的,所以要将token解密

echo token | base64 -d

将解密结果保存好,后续会用到

 

2、获得Kubernetes CA证书

登录kubernetes集群,在/etc/kubernetes/pki目录下,有一个ca.crt文件就是kubernetes的证书

证书格式如下:

-----BEGIN CERTIFICATE-----

[REDACATED]

-----END CERTIFICATE-----

3、在gitlab中集成kubernetes

登录gitlab,选择你的项目,在左侧选择Settings下的Integrations,往下拉找到kubernetes,点击进入

然后输入以下:

API URL:kubernetes集群的API URL, kubernetes API Server公网地址

CA Certificate:kubernetes的CA证书

Project namespace (optional/unique):kubernetes的命名空间

Token:之前获取到的token,base64解码后的

然后save changes即可

4、添加.gitlab-ci.yml到项目中

在项目根目录下添加.gitlab-ci.yml配置文件,这个文件就是写自动化部署的脚本,包含打jar包、打镜像、自动部署到kubernetes

 

 

在deploy-huang-test阶段,image是registry.gitlab.com/gitlab-examples/kubernetes-deploy的镜像,上图中是我们把它拉下来上传到我们的私服中的

 

配置文件中的${}都是在gitlab中配置的,在Setting下的CI/CD中的Secret variables

5、给service account授权

我们使用的service account是默认的default,它默认是没有任何权限的,我们需要给他授权,不然会报如下错误:

Error from server (Forbidden)

授权步骤:

登录kubernetes集群,执行如下命令:

kubectl create rolebinding default-edit --clusterrole=edit
--serviceaccount=uase-iot-dev:default --namespace=uase-iot-dev

 

uase-iot-dev是你的命名空间

 

这样default就有权限去执行我们的部署脚本了

 

最后运行结果如下:

6、碰到的错误

(1)Unable to connect to the server: x509: certificate signed by unknown
authority

我碰到这个错误是因为证书弄错了,我使用的证书是前面获取token里有的ca证书,所以报了这个错。正确的证书是在/etc/kubernetes/pki目录下的ca.crt。

(2)Error from server (Forbidden): error when creating
"gitlabci/deployment.yml": User "system:serviceaccount:uase-iot-dev:default"

这个错误是因为没有给default授权

技术
©2019-2020 Toolsou All rights reserved,
switch语句编程实现:给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。C#聊天室实现Jetson Nano 读取 GPS数据(TTL转 USB)R语言大作业(全国2000-2019年人口各项数据分析)Vue中el-form标签中的自定义el-select下拉框标签【数据结构与算法 8】递归之迷宫问题Vue学习笔记之函数、高阶函数、v-model的应用 【教程】如何修改路由表?基于python+OpenCV的车牌号码识别航拍:特斯拉上海工厂Model Y已经大量下线