helm安装jenkins

helm安装jenkins

      • 1. 下载
      • 2. 创建StorageClass
      • 3. 新建配置文件
          • 3.1 NodePort外部访问
          • 3.2 域名外部访问(https)
      • 4. 安装
      • 5. 卸载
      • 6. 访问
      • 7. k8s参数配置
      • 8. 安装角色插件
          • 8.1 选择`jenkins自己的数据库`,然后保存
          • 8.2 创建数据库
          • 8.3 安装插件名称`Role-based Authorization Strategy`并使用
          • 8.4 点击`Manager Users`创建一个测试用户
          • 8.5 点击`Manage and Assign Roles`创建角色
          • 8.6 分配角色给用户
      • 9. 切换国内源

helm版本是v3.0.0
k8s版本是v1.15.3

1. 下载

[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/

2. 创建StorageClass

[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

3. 新建配置文件

3.1 NodePort外部访问
[root@master jenkins]# cat < my-values.yaml
master:
  serviceType: NodePort
  adminPassword: www19930327

persistence:
  enabled: true
  storageClass: jenkins-data
  annotations: {}
  accessMode: "ReadWriteOnce"
  size: "5Gi"
EOF
3.2 域名外部访问(https)
[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

4. 安装

[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

5. 卸载

[root@master jenkins]# helm uninstall jenkins -n kube-ops
release "jenkins" uninstalled

# 删除文件
[root@master jenkins]# rm -rf /data/k8s/archived-kube-ops-jenkins-pvc-*

6. 访问

[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

helm安装jenkins_第1张图片
登录后更新插件

7. k8s参数配置

helm安装jenkins_第2张图片

默认有一个kubernetes配置,里面是agent自带的

helm安装jenkins_第3张图片
注意 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

8. 安装角色插件

8.1 选择jenkins自己的数据库,然后保存

helm安装jenkins_第4张图片

8.2 创建数据库

helm安装jenkins_第5张图片

现在用上面注册的账号登录,前面的账号失效了

8.3 安装插件名称Role-based Authorization Strategy并使用

在这里插入图片描述
会有一个提示,说推荐用其他插件,直接忽略,不让提示
helm安装jenkins_第6张图片
然后多了一个Manager UsersManage and Assign Roles
helm安装jenkins_第7张图片

8.4 点击Manager Users创建一个测试用户

helm安装jenkins_第8张图片

8.5 点击Manage and Assign Roles创建角色

helm安装jenkins_第9张图片
创建project角色,默认的admin角色存在,就不创建了,直接复制Pattern里面的权限,点击ADD就生成了右边的勾选框,然后勾选权限
helm安装jenkins_第10张图片
主要区别就是,全局角色(Global roles)的权限对所有项目进行设置,项目角色(Project roles)可以对某个项目设置(写死项目名称),或是用正则匹配某些规则的项目.

如果所有用户都是可以看到并访问所有项目,那么只设置全局角色(Global roles)即可。

如果所有用户需要看到不同的项目,并且每个项目的权限也不相同,那么只需要项目角色(Project roles)即可,但是一定要设置一个全局角色,并赋予 OverallRead权限(不设置这个权限,对应的用户登陆后看不到项目),其它的都不要在全局角色给权限即刻,全局与项目角色采取的是并集,也就是说全局没设置权限,但是项目设置了权限就可以使用,反之一样可以使用,取全局和并集的最大可用权限。

Project roles 下建立一个 名为 测试项目 Pattern 为 .*Test的项目角色,我们只给jobBuildRead权限(.*Test意义是所有以Test结尾的项目生效),下面不演示这个角色了。
在这里插入图片描述
注意:一定要给Overall里面的Read权限,否则看不到项目。

8.6 分配角色给用户

helm安装jenkins_第11张图片
helm安装jenkins_第12张图片

9. 切换国内源

使用国内镜像中心的步骤如下:

  • 修改插件更新中心的地址为https://updates.jenkins-zh.cn/update-center.json
  • 更新 简体中文插件 到1.0.10+
  • 点击页面右下角(确保浏览器的语言为中文)的Jenkins中文社区
  • 点击使用按钮
  • 在插件管理的高级页面,点击立即获取

你可能感兴趣的:(K8S)