minikube helm 安装 jenkins

简介: minikube helm 安装 jenkins

文章目录

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

3.7 确认版本“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. 准备条件

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

serviceAccount:jenkins-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

界面登陆

1035234-20181020215539574-213176954.png

1035234-20181020215539574-213176954.png

3.7 确认版本

Jenkins 版本

$ k exec -ti jenkins-0 -n jenkins -- cat /var/jenkins_home/config.xml |grep -i version
<?xml version='1.1' encoding='UTF-8'?>
  <version>2.361.4</version>

Java 版本

$ k exec -ti jenkins-0 -n jenkins -- cat /opt/java/openjdk/release | grep -i version
JAVA_VERSION="11.0.16.1"

参考:

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

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
7月前
|
前端开发 jenkins 持续交付
新的centos7.9安装docker版本的jenkins2.436.1最新版本-前端项目发布(五)
新的centos7.9安装docker版本的jenkins2.436.1最新版本-前端项目发布(五)
177 1
|
2月前
|
Ubuntu jenkins 持续交付
Ubuntu系统 用docker安装jenkins
Ubuntu系统 用docker安装jenkins
|
4月前
|
jenkins Java Linux
[jenkins]简介与安装
[jenkins]简介与安装
|
4月前
|
jenkins Java 持续交付
jenkins学习笔记之十九:Docker安装jenkins master及动、静态配置slave
jenkins学习笔记之十九:Docker安装jenkins master及动、静态配置slave
|
4月前
|
jenkins 持续交付 网络安全
Windows 2016 安装 Jenkins
Windows 2016 安装 Jenkins
20 0
|
4月前
|
jenkins 持续交付 开发工具
Jenkins 手动安装插件
Jenkins 手动安装插件
81 0
|
4月前
|
jenkins Java Devops
CentOS 7上安装 Jenkins 2.346 -- yum 方式
CentOS 7上安装 Jenkins 2.346 -- yum 方式
215 0
|
4月前
|
jenkins Linux 持续交付
CentOS 7上安装 Jenkins 2.227 -- yum 方式
CentOS 7上安装 Jenkins 2.227 -- yum 方式
192 0
|
7月前
|
jenkins 持续交付 数据安全/隐私保护
Docker 安装 Jenkins
Jenkins 是一个独立的开源自动化服务器,可用于自动化与构建、测试、交付或部署软件相关的各种任务。
389 1
|
6月前
|
Ubuntu jenkins Java
Jenkins安装
在Ubuntu 20.04上安装Jenkins和OpenJDK 17:更新系统,安装Java,下载 Jenkins keyring,添加源,安装软件。配置Jenkins服务监听80端口,验证通过访问http://jenkins.example.com。若要直接进入管理页面或忘记密码,编辑`$JENKINS_HOME/config.xml`,移除安全相关设置。
73 0