码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Jenkins集成Kubernetes集群


    前文

    Jenkins安装部署使用_南宫乘风的博客-CSDN博客

    Jenkins入门配置_南宫乘风的博客-CSDN博客

    Jenkins集成Sonar Qube_南宫乘风的博客-CSDN博客

    Jenkins的流水线(Pipeline)

    Jenkins流水线整合钉钉_南宫乘风的博客-CSDN博客Kubernetes安装Jenkins_南宫乘风的博客-CSDN博客

    目录

    1、Kubernetes 环境安装 Jenkins

    2、Jenkins 安装插件

    3、云配置

    4、Template 模板配置

    5、Jenkins-slave 启动测试

    6、实战环境

    7、运行结果


    1、Kubernetes 环境安装 Jenkins

    https://blog.csdn.net/heian_99/article/details/124985786

    2、Jenkins 安装插件

    1. 插件:
    2. kubernets
    3. pipeline
    4. docker pipeline
    5. docker
    6. Kubernetes Cli
    7. Config File Provider
    8. Pipeline Utility Steps
    9. Jenkins源:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

    3、云配置

    Dashboard > 系统管理 > 节点管理 > configureClouds

    参考:https://github.com/jenkinsci/kubernetes-plugin

     

     

     

     

     

    这里是配置连接Kubernetes集群,启动 Jenkins Slave 代理的相关配置。

    • 名称: kubernetes
    • Kubernetes 地址: kubernetes.default.svc.cluster.local (默认集群内调用 k8s api 地址)
    • 禁用 HTTPS 证书检查: 勾选 (不验证https)
    • 凭据: 新增凭据—>Secret text—>Secret 设置 kubernetes 的 Token (进入 k8s dashboard 的 token 等都行)
    • Jenkins地址: jenkins.mydlqcloud:8080/jenkins (用于代理与 Jenkins 连接的地址,用的是 k8s 集群中 jenkins 服务的地址为“http://jenkins服务名.jenkins所在namespace:jenkins端口号/jenkins后缀”)
    • 其他: 默认即可

    4、Template 模板配置

    这里配置 Jenkins Slave 在 kubernetes 集群中启动的 Pod 的配置,这里将设置四个镜像,分别是:

    • Jenkins Slave: 用于执行 Jenkins Job 命令。
    • Helm-Kubectl: 用于执行 Helm 命令。
    • Docker 用于编译、推送 Docker 镜像
    • Maven: 用于Maven编译、打包。

    这里将这四个镜像融入到一个 Pod 之中,方便执行各种命令来完成持续部署交互过程。

     

     

    1. [root@master01 Jenkins]# cat maven.yaml
    2. apiVersion: v1
    3. kind: PersistentVolumeClaim
    4. metadata:
    5. name: maven-pvc
    6. namespace: jenkins
    7. spec:
    8. storageClassName: "nfsdata"
    9. accessModes:
    10. - ReadWriteMany
    11. resources:
    12. requests:
    13. storage: 10Gi
    1. Kubernetes地址:https://kubernetes.default.svc.cluster.local/
    2. Jenkins-master:http://jenkins.jenkins.svc.cluster.local:8080
    3. Jenkins-slave:jenkins.jenkins.svc.cluster.local:50000
    4. jnlp-slave
    5. cnych/jenkins:jnlp6
    6. maven
    7. maven:3.8.5-openjdk-8-slim
    8. docker
    9. registry.cn-shanghai.aliyuncs.com/mydlq/docker:18.06.2-dind
    10. helm-kubectl
    11. registry.cn-shanghai.aliyuncs.com/mydlq/helm-kubectl:2.13.1
    12. /var/run/docker.sock
    13. /usr/bin/docker
    14. /etc/docker

    注意:docker需要填写sleep

     

     

    5、Jenkins-slave 启动测试

     

    1. def label = "jnlp-slave"
    2. podTemplate(label: label,cloud: 'kubernetes' ){
    3. node (label) {
    4. stage('Git阶段'){
    5. echo "1、开始拉取代码"
    6. sh "git version"
    7. }
    8. stage('Maven阶段'){
    9. container('maven') {
    10. echo "2、开始Maven编译、推送到本地库"
    11. sh "mvn -version"
    12. }
    13. }
    14. stage('Docker阶段'){
    15. container('docker') {
    16. echo "3、开始读取Maven pom变量,并执行Docker编译、推送、删除"
    17. sh "docker version"
    18. }
    19. }
    20. stage('Helm阶段'){
    21. container('helm-kubectl') {
    22. echo "4、开始检测Kubectl环境,测试执行Helm部署,与执行部署"
    23. sh "helm version"
    24. }
    25. }
    26. }
    27. }

     

    6、实战环境

     

     

    1. pipeline {
    2. agent
    3. {
    4. label 'jnlp-slave'
    5. }
    6. // 存放所有任务的合集
    7. stages {
    8. stage('拉取Git代码') {
    9. steps {
    10. echo '拉取Git代码'
    11. sh 'git clone https://gitee.com/chengfeng99/java-demo.git'
    12. }
    13. }
    14. stage('检测代码质量') {
    15. steps {
    16. echo '检测代码质量'
    17. withSonarQubeEnv('sonarqube') { // Will pick the global server connection you have configured
    18. // 这里使用名字叫做maven的容器运行
    19. container("maven") {
    20. sh '''
    21. cd /home/jenkins/agent/workspace/k8s-demo/java-demo
    22. mvn sonar:sonar -Dsonar.projectname=${JOB_NAME} -Dsonar.projectKey=${JOB_NAME} -Dsonar.java.binaries=target/ -Dsonar.login=19d0d6b885e18455d257d61da08776bd4e180c04
    23. '''
    24. }
    25. }
    26. }
    27. }
    28. stage('构建代码') {
    29. steps {
    30. echo '构建代码'
    31. container('maven') {
    32. sh '''
    33. cd /home/jenkins/agent/workspace/k8s-demo/java-demo
    34. mvn clean package -Dmaven.test.skip=true
    35. '''
    36. //打包跳过测试
    37. }
    38. }
    39. }
    40. stage('制作自定义镜像并发布Harbor') {
    41. steps {
    42. echo '制作自定义镜像并发布Harbor'
    43. }
    44. }
    45. stage('基于Harbor部署工程') {
    46. steps {
    47. echo '基于Harbor部署工程'
    48. }
    49. }
    50. }
    51. }

    7、运行结果

     

     

  • 相关阅读:
    2022年Q2全国网络零售发展指数同比增长3.3%
    Web应用程序漏洞-X-Forwarded-For注入
    postgresql逻辑备份工具pg_dump和pg_resotre学习
    MATLAB | 全网唯一 MATLAB双向弦图(有向弦图)绘制
    C语言中的strcpy,strncpy,memcpy,memmove,memset函数strcmp
    6-3 pytorch使用GPU训练模型
    【数据结构】二叉树--堆排序
    SpringCloud - Config分布式配置中心
    Python操作Kafka基础教程
    计算机网络分层结构
  • 原文地址:https://blog.csdn.net/heian_99/article/details/124986269
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号