吾八哥博客

您现在的位置是:首页 > DevOps > CI/CD > 正文

CI/CD

kubernetes集群里安装配置jenkins

吾八哥2021-04-29CI/CD2836

本文主要是记录在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的生成方法为:

  1. 在kubeconfig文件里拿到certificate-authority-data的字段内容${certificate}

  2. echo "${certificate}" | base64 -d > ca.crt

  3. ca.crt里的文本就是我们需要的key

填写完成后,可以测试一下集群的链接,链接成功的如下图:

image.png

其他的配置选项根据自己需求来配置填写即可,我这里为了测试方便,主要是修改了agent的标签为k8s-slave,如下图:

image.png

创建job验证

这里弄个简单的job来测试下效果,为了方便我这里选择创建自由风格的job,创建的时候要指定一下agent标签,如下图:

如果是流水线方式的job,则需要指定node的Label,参考写法为:

// ...
      agent{
        node{
          label 'slave-pipeline'
        }
      }
// ...

运行job,即可在k8s集群里启动一个pod来执行任务。