Dra-M Dra-M
首页
技术
冥思
哲学
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

莫小龙

保持理智,相信未来。
首页
技术
冥思
哲学
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Java

  • Golang

  • 编程思想

  • 微服务

  • 中间件

  • Python

  • 运维

    • Linux

    • Bash

    • DevOps

      • 前言:搭建一套自有的围绕K8S的DevOps工具
      • 部署K8S -- kubeasz
      • 部署NFS服务器
      • 为K8S添加StorageClass
      • 学习用NodePort暴露K8S服务
      • 外部nginx代理到nodeport
      • 使用Docker安装LDAP
      • 使用K8S部署LDAP管理面板
      • 使用Docker部署第三方K8S面板Kuboard,并连接LDAP
      • 使用K8S部署GitLab,并连接LDAP
      • 使用K8S部署Jenkins,并连接LDAP
      • 使用K8S部署Nexus,并连接LDAP
      • Nexus Maven私服配置
      • Nexus Docker私服配置+K8S拉取私服镜像
      • Jenkins Pipeline 从 K8s Agent 启动构建
        • 配置连接K8S集群
          • 在k8s中创建账号
          • 在Jenkins添加密钥
          • 创建pipeline,在Agent中构建
      • Jenkins Pipeline 拉取Git代码 获取提交信息
      • Jenkins Pipeline Maven打包
      • Jenkins Pipeline BuildDockerImage 推送到私服
      • Jenkins Pipeline 部署程序到K8S
      • Jenkins Pipeline 共享库
      • Loki日志收集+K8S
      • SkyWalking链路追踪+K8S、
      • SpringCloud+K8S联调说明
      • DevOps WebHook汇总 (Gitlab,Jenkins,K8S Event)
  • 技术
  • 运维
  • DevOps
莫小龙
2022-04-11
目录

Jenkins Pipeline 从 K8s Agent 启动构建

构建时在K8S中启动一个Pod用来执行构建任务,构建结束后销毁Pod。

我的Jenkins中有如下K8S相关插件,我不确定哪些与该步骤相关。

  • Kubernetes plugin
  • Kubernetes :: Pipeline :: DevOps Steps
  • Kubernetes Client API Plugin
  • Kubernetes Continuous Deploy Plugin
  • Kubernetes Credentials Plugin

# 配置连接K8S集群

# 在k8s中创建账号

kubectl -n infra create serviceaccount jenkins-robot
1

kubectl apply -f jenkins-clusterrolebinding.yaml jenkins-clusterrolebinding.yaml

jenkins-clusterrolebinding.yaml如下:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: jenkins-robot-binding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: jenkins-robot
  namespace: infra
1
2
3
4
5
6
7
8
9
10
11
12
13

查看ServiceAccount的Secret

kubectl -n infra get sa jenkins-robot -o yaml
1

k8s-secret.png

复制Secret中的token

kubectl -n infra get secret jenkins-robot-token-bpwmm -o yaml
1

k8s-secret-token.png

Base64解码

echo "复制的token" | base64 -d
1

# 在Jenkins添加密钥

添加jenkins凭据 Manage Credentials

添加Secret Text类型的凭据

将解码出来的内容黏贴到Secret文本框中

Manage nodes and clouds -> configureClouds

k8s-cloud.png

地址:k8s地址

命名空间:上面创建账号所属的命名空间,也是Agent运行的命名空间

凭据:上面创建的凭据。

Jenkins地址:在K8S中能够访问到的当前Jenkins的地址。

Jenkins通道:在K8S中能够访问到的当前Jenkins的jnlp地址。

Pod Labels:可以不写,后面我们通过Pipeline填写Pod信息。

# 创建pipeline,在Agent中构建

env.label = "application-name"

//创建agent pod
podTemplate(label: env.label, cloud: 'kubernetes', containers: [containerTemplate(name: 'jnlp',
       // 包含 docker kubectl的镜像,我用官方的jenkins-agent没法打包docker镜像所以自己基于jenkins-agent打包的,我不保证不同版本功能一致。
       image: 'dragonmo/jenkins-agent-docker:1.2.6',
       alwaysPullImage: false,
       //root权限启动
       privileged: true,
       workingDir: '/root',
       args: '${computer.jnlpmac} ${computer.name}'),],
       //持久化工作目录
       //我原本用pvc持久化一些东西减少网络io提高速度,后面发现Nfs的io本身更高。
       //后面我改用了hostPathVolume(mountPath: '/root/workspace/', hostPath: '/jenkins-agent/workspace')
       volumes: [persistentVolumeClaim(mountPath: '/root/workspace/', claimName: 'jenkins-agent'),]) {
   //使用agent pod
   node(env.label) {
       stage('init') {
           println("开始构建")
       }
   }
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

#DevOps#K8S#运维#jenkins#pipeline
上次更新: 10/23/2024
Nexus Docker私服配置+K8S拉取私服镜像
Jenkins Pipeline 拉取Git代码 获取提交信息

← Nexus Docker私服配置+K8S拉取私服镜像 Jenkins Pipeline 拉取Git代码 获取提交信息→

最近更新
01
mosquito配置ws协议
10-23
02
Pip包的离线下载和安装
10-23
03
stable diffusion 相关收藏
02-24
更多文章>
Theme by Vdoing | Copyright © 2019-2024 Dra-M
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式