TKE 集群侧配置
此步骤中介绍了通过在 TKE 中自定义 RBAC 授权 ServiceAccount ,以及获取配置 Jenkins 时所需的集群访问地址、token 及集群 CA 证书信息。 获取集群凭证
1. 使用以下 Shell 脚本,创建测试命名空间 ci、ServiceAccount 类型的测试用户 jenkins 并获取集群访问凭证(token)认证。
kubectl create namespace ci
kubectl create sa jenkins -n ci
kubectl get secret $(kubectl get sa jenkins -n ci -o jsonpath={.secrets[0].name}) -n ci -o jsonpath={.data.token} | base64 --decode
2. 在测试命名空间 ci 创建一个 Role 权限对象资源 jenkins-role.yaml 文件。示例如下:
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: jenkins
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["create","delete","get","list","patch","update","watch"]
- apiGroups: [""]
resources: ["pods/exec"]
verbs: ["create","delete","get","list","patch","update","watch"]
- apiGroups: [""]
resources: ["pods/log"]
verbs: ["get","list","watch"]
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get"]
3. 创建一个 RoleBinding 对象资源 jenkins-rolebinding.yaml 文件。如下权限绑定表示,添加 ServiceAccount 类型的 jenkins 用户在ci 命名空间具有 jenkins(Role 类型)的权限。示例如下:
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
name: jenkins
namespace: ci
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: jenkins
subjects:
- kind: ServiceAccount
name: jenkins
获取集群 CA 证书
2. 执行以下命令,查看集群 CA 证书。
cat /etc/kubernetes/cluster-ca.crt
授权 docker.sock
TKE 集群中的每个 node 节点系统里都有一个 docker.sock
文件,slave pod 在执行 docker build
时将会连接该文件。在此之前,需逐个登录到每个节点上,依次执行以下命令对 docker build
进行授权:
chmod 666 /var/run/docker.sock
ls -l /var/run/docker.sock
Jenkins 侧配置
说明
不同 Jenkins 版本使用 UI 上存在差异。您可以根据业务需要进行选择。
添加 TKE 内网访问地址
2. 执行以下命令,配置访问域名。
sudo sed -i '$a 10.x.x.x cls-ixxxelli.ccs.tencent-cloud.com' /etc/hosts
说明
该命令可在集群开启内网访问后,从集群基本信息页面中的“集群APIServer” 中获取,详情请参见 获取集群凭证。 3. 执行以下命令,查看是否配置成功。
Jenkins 安装必备插件
1. 登录 Jenkins 后台,选择左侧导航栏中的系统管理。
2. 在打开的“管理Jenkins” 面板中,单击插件管理。
3. 选择插件管理页面中可选插件,勾选 Locale、Kubernetes、Git Parameter 和 Extended Choice Parameter。
Locale:汉化语言插件,安装该插件可使 Jenkins 界面默认设置为中文版。
Kubernetes:Kubernetes-plugin 插件。
Git Parameter 和 Extended Choice Parameter:用于构建打包时传参。以 Kubernetes 插件为例,如下图所示:
4. 勾选上述插件后单击直接安装,并重启 Jenkins 即可。
开启 jnlp 端口
1. 登录 Jenkins 后台,选择左侧导航栏中的系统管理。
2. 在打开的“管理Jenkins” 面板中,单击全局安全配置。
3. 在全局安全配置页中,设置入站代理的 TCP 端口为“指定端口 50000”。
4. 其他配置项保持默认状态,并单击页面下方的保存。
添加 TKE 集群 token
1. 登录 Jenkins 后台,选择左侧导航栏中的凭据 > 系统。
2. 在打开的“系统”面板中,选择全局凭据 (unrestricted) 。
3. 在“全局凭据 (unrestricted)”页中,单击左侧菜单栏中的添加凭据,根据以下提示设置凭据基本信息。
类型:选择Secret text。
范围:默认为全局(Jenkins,nodes,items,all child items,etc)。
Secret:填写 获取集群凭证 步骤中获取的 ServiceAccount jenkins 的 Token。 ID:默认不填写。
描述:填写该凭据相关信息,该内容将被显示为凭据名称及描述信息,本文以 tke-token
为例。
4. 单击确定即可添加,添加成功后该凭据将显示在凭据列表中。如下图所示: 添加 gitlab 认证
1. 在“全局凭据 (unrestricted)”页中,单击左侧菜单栏中的添加凭据,并根据以下提示设置凭据基本信息。
类型:选择Username with password。
范围:默认为全局(Jenkins,nodes,items,all child items,etc)。
用户名:gitlab 用户名。
密码:gitlab 登录密码。
ID:默认不填写。
描述:填写该凭据相关信息,该内容将被显示为凭据名称及描述信息,本文以 gitlab-password
为例。
2. 单击确定即可添加成功。
配置 slave pod 模板
1. 登录 Jenkins 后台,选择左侧导航栏中的系统管理。
2. 在打开的“管理Jenkins” 面板中,单击系统配置。
3. 在“系统配置”面板最下方,选择“云”模块下的新增一个云 > Kubernetes。
4. 单击 Kubernetes Cloud details...,设置 Kubernetes 以下基本信息。
主要参数配置如下,其余选项请保持默认设置:
名称:自定义,本文以 kubernetes
为例。
Kubernetes 地址:TKE 集群访问地址,可参考 获取集群凭证 步骤获取。 凭据:选择 添加 TKE 集群 token 步骤中已创建的凭据 tke-token
,并单击连接测试。若连接成功则会提示 Connection test succeessful。 Jenkins 地址:填写为 Jenkins 内网地址,例如http://10.x.x.x:8080
。
5. 选择Pod Templates > 添加 Pod 模板 > Pod Templates details...,设置 Pod 模板基本信息。
主要参数信息如下,其余选项请保持默认设置:
名称:自定义,本文以 jnlp-agent
为例。
标签列表:定义标签名称,构建时可根据该标签选择 Pod ,本文以 jnlp-agent
为例。
用法:选择尽可能的使用这个节点。
6. 在“容器列表”中,选择添加容器 > Container Template,设置以下容器相关信息。
名称:自定义容器名称,本文以 jnlp-agent
为例。
Docker 镜像:输入镜像地址 jenkins/jnlp-slave:alpine
。
工作目录:保持默认设置,请记录工作目录,将用于 shell 脚本处构建打包。
其余选项保持默认设置即可。
7. 在“卷”中按照以下步骤添加卷,为 slave pod 配置 docker 命令。
7.1 选择添加卷 > Host Path Volume,主机和挂载路径均填写 /usr/bin/docker
。
7.2 选择添加卷 > Host Path Volume,主机和挂载路径均填写/var/run/docker.sock
。
7.3 单击页面下方的保存,即可完成 slave pod 模板配置。
下一步操作
本页内容是否解决了您的问题?