2023Jenkins连接k8s

news/2024/7/4 7:38:41 标签: kubernetes, 容器, 云原生
首先配置k8s config文件
1.方式获取k8s密钥
cat .kube/config 
2.导出方式或者密钥
kubectl config view --raw > k8s-config-admin 

请添加图片描述

pipeline {
    agent {
        kubernetes {
            yaml '''
                apiVersion: v1
                kind: Pod
                metadata:
                  labels:
                    some-label: devops
                spec:
                  containers:
                  - name: docker
                    image: docker:19.03-dind
                    securityContext:
                      privileged: true
                    tty: true
                    hostPID: true
                  - name: kubectl
                    image: registry.cn-shenzhen.aliyuncs.com/jbjb/dbs:kubectl-128
                    command:
                    - cat
                    tty: true
            '''
        }
    }
    environment {
        image = "registry.cn-shenzhen.aliyuncs.com/jbjb/dockers:$JOB_NAME-$BUILD_ID"
    }
    stages {
        stage('Get Code') {
            steps {
                
            checkout scmGit(branches: [[name: '*/lld']], extensions: [], userRemoteConfigs: [[credentialsId: 'll', url: 'http://git.xxx.com/new-test.git']])
            }
        }
        stage ("Docker Build") {
            steps {
                container('docker') {
                    script {
                        withDockerRegistry(credentialsId: 'mydocker', url: 'https://registry.cn-shenzhen.aliyuncs.com') {
                            docker.build("${image}").push()
                            
                        }
                    }
                }
            }
        }
        stage('Deploy to Kubernetes') {
            steps {
                container('kubectl') {
                withKubeCredentials(kubectlCredentials: [[credentialsId: 'kjbs', serverUrl: 'https://192.168.0.192:6443']]) {
                    sh 'kubectl get pods'
                }
            }
        }
    }
}
}

最后一个stps也可以换成这样

        stage('Deploy to Kubernetes') {
            steps {
                container('kubectl') {
                withKubeConfig(credentialsId: 'kjbs', serverUrl: 'https://192.168.0.192:6443') {
                    sh 'kubectl get pods'
                }
            }
        }
    }
withKubeCredentials 和 withKubeConfig 都是 Jenkins Pipeline 中用于指定 Kubernetes 凭据和配置的代码块,但它们之间有一些区别。
1 withKubeCredentials:
  • withKubeCredentials 用于指定 Kubernetes 的凭据信息,包括凭据 ID、服务器 URL 等。
  • 适用于使用单个凭据来执行与 Kubernetes 相关的操作。
  • 指定的凭据信息仅适用于该代码块内的步骤。
2 withKubeConfig:
  • withKubeConfig 用于指定完整的 Kubernetes 配置文件(kubeconfig)和凭据。
  • 可以使用自定义的 kubeconfig 文件,其中包含集群、用户、上下文等详细信息。
  • 适用于需要在多个步骤中重复使用相同的配置文件和凭据的情况。
  • withKubeConfig 代码块内的步骤都可以访问指定的 kubeconfig 文件和相关凭据。

根据你可以选择适合场景的代码块。如果只需要在单个步骤中使用简单的凭据信息,那么使用 withKubeCredentials 就足够了。而如果需要在多个步骤中使用相同的配置文件和凭据,使用 withKubeConfig 更为方便。

温馨提示debian12部署的k8s使用containerd运行是,jenkins 动态salve构建时,内核docker in docker时会错


http://www.niftyadmin.cn/n/5113254.html

相关文章

C++深搜例题代码加讲解

题目描述:给定一个二维数组,其中 0 表示陆地,1 表示水域,求有多少个岛屿(岛屿是由一块或多块相邻的陆地组成的,相邻指上下左右四个方向)。 输入: [ [1,1,0,0,0], [1,1,0,0,0], [0,0,1,0,0], [0,0,0,1,1] ] 输出: 3 #include <iostream> #include <vector> u…

UE4/5 批量进行贴图Texture压缩、修改饱和度

该插件下载地址&#xff1a; &#x1f35e;正在为您运送作品详情https://mbd.pub/o/bread/ZZWYmpxw 适用于 UE4 4.25/4.26/4.27 UE5 以上版本 在Edit - Plugins中分别开启 插件 Python Editor Script Plugin 插件 Editor Scripting Utilites 如果会python代码&#xff0c;…

3ds Max2023安装教程(最新最详细)

目录 一.简介 二.安装步骤 软件&#xff1a;3ds Max版本&#xff1a;2023语言&#xff1a;简体中文大小&#xff1a;6.85G安装环境&#xff1a;Win11/Win10/Win8/Win7硬件要求&#xff1a;CPU3GHz 内存16G(或更高&#xff09;下载通道①百度网盘丨64位下载链接&#xff1a; …

跟着Nature Communications学作图:R语言ggplot2散点组合误差线展示响应比(Response ratio)

论文 Meta-analysis of the impacts of global change factors on soil microbial diversity and functionality https://www.nature.com/articles/s41467-020-16881-7#Sec15 论文里提供了数据和代码&#xff0c;很好的学习素材 这篇论文是公众号的一位读者留言&#xff0c;…

Andorid小技巧:TransactionTooLargeException的简洁处理

示例代码&#xff1a;https://gitee.com/spectre1225/big-data-demo.git 问题场景 在Activity之间跳转时&#xff0c;可能因为传递大型数据导致抛出TransactionTooLargeException异常&#xff0c;或许是传递一个Bitmap&#xff0c;或许是一个长度非常长的List或数组&#xff…

QML(25)——文本输入框组件的区别(TextField TextInput TextArea TextEdit)

目录 效果展示适用场景文本组件TextLabelText和Label的区别 单行文本输入框TextFieldTextInputTextField 和 TextInput的区别 多行文本输入框TextAreaTextArea 和 TextEdit 的区别 效果展示 适用场景 场景组件属性短文本Text长文本 末尾省略Textelide: Text.ElideRight文本设置…

队列的实现方式—Python数据结构(三)

队列 1. 定义 队列是一种常见的数据结构&#xff0c;用于按照先进先出&#xff08;FIFO&#xff09;的原则管理数据项。在Python中&#xff0c;有多种方法可以实现队列&#xff0c;其中最常见的包括使用列表&#xff08;list&#xff09;和使用标准库中的 queue 模块。队列通…

【c++】简单了解运算符重载

引例 class Integer{ public:Integer(int num):_num(num){}int& getValue(){return _num;} private:int _num; };现在有两个Integer对象a,b。想让a和b相加得到的结果给对象c&#xff0c;现在可以肯定的是cab编译后肯定会报错 请注意这条信息no match for operator (oper…