前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何用 Helm 管理 Jenkins,看这篇就够了

如何用 Helm 管理 Jenkins,看这篇就够了

作者头像
DevOps时代
发布2021-03-15 10:23:28
1.5K0
发布2021-03-15 10:23:28
举报

Helm3 简介

Helm 创建于2015年,同年加入CNCF,2020年毕业。

Helm 是为 kubernetes 提供的包管理工具。包指的是 helm charts,charts 是预先配置的 kubernetes 资源对象集合,类似于 linux 上的 rpm 包。

使用 Helm 可以管理 kubernetes 资源对象、应用的配置管理及发布更新等。

helm chart 可以托管在统一制品仓库,开源工具的如 nexus、harbor。

使用 Helm-Chart 部署 Jenkins

从结构中我们看到有不同级别的文件夹,以及一些yaml文件。

  • charts:用于存放其他依赖和关联的chart。例如应用依赖数据库的chart。
  • Chart.yaml:存储一些元数据,例如chart的信息,描述等等
  • templates文件夹:是所有资源的位置,我们可以看到很多kubernetes的资源文件都在这里存放。
  • 其中的_helpers.tpl,用于存储模板片段,可以在文件中直接使用template函数调用。
  • value.yaml:存储该chart的默认值,实际安装时可以对默认值进行覆盖。
  • NOTES.txt:相当于你运行helm install的时候给用户输出的提示

Helm部署Jenkins

1、Jenkins 官方 helm-charts https://github.com/jenkinsci/configuration-as-code-plugin.git

2、数据持久化配置 由于jenkins helm-charts默认使用hostPath方式持久化数据,uninstall或容器集群爆炸后可能造成数据丢失,故使用本地存储目录进行数据持久化(个人环境,无nfs等其他网络存储或持久化存储设备)。

2.1、创建pv

代码语言:javascript
复制
apiVersion: v1
kind: PersistentVolume
metadata:
  name: jenkins-pv-local
spec:
  capacity:
    storage: 10Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Delete
  storageClassName: local-storage
  local:
    path: /Users/zhang/data/jenkins  # ydzs-node1节点上的目录
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - docker-desktop

2.2、创建pvc

代码语言:javascript
复制
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: jenkins-pvc-local
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: local-storage

2.3、创建后验证

代码语言:javascript
复制
zhangdeMacBook-Pro:charts zhang$ kubectl get pv,pvc -n default
NAME                                CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                       STORAGECLASS    REASON   AGE
persistentvolume/jenkins-pv-local   10Gi       RWO            Delete           Bound    default/jenkins-pvc-local   local-storage            3h48m

NAME                                      STATUS   VOLUME             CAPACITY   ACCESS MODES   STORAGECLASS    AGE
persistentvolumeclaim/jenkins-pvc-local   Bound    jenkins-pv-local   10Gi       RWO            local-storage   3h46m

3、执行部署

代码语言:javascript
复制
git clone https://github.com/jenkinsci/helm-charts.gitcd ${helm-charts}helm install jenkins jenkins# return infoNAME: jenkins
LAST DEPLOYED: Tue Feb  2 21:21:28 2021NAMESPACE: default
STATUS: deployed
REVISION: 1NOTES:1. Get your 'admin' user password by running:
  kubectl exec --namespace default -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/chart-admin-password && echo2. Get the Jenkins URL to visit by running these commands in the same shell:  echo http://127.0.0.1:8080
  kubectl --namespace default port-forward svc/jenkins 8080:80803. Login with the password from step 1 and the username: admin4. Configure security realm and authorization strategy5. Use Jenkins Configuration as Code by specifying configScripts in your values.yaml file, see documentation: http:///configuration-as-code and examples: https://github.com/jenkinsci/configuration-as-code-plugin/tree/master/demos

For more information on running Jenkins on Kubernetes, visit:
https://cloud.google.com/solutions/jenkins-on-container-engine

For more information about Jenkins Configuration as Code, visit:
https://jenkins.io/projects/jcasc/

NOTE: Consider using a custom image with pre-installed plugins

zhang@zhangdeMacBook-Pro local-helmChartCenter % helm list
NAME    NAMESPACE   REVISION    UPDATED                                 STATUS      CHART           APP VERSION
jenkins default     1           2021-02-02 21:21:28.681602 +0800 CST    deployed    jenkins-3.1.8   2.263.3    zhang@zhangdeMacBook-Pro local-helmChartCenter % kubectl get all  -n default
NAME             READY   STATUS    RESTARTS   AGE
pod/jenkins-0    2/2     Running   6          2d12h

NAME                     TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)     AGE
service/jenkins          ClusterIP   10.109.107.40    <none>        8080/TCP    2d12h
service/jenkins-agent    ClusterIP   10.103.205.142   <none>        50000/TCP   2d12h
service/kubernetes       ClusterIP   10.96.0.1        <none>        443/TCP     6d23h

NAME                       READY   AGE
statefulset.apps/jenkins   1/1     2d12h

4、映射端口到宿主机端口

代码语言:javascript
复制
1. Get your 'admin' user password by running:
  kubectl exec --namespace default -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/chart-admin-password && echo2. Get the Jenkins URL to visit by running these commands in the same shell:  echo http://127.0.0.1:8080
  kubectl --namespace default port-forward svc/jenkins 8080:8080

5、访问 web 进行验证

JCasC 管理 Jenkins 配置

JCasC 全称 Configuration as Code

  1. Plugins
代码语言:javascript
复制
 plugins:
        required:
        - kubernetes:1.27.6
        - workflow-aggregator:2.6
        - git:4.5.2
        - configuration-as-code:1.46

2.Tools Installations

代码语言:javascript
复制
tool:
  git:
    installations:
    - home: "git"
      name: "Default"

3.Tools Integration

代码语言:javascript
复制
unclassified:
  buildDiscarders:
    configuredBuildDiscarders:
    - "jobBuildDiscarder"
  fingerprints:
    fingerprintCleanupDisabled: false
    storage: "file"
  gitSCM:
    addGitTagAction: false
    allowSecondFetch: false
    createAccountBasedOnEmail: false
    disableGitToolChooser: false
    hideCredentials: false
    showEntireCommitSummaryInChanges: false
    useExistingAccountWithSameEmail: false
  junitTestResultStorage:
    storage: "file"
  location:
    adminAddress: "address not configured yet <nobody@nowhere>"
    url: "http://jenkins:8080/"
  mailer:
    charset: "UTF-8"
    useSsl: false
    useTls: false
  pollSCM:
    pollingThreadCount: 10
  sonarGlobalConfiguration:
    buildWrapperEnabled: false
作者简介:
张富贵,高效运维社区 DevOps 资深专家。参与过金融、物流及保险行业的 DevOps 平台和体系建设工作。GOPS 2021 深圳站,5月21-22日,深圳见~
报名通道 :
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DevOps时代 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Helm3 简介
  • 使用 Helm-Chart 部署 Jenkins
  • Helm部署Jenkins
  • JCasC 管理 Jenkins 配置
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档