kubernetes集群里安装配置jenkins
本文主要是记录在kubernetes里安装配置jenkins的过程的一些步骤,文章内容比较粗糙,感谢理解!
安装环境
kubernetes集群
helm3
安装步骤
创建Namespace
# 创建namespace kubectl create namespace jenkins
配置存储
生成环境建议挂载nas盘,并配置为storageclass
添加helm阿里云源
helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts helm repo update
拉取jenkins的chart源文件
helm fetch stable/jenkins
修改values.yaml配置文件
解压jenkins-0.13.5.tgz包后,根据实际需求修改vaules.yaml文件,例如挂载存储、默认插件配置、默认管理员账号密码、网络访问类型等,在实际生产环境中一定要配置存储,本文这里就跳过了。
执行安装
# helm安装jenkins helm install jenkins -n jenkins -f values.yaml . # 等待jenkins服务启动完成 kubectl rollout status deploy jenkins -n jenkins
访问验证
helm安装完成后,可以根据提示信息拿到访问方式:
NAME: jenkins LAST DEPLOYED: Thu Apr 15 14:12:15 2021 NAMESPACE: default STATUS: deployed REVISION: 1 NOTES: 1. Get your 'admin' user password by running: printf $(kubectl get secret --namespace default jenkins -o jsonpath="{.data.jenkins-admin-password}" | base64 --decode);echo 2. Get the Jenkins URL to visit by running these commands in the same shell: NOTE: It may take a few minutes for the LoadBalancer IP to be available. You can watch the status of by running 'kubectl get svc --namespace default -w jenkins' export SERVICE_IP=$(kubectl get svc --namespace default jenkins --template "{{ range (index .status.loadBalancer.ingress 0) }}{{ . }}{{ end }}") echo http://$SERVICE_IP:8080/login 3. Login with the password from step 1 and the username: admin For more information on running Jenkins on Kubernetes, visit: https://cloud.google.com/solutions/jenkins-on-container-engine ################################################################################# ###### WARNING: Persistence is disabled!!! You will lose your data when ##### ###### the Jenkins pod is terminated. ##### #################################################################################
进入jenkins后根据提示信息等待插件安装完成。
操作配置
配置链接cloud
配置之前需要先创建clusterrolebinding,否则会报如下错误:
Error connecting to https://kubernetes.default: Failure executing: GET at: https://kubernetes.default/api/v1/namespaces/jenkins/pods. Message: Forbidden!Configured service account doesn't have access. Service account may have been revoked. pods is forbidden: User "system:serviceaccount:jenkins:default" cannot list resource "pods" in API group "" in the namespace "jenkins".
创建clusterrolebinding方法:
kubectl create clusterrolebinding jenkins --clusterrole admin --serviceaccount=jenkins:default -n jenkins
操作步骤:系统管理 > 节点管理 > configureClouds > Add a new cloud > kubernetes
填写Kubernetes 服务证书 key,key的生成方法为:
在kubeconfig文件里拿到certificate-authority-data的字段内容${certificate}
echo "${certificate}" | base64 -d > ca.crt
ca.crt里的文本就是我们需要的key
填写完成后,可以测试一下集群的链接,链接成功的如下图:
其他的配置选项根据自己需求来配置填写即可,我这里为了测试方便,主要是修改了agent的标签为k8s-slave,如下图:
创建job验证
这里弄个简单的job来测试下效果,为了方便我这里选择创建自由风格的job,创建的时候要指定一下agent标签,如下图:
如果是流水线方式的job,则需要指定node的Label,参考写法为:
// ... agent{ node{ label 'slave-pipeline' } } // ...
运行job,即可在k8s集群里启动一个pod来执行任务。