minikube helm 安装 jenkins

news2024/12/24 8:43:58

文章目录

    • 1. 准备条件
    • 2. 安装 helm
    • 3. 部署 jenkins
      • 3.1 创建 namespace jenkins
      • 3.2 创建存储卷 jenkins-volume
      • 3.3 创建 service account & RBAC
      • 3.4 定制 jenkins-values.yml
      • 3.5 安装 jenkins
      • 3.6 登陆 jenkins

“Jenkins是一个著名的可扩展开源 CI/CD 工具,用于自动化部署。Jenkins 完全用 Java 编写,并在 MIT 许可下发布。它具有一组强大的功能,可以自动执行与软件构建、测试、部署、集成和发布相关的任务。这种用于测试的自动化 CI/CD 工具可用于 macOS、Windows 和各种 UNIX 版本,例如 OpenSUSE、Ubuntu、Red Hat 等。除了通过本机安装包安装外,它还可以作为独立安装或作为 Docker 安装在任何安装了 Java Runtime Environment (JRE) 的机器上。
Jenkins 团队还有一个名为 Jenkins X 的子项目,它专门用于开箱即用地运行与 Kubernetes 的无缝管道。Jenkins X 巧妙地集成了 Helm、Jenkins CI/CD 服务器、Kubernetes 和其他工具,以提供具有内置最佳实践的规范 CI/CD 工具管道。”

1. 准备条件

  • Centos 7.9.2009
  • Ubuntu 18.04 通过 Minikube 安装 Kubernetes v1.20
  • minikube & kubernetes 动手指南

2. 安装 helm

wget https://get.helm.sh/helm-v3.10.2-linux-amd64.tar.gz
tar -xzvf helm-v3.8.0-linux-amd64.tar.gz
cp linux-amd64/helm /usr/local/bin/
chmod 777 /usr/local/bin/helm
sudo chown -R 1000:1000 /data/jenkins-volume
helm version

如果没有chmod 777,部署时会报一下错误:

$ k get pods -n jenkins
NAME        READY   STATUS     RESTARTS   AGE
jenkins-0   0/2     Init:0/1   0          4s

$ k logs -f jenkins-0 -c init -n jenkins
disable Setup Wizard
/var/jenkins_config/apply_config.sh: 4: cannot create /var/jenkins_home/jenkins.install.UpgradeWizard.state: Permission denied

添加 helm 源

$ helm repo add jenkinsci https://charts.jenkins.io
$ helm repo update
$ helm search repo jenkinsci
NAME                    CHART VERSION   APP VERSION     DESCRIPTION
jenkinsci/jenkins       4.2.15          2.361.4         Jenkins - Build great things at any scale! The ...

3. 部署 jenkins

3.1 创建 namespace jenkins

k create ns jenkins

3.2 创建存储卷 jenkins-volume

下载 jenkins-volume.yml

mkdir /data/jenkins
sudo chown -R 1000:1000 /data/jenkins
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: jenkins-volume
  namespace: jenkins
spec:
  storageClassName: jenkins-volume
  accessModes:
    - ReadWriteOnce
  capacity:
    storage: 10Gi
  persistentVolumeReclaimPolicy: Retain
  hostPath:
    path: /data/jenkins/

执行:

k apply -f jenkins-volume.yml

3.3 创建 service account & RBAC

在 Kubernetes 中,服务帐户用于为 Pod 提供身份。想要与 API 服务器交互的 Pod 将使用特定的服务帐户进行身份验证。默认情况下,应用程序将作为default它们运行所在的命名空间中的服务帐户进行身份验证。这意味着,例如,在test命名空间中运行的应用程序将使用命名空间的默认服务帐户test。

下载 jenkins-sa.yaml.

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: jenkins
  namespace: jenkins
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  annotations:
    rbac.authorization.kubernetes.io/autoupdate: "true"
  labels:
    kubernetes.io/bootstrapping: rbac-defaults
  name: jenkins
rules:
- apiGroups:
  - '*'
  resources:
  - statefulsets
  - services
  - replicationcontrollers
  - replicasets
  - podtemplates
  - podsecuritypolicies
  - pods
  - pods/log
  - pods/exec
  - podpreset
  - poddisruptionbudget
  - persistentvolumes
  - persistentvolumeclaims
  - jobs
  - endpoints
  - deployments
  - deployments/scale
  - daemonsets
  - cronjobs
  - configmaps
  - namespaces
  - events
  - secrets
  verbs:
  - create
  - get
  - watch
  - delete
  - list
  - patch
  - update
- apiGroups:
  - ""
  resources:
  - nodes
  verbs:
  - get
  - list
  - watch
  - update
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  annotations:
    rbac.authorization.kubernetes.io/autoupdate: "true"
  labels:
    kubernetes.io/bootstrapping: rbac-defaults
  name: jenkins
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: jenkins
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: Group
  name: system:serviceaccounts:jenkins
k apply -f jenkins-sa.yaml

3.4 定制 jenkins-values.yml

我们将部署 Jenkins,包括 Jenkins Kubernetes 插件。有关更多详细信息,请参见官方charts

为了启用持久性,我们将创建一个覆盖文件并将其作为参数传递给 Helm CLI
下载 jenkins-values.yaml

常见参数修改:

  • serviceType: NodePort:因为我们使用的是 minikube,所以我们需要使用 NodePort 作为服务类型。只有云提供商提供负载均衡器。
  • nodePort: 32000:我们将端口 32000 定义为端口。
  • storageClass: jenkins-volume
  • serviceAccountjenkins-values.yaml 文件的 serviceAccount 部分应该如下所示:
serviceAccount:
  create: false
# Service account name is autogenerated by default
name: jenkins
annotations: {}

其中 name: jenkins 指的是为 jenkins 创建的 serviceAccount

  • 我们还可以定义要在 Jenkins 上安装哪些插件。我们使用一些默认插件,如 git 和管道插件。

helm install现在您可以通过运行命令并向其传递以下参数来安装 Jenkins :

  • 发布名称:jenkins
  • -f 覆盖的 YAML 文件的标志:jenkins-values.yaml
  • chart 名称:jenkinsci/jenkins
  • -n指定命名空间名称的标志:jenkins

3.5 安装 jenkins

helm install jenkins -n jenkins -f jenkins-values.yml jenkinsci/jenkins

输出:

NAME: jenkins
LAST DEPLOYED: Sat Dec  3 21:51:46 2022
NAMESPACE: jenkins
STATUS: deployed
REVISION: 1
NOTES:
1. Get your 'admin' user password by running:
  kubectl exec --namespace jenkins -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/additional/chart-admin-password && echo
2. Get the Jenkins URL to visit by running these commands in the same shell:
  export NODE_PORT=$(kubectl get --namespace jenkins -o jsonpath="{.spec.ports[0].nodePort}" services jenkins)
  export NODE_IP=$(kubectl get nodes --namespace jenkins -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
4. Configure security realm and authorization strategy
5. 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

要等一段时间,pod才会启动成功:

$ k get pods -n jenkins
NAME        READY   STATUS    RESTARTS   AGE
jenkins-0   2/2     Running   0          5m30s

3.6 登陆 jenkins

获取登录密码

$ kubectl exec --namespace jenkins -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/additiona
l/chart-admin-password && echo
a14JY20Nn48gHdffWVvGnn

获取登陆URL

  export NODE_PORT=$(kubectl get --namespace jenkins -o jsonpath="{.spec.ports[0].nodePort}" services jenkins)
  export NODE_IP=$(kubectl get nodes --namespace jenkins -o jsonpath="{.items[0].status.addresses[0].address}")
  echo http://$NODE_IP:$NODE_PORT/login

输出:

http://192.168.10.26:32000/login

界面登陆


首页

参考:
https://www.jenkins.io/doc/book/installing/kubernetes/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/58738.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手写数字识别Mnist数据集和读取代码分享

数据集下载 链接: https://pan.baidu.com/s/1qpzrSFhmyrdGmbSScN_ZXg?pwdd1ws 提取码:d1ws 数据集读取 from pathlib import Path import requests ​ DATA_PATH Path("data") PATH DATA_PATH / "mnist" ​ PATH.mkdir(parent…

Android Navigation基本使用

目录1. Navigation概述2. Navigation组成3. 设置环境4. 使用方法4.1. 创建导航图4.1.1. 具体操作4.2. 向Activity添加NavHost4.2.1. 通过 XML 添加4.2.2. 使用布局编辑器添加4.3. 在导航图中创建目的地4.3.1. 具体操作4.4. 连接目的地4.4.1. 具体操作4.5. 目的地之间的导航4.5.…

认识3dmax 对象属性对话框

可以从右键或编辑菜单访问此对话框; 在此可以查看和编辑参数,以确定选定对象在视口和渲染过程中的行为; 包含3个面板:常规,高级照明,用户定义; 常规面板包含6个组:对象信息&#x…

[附源码]计算机毕业设计校园疫情管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

三、Git本地仓库基本操作——git仓库忽略跟踪文件

1. .gitignore文件 在工作区中的文件内容,很多时候我们基本只关注源文件。所以,肯定有些文件是不想使用git去管理的,比如: 编译生成的中间文件相关的IDE工程文件(当然也可以进行git管理)一些固定内容的说…

国外打工人分享如何如何通过销售excel电子表格赚到 28 万美元

在不到 2 年的时间里,这是我在 Etsy 上销售电子表格模板(Google 表格 + Excel)的收入。 而且我无论如何都不是电子表格专家。 但我确实知道如何找到有需求的数字产品,并且会帮助人们在通常需要更长时间才能完成的事情上节省时间。 我还没有看到很多人谈论这个,所以我想…

【图像分类损失】Encouraging Loss:一个反直觉的分类损失

论文题目:《Well-classified Examples are Underestimated in Classification with Deep Neural Networks》 论文地址:https://arxiv.org/pdf/2110.06537.pdf 1.背景 深度分类模型背后的一般常识是专注于分类错误的样本,而忽略远离决策边界的…

Studio 3T工具下载安装及使用教程

一、下载安装 官方网址:The Professional Client, IDE and GUI for MongoDB | Studio 3T 二、使用教程 CRUD操作: 打开命令行窗口,Open intelliShell 插入一个文档,db.collection.insertOne() 插入多个文档,db.coll…

[附源码]计算机毕业设计springboot中小学课后延时服务管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

PS画布基本操作 新建保存 图片类型区分设置

观看本文需要您的电脑装配有ps软件 如果没有 可以查看我的文章 PS软件下载安装以基本配置 然后我们打开ps软件 然后点击右上角 文件 然后选择 新建 然后可以配置一下 右边的话 我们可以设置 高度 和 宽度 都是数值 其次是要指定你这个数值的单位 一般情况下 都会用像素 一…

Vue(第十五课)Pinia组件库的基本知识

为什么要使用 Pinia? Pinia 是 Vue 的存储库,它允许您跨组件/页面共享状态。 如果您熟悉 Composition API,您可能会认为您已经可以通过一个简单的 export const state reactive({}). 这对于单页应用程序来说是正确的,但如果它是…

jsp人力资源管理系统Myeclipse开发mysql数据库servlet开发java编程计算机网页项目

一、源码特点 JSP 人力资源管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统采用serlvetdaobean mvc 模式,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5…

用户信息列表实现增删改查案例的实现【问题及解决过程记录】【综合案例】

目录 用户信息列表展示案例 1. 需求: 1. 简单功能 1. 列表查询 2. 登录 3. 添加 4. 删除 5. 修改 2. 复杂功能 1. 删除选中 2. 分页查询 * 好处: 1. 减轻服务器内存的开销 …

【云原生 | Kubernetes 实战】06、Pod高级实战:基于污点、容忍度、亲和性的多种调度策略(下)

目录 一、Pod节点亲和性 1.1 案例演示:pod 节点亲和性——podAffinity 1.2 案例演示:pod 节点反亲和性——podAntiAffinity 1.3 案例演示: 换一个 topologykey 值 二、污点和容忍度 2.1 案例演示: 把 node2 当成是生产环境专…

Python中常见的调色板: 颜色 color

Python中常见的调色板: 颜色 color 这个人对颜色的总结,非常到位哈! https://blog.csdn.net/weixin_42943114/article/details/81811556

SPI 机制详解

SPI 全称为 Service Provider Interface ,它是一种服务发现机制。它通过在 ClassPath 路径下的 META-INF/services 文件夹查找文件,自动加载文件里所定义的类。这一机制为很多框架拓展提供了可能,比如在Dubbo,JDBC中都使用到了SPI…

go return返回值屏蔽

前言 最近需要写一个云环境的可执行程序,一般使用go语言,毕竟GC原生运行,结合了不需要回收指针的能力和原生运行,但是在程序返回时,笔者看到一个sdk的源码懵了,返回的数据居然可以隐式返回。 准备 go 版本…

机器学习8线性回归法Linear Regression

文章目录一、线性回归算法简介典型的最小二乘法的问题目标:具体怎么推此处省略二、简单线性回归的实现三、向量化运算一、线性回归算法简介 1.解决回归问题; 2.思想简单,实现容易; 3.是许多强大的非线性模型的基础; 4…

ESP32——WEB服务程序测试(基于官方示例restful_server)

一、简介 基于官方示例restful_server创建一个新工程。 参考1: 官方说明 参考2: ES32 RESTful_server实验_NULL_1969的博客-CSDN博客 二、编译下载运行工程 直接编译运行,出现下面两个错误。 2.1 OCD调试错误 esp_semihost: OpenOCD i…

文本生成客观评价指标总结(附Pytorch代码实现)

前言:最近在做文本生成的工作,调研发现针对不同的文本生成场景(机器翻译、对话生成、图像描述、data-to-text 等),客观评价指标也不尽相同。虽然网络上已经有很多关于文本生成评价指标的文章,本博客也是基于…