k8s部署jenkins

1.先决条件

1.因为国内的容器镜像加速器无法实时更新docker hub上的镜像资源.所以可以自己进行jenkins的容器镜像创建,.

2.这里用到了storageClass k8s的动态制备.详情参考:

k8s-StoargClass的使用-基于nfs-优快云博客

3.安装docker服务.(用于构建docker image)

2.构建jenkins镜像

1.创建Dockerfile用于构建jenkins容器镜像.

这里原始镜像我个人修改成了自己仓库的镜像。具体情况个人自己分析。

[root@master /zpf/jenkins]$cat Dockerfile
FROM jenkins/jenkins:latest
ADD ./apache-maven-3.9.4-bin.tar.gz /usr/local/
COPY ./sonar-scanner-4.8.0.2856-linux /usr/local


ENV MAVEN_HOME=/user/local/apache-maven-3.9.4
ENV PATH=$JAVE_HOME/bin/:$MAVEN_HOME/bin:$PATH
USER root
RUN echo "jenkins ALL=NOPASSWORD: ALL" >> /etc/sudoers

USER jenkins

 maven下载地址  Index of /dist/maven/maven-3/3.9.4/binaries

sonar-scanner下载地址 SonarSource Downloads-CDN

2.构建docker镜像

这里下载了maven 和sonarqube将这两个包一起打入容器镜像中.下载地址:

容器镜像仓库地址各自自己定义。没有harbor的可以使用阿里云容器镜像仓库。(免费)

[root@master /zpf/jenkins]$ls
apache-maven-3.9.4-bin.tar.gz  Dockerfile  github-jenkins  manifests  sonar-scanner-4.8.0.2856-linux  sonar-scanner-cli-4.8.0.2856-linux.zip
[root@master /zpf/jenkins] docker build -t 192.168.75.35:8858/scorpio/jenkins-maven:v1 .

3.上传到自己搭建的harbor容器镜像仓库

[root@master /zpf/jenkins]$ docker push 192.168.75.35:8858/scorpio/jenkins-maven:v1

4.编辑jenkins-ServiceAccount 文件

[root@master /zpf/jenkins/manifests]$vim jenkins-serviceAccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: jenkins-admin
  namesp
### Kubernetes 部署 Jenkins 的最佳实践 在 Kubernetes部署 Jenkins 是实现 DevOps 自动化的重要一环。以下是关于如何在 Kubernetes 上高效部署 Jenkins 并优化其性能的最佳实践。 #### 使用 Helm Chart 进行安装 Helm 是 Kubernetes 应用程序的包管理工具,能够简化复杂应用的部署过程。通过官方提供的 Jenkins Helm Chart 可以快速完成初始配置并启动服务[^3]。 ```bash helm repo add jenkins https://charts.jenkins.io helm install my-jenkins jenkins/jenkins --namespace jenkins -f values.yaml ``` 上述命令会基于自定义 `values.yaml` 文件创建一个名为 `my-jenkins` 的实例,并将其部署到指定命名空间中。此方法允许灵活调整资源分配、持久存储以及插件预加载等功能[^4]。 #### 动态代理节点扩展能力 为了提高效率和降低主服务器负载,在大规模生产环境中推荐启用动态代理功能。当有新的作业触发时,Kubernetes 插件会在集群内部临时生成 Pod 来执行具体任务完成后销毁该容器实例从而节省计算成本同时增强安全性[^2]。 #### 整合 Istio 提升网络治理水平 如果企业已经引入了 Service Mesh 技术栈,则可以通过设置虚拟服务规则进一步加强访问控制与流量调度策略。例如下面这段 YAML 定义了一个针对外部请求进入 Jenkins Web UI 的路径映射关系: ```yaml apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: jenkins-vs spec: hosts: - cicd.example.org http: - match: - uri: prefix: / route: - destination: host: jenkins.default.svc.cluster.local port: number: 8080 ``` 以上配置使得所有指向域名 `cicd.example.org` 的 HTTP 请求都被转发至本地服务端口上监听的服务地址处处理。 #### 数据持久化设计考虑因素 由于默认情况下所有的数据都会保存于内存或者 ephemeral disk 当前 pod 被删除之后这些资料就会丢失因此建议为 master component 设置 PVC (Persistent Volume Claim),确保即使发生意外重启也能恢复先前状态继续正常运作下去[^5]。 --- ### 总结 综上所述,在 k8s 环境下搭建持续集成平台不仅需要关注基础架构层面的设计思路还需要结合实际情况做出相应改进措施才能达到预期效果最大化利用现有硬件设施的同时保障业务连续性和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值