章工运维 章工运维
首页
  • linux
  • windows
  • 中间件
  • 监控
  • 网络
  • 存储
  • 安全
  • 防火墙
  • 数据库
  • 系统
  • docker
  • 运维工具
  • other
  • elk
  • K8S
  • ansible
  • Jenkins
  • GitLabCI_CD
  • 随笔
  • 面试
  • 工具
  • 收藏夹
  • Shell
  • python
  • golang
友链
  • 索引

    • 分类
    • 标签
    • 归档
    • 首页 (opens new window)
    • 关于我 (opens new window)
    • 图床 (opens new window)
    • 评论 (opens new window)
    • 导航栏 (opens new window)
周刊
GitHub (opens new window)

章工运维

业精于勤,荒于嬉
首页
  • linux
  • windows
  • 中间件
  • 监控
  • 网络
  • 存储
  • 安全
  • 防火墙
  • 数据库
  • 系统
  • docker
  • 运维工具
  • other
  • elk
  • K8S
  • ansible
  • Jenkins
  • GitLabCI_CD
  • 随笔
  • 面试
  • 工具
  • 收藏夹
  • Shell
  • python
  • golang
友链
  • 索引

    • 分类
    • 标签
    • 归档
    • 首页 (opens new window)
    • 关于我 (opens new window)
    • 图床 (opens new window)
    • 评论 (opens new window)
    • 导航栏 (opens new window)
周刊
GitHub (opens new window)
  • ansible系列文章

  • Kubernetes笔记

    • 安装篇-kubeadm
    • k8s入门
    • k8s安装篇二进制
    • k8s面试题
    • kubernetes(k8s)yaml文件详解
    • k8s报错小结
    • Kubernetes 安装配置ingress controller
    • cka考试真题
    • ingress配置证书
    • cka考试作业
    • k8s部署java项目
    • jenkins脚本式流水线部署k8s项目实例一
    • helm v3安装并创建例子
    • 使用helm将本地部署文件上传到harbor chart上
    • helm公共仓库创建
    • helm适应minio作为私有仓库
    • helm release使用说明
    • kubernetes核心概念
    • kubectl使用技巧
    • kubernetes卷的几种类型
    • kubernetes安全框架
    • 云原生-什么是HPA和PDB、VPA
    • k8s部署php项目示例
    • 配置kubeconfig 文件访问 Kubernetes 集群
    • configmap配置的几种方式
    • k8s配置go服务
    • k8s部署java项目
    • kubernetes部署prometheus监控
    • kubernetes部署elk日志系统
    • kubernetes环境devops流水线
      • kubernetes高阶技能必备的工具
      • deployment中使用configmap、secret的方式
      • 业务pod 飘移pending排查分析
    • elk

    • jenkins

    • GitLabCI_CD

    • 专题
    • Kubernetes笔记
    章工运维
    2025-03-02
    目录

    kubernetes环境devops流水线

    # 部署jenkins

    # Dockerfile文件展示

    FROM docker.cnb.cool/zzppjj/docker-images/jenkins:jdk17
    ADD ./apache-maven-3.9.0-bin.tar.gz /usr/local/
    ADD ./sonar-scanner-cli-4.8.0.2856-linux.zip /usr/local/
    
    USER root
    
    WORKDIR /usr/local/
    RUN unzip sonar-scanner-cli-4.8.0.2856-linux.zip
    RUN mv sonar-scanner-4.8.0.2856-linux sonar-scanner-cli
    RUN ln -s /usr/local/sonar-scanner-cli/bin/sonar-scanner /usr/bin/sonar-scanner
    
    ENV MAVEN_HOME=/usr/local/apache-maven-3.9.0
    ENV PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
    
    RUN echo "jenkins ALL=NOPASSWD: ALL" >> /etc/sudoers
    USER jenkins
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16

    # 执行打包镜像

    docker build -t docker.cnb.cool/zzppjj/docker-images/jenkins:v1 .
    
    1

    # 准备部署

    docker compose文件

    version: '3'
    services:
      jenkins:
        image: docker.cnb.cool/zzppjj/docker-images/jenkins:v1 
        container_name: jenkins
        restart: always
        ports:
          - '8000:8080'
          - '50000:50000'
        environment:
          JAVA_OPTS: -Duser.timezone=Asia/Shanghai
        volumes:
          - ./jenkins_home:/var/jenkins_home
          - /etc/localtime:/etc/localtime:ro
          - /var/run/docker.sock:/var/run/docker.sock
          - /usr/bin/docker:/usr/bin/docker  
          - /usr/bin/kubectl:/usr/bin/kubectl
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17

    执行部署

    docker compose up -d
    
    1

    # jenkins 配置kubeconfig

    打开config文件

    cat /root/.kube/config
    
    1

    证书配置

    echo certificate-authority-data | base64 -d > ca.crt
    echo client-certificate-data | base64 -d > client.crt
    echo client-key-data | base64 -d > client.key
    
    1
    2
    3

    根据这三个文件生成一个PKCS12格式的客户端证书文件

    openssl pkcs12 -export -out cert.pfx -inkey client.key -in client.crt -certfile ca.crt
    
    1

    注意生成证书的时候,一定要填写密码,后面会用到

    将生成的 cert.pfx 上传到凭证

    image-20250301204151271

    image-20250301204339040

    image-20250301204458301

    配置kubeconfig

    安装插件Config File Provider Plugin

    image-20250301205324212

    系统管理点击Managed files-Custom-file

    image-20250301205432927

    image-20250301205842237

    pipeline使用例子

            stage('Deploy') {
                steps {
                    script{
                      configFileProvider([configFile(fileId: '22bdbd6d-14f4-49c1-a924-5c844073ea69', 
                      targetLocation: "admin.kubeconfig")]){
                          sh """
                          sed -i 's#IMAGE_NAME#${image_name}#' deployment.yaml
                          sed -i 's#REPLICAS#${ReplicaCount}#' deployment.yaml
                          kubectl apply -f deployment.yaml -n ${Namespace} --kubeconfig=admin.kubeconfig
                          """
                      }        
                    }
                }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

    # 部署go程序的jenkinsfile示例

    pipeline {
      agent {
        label 'devops'
      }
      environment {
        REGISTRY = 'docker.cnb.cool'
        GIT_REPO_URL = '192.168.51.37:9080'
        DOCKERHUB_NAMESPACE = 'zzppjj/docker-images'
        APP_NAME = 'go-admin'
      }
      parameters {
        string(name: 'BRANCH_NAME', defaultValue: 'main', description: '请选择要发布的分支')
        string(name: 'TAG_NAME', defaultValue: 'latest', description: '标签名称,必须以 v 开头,例如:v1、v1.0.0')
      }
    
      stages {
        stage('clone code') {
          steps {
    
            git branch: 'main', credentialsId: 'git-user-pass', url: 'http://192.168.51.37:9080/root/xirang.git'
    
    
          }
        }
    
    
        stage('build & push') {
          steps {
    
            sh 'docker build -f Dockerfile -t $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:$TAG_NAME .'
            withCredentials([usernamePassword(credentialsId : 'cnb-user-pass' ,passwordVariable : 'DOCKER_PASSWORD' ,usernameVariable : 'DOCKER_USERNAME' ,)]) {
            sh '''echo "$DOCKER_PASSWORD" | docker login $REGISTRY -u "$DOCKER_USERNAME" --password-stdin
    docker push $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:$TAG_NAME'''
            }
          }
        }
    
        stage('deploy to dev') {
          steps {
              script{
                configFileProvider([configFile(fileId: '2e4e564d-6b63-4edd-9bea-1dbfc15d95a4', 
                targetLocation: "admin.kubeconfig")]){
                    sh """
                sed -i\'\' "s#REGISTRY#$REGISTRY#" deploy/deployment.yaml
    sed -i\'\' "s#DOCKERHUB_NAMESPACE#$DOCKERHUB_NAMESPACE#" deploy/deployment.yaml
    sed -i\'\' "s#APP_NAME#$APP_NAME#" deploy/deployment.yaml
    sed -i\'\' "s#BUILD_NUMBER#$TAG_NAME#" deploy/deployment.yaml
                    kubectl apply -f deploy/deployment.yaml --kubeconfig=admin.kubeconfig
                    """
                }
           }
         }
        }
     }
    }
    
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    微信 支付宝
    上次更新: 2025/03/02, 18:52:31

    ← kubernetes部署elk日志系统 kubernetes高阶技能必备的工具→

    最近更新
    01
    不花一分钱从0到1建站教程
    04-22
    02
    批量拿取多台服务器的日志文件
    04-21
    03
    高德MCP智能体搞定旅游计划
    04-19
    更多文章>
    Theme by Vdoing | Copyright © 2019-2025 | 点击查看十年之约 | 鄂ICP备2024072800号
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式