码农知识堂 - 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、运行结果

     

     

  • 相关阅读:
    海南热带海洋学院金秋悦读《乡村振兴战略下传统村落文化旅游设计》2023新学年许少辉八一新书​
    git和github
    天融信上网行为管理系统设置wifi短信验证流程
    nacos集群部署
    整理mongodb文档:副本集成员可以为偶数
    Redis漏洞总结--未授权--沙箱绕过--(CNVD-2015-07557)&&(CNVD-2019-21763)&&(CVE-2022-0543)
    复数乘法IP核的使用
    Apache DolphinScheduler在中国信通院“2023 OSCAR开源尖峰案例”评选中荣获「尖峰开源项目奖」!
    【centos7中使用docker安装KLEE】
    git中通过rebase操作解决冲突并提交PR
  • 原文地址:https://blog.csdn.net/heian_99/article/details/124986269
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号