helm
版本是v3.0.0
k8s
版本是v1.15.3
[root@master master]# mkdir jenkins && cd jenkins
[root@master jenkins]# helm fetch stable/jenkins
[root@master jenkins]# ls
jenkins-1.9.4.tgz
解压
[root@master jenkins]# tar -xvf jenkins-1.9.4.tgz
[root@master jenkins]# ls
jenkins jenkins-1.9.4.tgz
[root@master jenkins]# cd jenkins/
[root@master jenkins]# cat < jenkins-data-sc.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: jenkins-data
provisioner: fuseim.pri/ifs
EOF
[root@master jenkins]# kubectl create -f jenkins-data-sc.yaml
[root@master jenkins]# cat < my-values.yaml
master:
serviceType: NodePort
adminPassword: www19930327
persistence:
enabled: true
storageClass: jenkins-data
annotations: {}
accessMode: "ReadWriteOnce"
size: "5Gi"
EOF
[root@master jenkins]# cat < my-values.yaml
master:
image: "registry.cn-shanghai.aliyuncs.com/wanfei/jenkins"
tag: "lts"
adminPassword: www19930327
ingress:
enabled: true
apiVersion: "networking.k8s.io/v1beta1"
annotations:
kubernetes.io/ingress.class: nginx
kubernetes.io/tls-acme: "true"
hostName: jenkins.wanfei.wang
tls:
- secretName: jenkins.cluster.local
hosts:
- jenkins.wanfei.wang
sidecars:
configAutoReload:
image: registry.cn-shanghai.aliyuncs.com/navychi-kubernetes/k8s-sidecar:0.1.20
agent:
image: "registry.cn-shanghai.aliyuncs.com/wanfei/jnlp-slave"
tag: "3.27-1"
backup:
image:
repository: "registry.cn-shanghai.aliyuncs.com/wanfei/kube-tasks"
tag: "0.2.0"
persistence:
enabled: true
storageClass: jenkins-data
annotations: {}
accessMode: "ReadWriteOnce"
size: "5Gi"
EOF
kubernetes.io/tls-acme: "true"
:自动生成TLS证书,集群用了cert-manager
自动实现https
[root@master jenkins]# helm install --name-template jenkins -f my-values.yaml . --namespace kube-ops
NAME: jenkins
LAST DEPLOYED: Fri Nov 29 10:49:53 2019
NAMESPACE: kube-ops
STATUS: deployed
REVISION: 1
NOTES:
1. Get your 'admin' user password by running:
printf $(kubectl get secret --namespace kube-ops 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:
export NODE_PORT=$(kubectl get --namespace kube-ops -o jsonpath="{.spec.ports[0].nodePort}" services jenkins)
export NODE_IP=$(kubectl get nodes --namespace kube-ops -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT/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
# 查询
[root@master jenkins]# helm ls -n kube-ops | grep jenkins
jenkins kube-ops 1 2019-11-28 23:39:39.274646029 +0800 CST deployed jenkins-1.9.4 lts
# 等待很长时间后,查询
[root@master jenkins]# kubectl get pods -n kube-ops | grep jenkins
jenkins-5bfc54c965-p95ph 1/1 Running 0 14m
[root@master jenkins]# kubectl get pvc -n kube-ops | grep jenkins
jenkins Bound pvc-6f9a62e8-e663-4d49-a5a7-e0c2da841116 10Gi RWO jenkins-data 23m
[root@master jenkins]# helm uninstall jenkins -n kube-ops
release "jenkins" uninstalled
# 删除文件
[root@master jenkins]# rm -rf /data/k8s/archived-kube-ops-jenkins-pvc-*
[root@master jenkins]# kubectl get svc -n kube-ops | grep jenkins
jenkins NodePort 10.109.176.53 8080:30591/TCP 27s
jenkins-agent ClusterIP 10.100.240.25 50000/TCP 27s
访问地址 http://ip:30591/
账号:admin
密码查看
[root@master jenkins]# printf $(kubectl get secret --namespace kube-ops jenkins -o jsonpath="{.data.jenkins-admin-password}" | base64 --decode);echo
KsdfeSSGqX
默认有一个
kubernetes
配置,里面是agent自带的
注意 Kubernetes 地址 https://kubernetes.default.svc.cluster.local
,
namespace,我们这里填 kube-ops
,然后点击Test Connection,如果出现 Connection test successful 的提示信息证明 Jenkins 已经可以和 Kubernetes 系统正常通信了,然后下方的 Jenkins URL 地址:http://jenkins.kube-ops.svc.cluster.local:8080,这里的格式为:服务名.namespace.svc.cluster.local:8080
,根据上面创建的jenkins 的服务名填写,我这里是之前创建的名为jenkins
jenkins自己的数据库
,然后保存现在用上面注册的账号登录,前面的账号失效了
Role-based Authorization Strategy
并使用
会有一个提示,说推荐用其他插件,直接忽略,不让提示
然后多了一个Manager Users
和Manage and Assign Roles
Manager Users
创建一个测试用户Manage and Assign Roles
创建角色
创建project
角色,默认的admin
角色存在,就不创建了,直接复制Pattern
里面的权限,点击ADD
就生成了右边的勾选框
,然后勾选权限
主要区别就是,全局角色(Global roles
)的权限对所有项目进行设置,项目角色(Project roles
)可以对某个项目设置(写死项目名称),或是用正则匹配某些规则的项目.
如果所有用户都是可以看到并访问所有项目,那么只设置全局角色(Global roles
)即可。
如果所有用户需要看到不同的项目,并且每个项目的权限也不相同,那么只需要项目角色(Project roles
)即可,但是一定要设置一个全局角色,并赋予 Overall
的 Read
权限(不设置这个权限,对应的用户登陆后看不到项目),其它的都不要在全局角色给权限即刻,全局与项目角色采取的是并集,也就是说全局没设置权限,但是项目设置了权限就可以使用,反之一样可以使用,取全局和并集的最大可用权限。
Project roles
下建立一个 名为 测试项目
Pattern 为 .*Test
的项目角色,我们只给job
的Build
和 Read
权限(.*Test
意义是所有以Test
结尾的项目生效),下面不演示这个角色了。
注意:一定要给Overall
里面的Read
权限,否则看不到项目。
使用国内镜像中心的步骤如下:
https://updates.jenkins-zh.cn/update-center.json
1.0.10+