15、jenkins

15、jenkins

k8s手撕yml方式部署最新版 Jenkins 2.441(jdk-21版)(jenkins-prod)

mkdir -p ~/jenkins-prod-ymlkubectl create ns jenkins-prod
kubectl label node k8s-node1 jenkins-prod=jenkins-prod
cat > ~/jenkins-prod-yml/Jenkins-prod-rbac.yml << 'EOF'
apiVersion: v1
kind: Namespace
metadata:name: jenkins-prod
---
apiVersion: v1
kind: ServiceAccount
metadata:name: jenkins-prodnamespace: jenkins-prod
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:annotations:rbac.authorization.kubernetes.io/autoupdate: "true"labels:kubernetes.io/bootstrapping: rbac-defaultsname: jenkins-prod
rules:
- apiGroups:- '*'resources:- statefulsets- services- replicationcontrollers- replicasets- podtemplates- podsecuritypolicies- pods- pods/log- pods/exec- podpreset- poddisruptionbudget- persistentvolumes- persistentvolumeclaims- jobs- endpoints- deployments- deployments/scale- daemonsets- cronjobs- configmaps- namespaces- events- secretsverbs:- create- get- watch- delete- list- patch- update
- apiGroups:- ""resources:- nodesverbs:- get- list- watch- update
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:annotations:rbac.authorization.kubernetes.io/autoupdate: "true"labels:kubernetes.io/bootstrapping: rbac-defaultsname: jenkins-prod
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: jenkins-prod
subjects:
- apiGroup: rbac.authorization.k8s.iokind: Groupname: system:serviceaccounts:jenkins-prod
EOF
kubectl apply -f ~/jenkins-prod-yml/Jenkins-prod-rbac.yml
cat > ~/jenkins-prod-yml/Jenkins-prod-Service.yml << 'EOF'
apiVersion: v1
kind: Service
metadata:name: jenkins-prodnamespace: jenkins-prodlabels:app: jenkins-prod
spec:selector:app: jenkins-prodtype: NodePortports:- name: webnodePort: 30456port: 8080targetPort: web- name: agentnodePort: 30789port: 50000targetPort: agent
EOF
kubectl apply -f ~/jenkins-prod-yml/Jenkins-prod-Service.yml
cat > ~/jenkins-prod-yml/Jenkins-prod-Deployment.yml << 'EOF'
apiVersion: apps/v1
kind: Deployment
metadata:name: jenkins-prodnamespace: jenkins-prodlabels:app: jenkins-prod
spec:replicas: 1selector:matchLabels:app: jenkins-prodtemplate:metadata:labels:app: jenkins-prodspec:tolerations:- effect: NoSchedulekey: no-podoperator: ExistsnodeSelector:jenkins-prod: jenkins-prodcontainers:- name: jenkins-prod#image: jenkins/jenkins:2.441-jdk21image: ccr.ccs.tencentyun.com/huanghuanhui/jenkins:2.441-jdk21imagePullPolicy: IfNotPresentresources:limits:cpu: "2"memory: "4Gi"requests:cpu: "1"memory: "2Gi"securityContext:runAsUser: 0ports:- containerPort: 8080name: webprotocol: TCP- containerPort: 50000name: agentprotocol: TCPenv:- name: LIMITS_MEMORYvalueFrom:resourceFieldRef:resource: limits.memorydivisor: 1Mi- name: JAVA_OPTSvalue: -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=truevolumeMounts:- name: jenkins-home-prodmountPath: /var/jenkins_home- mountPath: /etc/localtimename: localtimevolumes:- name: jenkins-home-prodpersistentVolumeClaim:claimName: jenkins-home-prod- name: localtimehostPath:path: /etc/localtime---
apiVersion: v1
kind:  PersistentVolumeClaim
metadata:name: jenkins-home-prodnamespace: jenkins-prod
spec:storageClassName: "nfs-storage"accessModes: [ReadWriteOnce]resources:requests:storage: 2Ti
EOF
kubectl apply -f ~/jenkins-prod-yml/Jenkins-prod-Deployment.yml
cat > ~/jenkins-prod-yml/Jenkins-prod-Ingress.yml << 'EOF'
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: jenkins-prod-ingressnamespace: jenkins-prodannotations:nginx.ingress.kubernetes.io/ssl-redirect: 'true'nginx.ingress.kubernetes.io/proxy-body-size: '4G'
spec:ingressClassName: nginxrules:- host: jenkins-prod.huanghuanhui.cloudhttp:paths:- path: /pathType: Prefixbackend:service:name: jenkins-prod # 将所有请求发送到 jenkins-prod 服务的 8080 端口port:number: 8080tls:- hosts:- jenkins-prod.huanghuanhui.cloudsecretName: jenkins-prod-ingress-tls
EOF
kubectl create secret -n jenkins-prod \
tls jenkins-prod-ingress-tls \
--key=/root/ssl/huanghuanhui.cloud.key \
--cert=/root/ssl/huanghuanhui.cloud.crt
kubectl apply -f ~/jenkins-prod-yml/Jenkins-prod-Ingress.yml

访问地址:jenkins-prod.huanghuanhui.cloud

设置账号密码为:admin、Admin@2024

# 插件
1、Localization: Chinese (Simplified)
2、Pipeline
3、Kubernetes
4、Git
5、Git Parameter
6、GitLab				   # webhook 触发构建
7、Config FIle Provider		# 连接远程k8s集群
#8、Extended Choice Parameter
9、SSH Pipeline Steps		# Pipeline通过ssh远程执行命令
10、Pipeline: Stage View
11、Role-based Authorization Strategy
12、DingTalk				   # 钉钉机器人http://jenkins-prod.jenkins-prod:8080
cat > ~/jenkins-prod-yml/Jenkins-prod-slave-maven-cache.yml << 'EOF'
apiVersion: v1
kind:  PersistentVolumeClaim
metadata:name: jenkins-prod-slave-maven-cachenamespace: jenkins-prod
spec:storageClassName: "nfs-storage"accessModes: [ReadWriteOnce]resources:requests:storage: 2Ti
EOF
cat > ~/jenkins-prod-yml/Jenkins-prod-slave-node-cache.yml << 'EOF'
apiVersion: v1
kind:  PersistentVolumeClaim
metadata:name: jenkins-prod-slave-node-cachenamespace: jenkins-prod
spec:storageClassName: "nfs-storage"accessModes: [ReadWriteOnce]resources:requests:storage: 2Ti
EOF
cat > ~/jenkins-prod-yml/Jenkins-prod-slave-golang-cache.yml << 'EOF'
apiVersion: v1
kind:  PersistentVolumeClaim
metadata:name: jenkins-prod-slave-golang-cachenamespace: jenkins-prod
spec:storageClassName: "nfs-storage"accessModes: [ReadWriteOnce]resources:requests:storage: 2Ti
EOFcat > ~/jenkins-prod-yml/Jenkins-prod-slave-go-build-cache.yml << 'EOF'
apiVersion: v1
kind:  PersistentVolumeClaim
metadata:name: jenkins-prod-slave-go-build-cachenamespace: jenkins-prod
spec:storageClassName: "nfs-storage"accessModes: [ReadWriteOnce]resources:requests:storage: 2Ti
EOF

Jenkins (jdk-21)(pipeline)

测试 docker、测试 maven、 测试 node、测试 golang、 测试 gcc、 测试 kubectl

#!/usr/bin/env groovypipeline {agent {kubernetes {yaml '''
apiVersion: v1
kind: Pod
metadata:name: jenkins-slavenamespace: jenkins-prod
spec:tolerations:- key: "no-pod"operator: "Exists"effect: "NoSchedule"containers:- name: docker#image: docker:24.0.6image: ccr.ccs.tencentyun.com/huanghuanhui/docker:24.0.6imagePullPolicy: IfNotPresentreadinessProbe:exec:command: [sh, -c, "ls -S /var/run/docker.sock"]command:- sleepargs:- 99dvolumeMounts:- name: docker-socketmountPath: /var/run- name: docker-daemon#image: docker:24.0.6-dindimage: ccr.ccs.tencentyun.com/huanghuanhui/docker:24.0.6-dindimagePullPolicy: IfNotPresentsecurityContext:privileged: truevolumeMounts:- name: docker-socketmountPath: /var/run- name: maven#image: maven:3.8.1-jdk-8image: ccr.ccs.tencentyun.com/huanghuanhui/maven:3.8.1-jdk-8imagePullPolicy: IfNotPresentcommand:- sleepargs:- 99dvolumeMounts:- name: maven-cachemountPath: /root/.m2/repository- name: node#image: node:16.17.0-alpineimage: ccr.ccs.tencentyun.com/huanghuanhui/node:16.17.0-alpineimagePullPolicy: IfNotPresentcommand:- sleepargs:- 99dvolumeMounts:- name: node-cachemountPath: /root/.npm- name: golang#image: golang:1.21.3image: ccr.ccs.tencentyun.com/huanghuanhui/golang:1.21.3imagePullPolicy: IfNotPresentcommand:- sleepargs:- 99d- name: gcc#image: gcc:13.2.0image: ccr.ccs.tencentyun.com/huanghuanhui/gcc:13.2.0imagePullPolicy: IfNotPresentcommand:- sleepargs:- 99d- name: kubectl#image: kostiscodefresh/kubectl-argo-rollouts:v1.6.0#image: kubectl:v1.28.4image: ccr.ccs.tencentyun.com/huanghuanhui/kubectl:v1.28.4imagePullPolicy: IfNotPresentcommand:- sleepargs:- 99dvolumes:- name: docker-socketemptyDir: {}- name: maven-cachepersistentVolumeClaim:claimName: jenkins-prod-slave-maven-cache- name: node-cachepersistentVolumeClaim:claimName: jenkins-prod-slave-node-cache
'''}}stages {stage('测试 docker') {steps {container('docker') {sh """docker version"""}}}stage('测试 maven') {steps {container('maven') {sh """mvn -version && java -version && javac -version"""}}}stage('测试 node') {steps {container('node') {sh """node --version && npm --version && yarn --version"""}}}stage('测试 golang') {steps {container('golang') {sh """go version
cat > HelloWorld.go << 'EOF'
package mainimport "fmt"func main() {fmt.Println("Hello, world! My Name is go!")
}
EOFgo build -o HelloWorld-go HelloWorld.go && ./HelloWorld-go"""}}}stage('测试 gcc') {steps {container('gcc') {sh """gcc --version && g++ --version && make --version
cat > HelloWorld.cpp << 'EOF'
#include <iostream>int main() {std::cout << "Hello, World! My Name is C++!" << std::endl;return 0;
}
EOFg++ -o HelloWorld-cpp HelloWorld.cpp && ./HelloWorld-cpp"""}}}stage('测试 kubectl') {steps {container('kubectl') {sh """kubectl get node"""}}}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/669085.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vivado TCL运行编译

用Tcl运行合成 运行合成的Tcl命令是synth_design。通常&#xff0c;此命令与一起运行多个选项&#xff0c;例如&#xff1a; synth_design -part xc7k30tfbg484-2 -top my_top 在本例中&#xff0c;synth_design使用-part选项和-top选项运行。在Tcl控制台中&#xff0c;您可以…

layui

基于复杂结构的自定义模版相关介绍 我这里的接口给的格式数据 我这里搜索往返时候要显示成这样的 layui.use([table,form], function(){ var table layui.table; var form layui.form;// 渲染表格 table.render({ elem: #test-table-reload,toolbar: #toolbarDemo, …

【驱动】块设备驱动(四)-块设备驱动层

前言 块设备驱动程序是Liux块子系统中的最底层组件。它们从IO调度程序中获得请求&#xff0c;然后按要求处理这些请求。一个块设备驱动程序可能处理几个块设备。例如&#xff0c;IDE设备驱动程序可以处理几个IDE磁盘&#xff0c;其中的每个都是一个单独的块设备。而且&#xff…

json、jsonlines格式化显示

一、对于vscode暂时没找到合适的方法来格式化 二、利用JetBrains的IDE(例如PyCharm)来格式化(快捷键CtrlAltL) 三、利用jq工具&#xff1a;(速度快&#xff0c;推荐。) # 安装 sudo apt install jq# 使用&#xff08;假设你已经有一个dev.jsonlines文件&#xff09; jq . dev.…

数据库删除事务提交之后数据恢复

项目场景&#xff1a; 前几天的遇到的&#xff0c;老大让我删一条数据&#xff0c;不熟悉业务&#xff0c;我看了一下查询的sql语句&#xff0c;发现关联了三个表t1,t2,t3&#xff0c;把第三张表t3填报记录删掉了&#xff0c;又运行了一遍查询sql发现还能搜索到&#xff0c;问…

vulnhub靶场之Thales

一.环境搭建 1.靶场描述 Description : Open your eyes and change your perspective includes 2 flags:user.txt and root.txt. Telegram: machineboy141 (for any hint) This works better with VIrtualBox rathe than VMware 2.靶场地址 https://www.vulnhub.com/entry/t…

ensp实验合集(二)

实验6 VLAN划分....................................................................... - 30 - 实验7 路由器调试及常用命令使用........................................ - 42 - 实验8 配置静态路由器............................................................…

GCC编译器的使用以及使用Makefile语法进行操控

Makefile 这里使用的Makefile操控编译器 gcc 常见的组成部分 c&#xff1a; gcc 的一个版本&#xff0c;默认语言设置为 C&#xff0c;而且在链接的时候自动包含标准 C 库。这和 g 一样configure&#xff1a; GCC 源代码树根目录中的一个脚本。用于设置配置值和创建 GCC 编…

P2SH地址嵌套SegWit脚本

主要分为以下步骤&#xff1a; 创建SegWit脚本&#xff1a;首先&#xff0c;您需要创建一个SegWit脚本&#xff0c;可以是Pay-to-Witness-Public-Key-Hash&#xff08;P2WPKH&#xff09;或Pay-to-Witness-Script-Hash&#xff08;P2WSH&#xff09;脚本。这些脚本使用新的Seg…

pytest中fixture的使用方法

一、pytest中的fixture是什么 为可靠的和可重复执行的测试提供固定的基线&#xff08;可以理解为测试的固定配置&#xff0c;使不同范围的测试都能够获得统一的配置&#xff09;&#xff0c;fixture提供了区别于传统单元测试&#xff08;setup/teardown&#xff09;风格的令人…

2024最新版鸿蒙HarmonyOS开发工具安装使用指南

2024最新版鸿蒙HarmonyOS开发工具安装使用指南 By JacksonML 0. 什么是鸿蒙Harmony OS&#xff1f; 华为鸿蒙系统&#xff08;HUAWEI Harmony OS&#xff09;&#xff0c;是华为公司在2019年8月9日于东莞举行的华为开发者大会&#xff08;HDC.2019&#xff09;上正式发布的分…

算法每日一题: Nim游戏 | 找规律

哈哈&#xff0c;大家好&#xff0c;我是星恒&#xff0c;今天的每日一题真开心&#xff0c;连做了3天牢&#xff0c;终于ak了一道&#xff0c;太不容易了 这道题其实就是找规律&#xff0c;刚开始我还以为是动归&#xff0c;但是列举了不少例子之后&#xff0c;发现有自己直接…

蓝桥杯每日一题-----数位dp练习

题目 链接 参考代码 写了两个&#xff0c;一个是很久以前写的&#xff0c;一个是最近刚写的&#xff0c;很久以前写的时候还不会数位dp所以写了比较详细的注释&#xff0c;这两个代码主要是设置了不同的记忆数组&#xff0c;通过这两个代码可以理解记忆数组设置的灵活性。 im…

redis源码之:集群创建与节点通信(1)

一、创建集群与添加节点&#xff08;meet&#xff09; 通过redis源码之&#xff1a;redis-cli 集群命令发现&#xff0c;不管是新建cluster集群还是往集群里添加新节点&#xff0c;都是通过meet指令完成&#xff0c;假设有ABCD四个节点&#xff0c;新建集群&#xff1a;redis-…

vue3父子组件相互调用方法(setup)

一、父组件调用子组件方法 子组件需要使用defineExpose对外暴露方法&#xff0c;父组件才可以调用&#xff01; 1.父组件 <template><button click"getChild">触发子组件方法</button><!-- 一&#xff1a;定义 ref --><Child ref"…

Vue学习笔记之组件基础

1、组件的定义 一般将 Vue 组件定义在一个单独的 .vue 文件中&#xff0c;称做单文件组件&#xff1b;当然也可以将组件直接定义在js文件中&#xff0c;如下js代码&#xff0c;定义一个组件BlogPost&#xff0c;通过props定义对外暴露属性title&#xff0c;父组件传递title&am…

分享62个节日PPT,总有一款适合您

分享62个节日PPT&#xff0c;总有一款适合您 62个节日PPT下载链接&#xff1a;https://pan.baidu.com/s/1mheNtIvXknGHse44FW7nOw?pwd6666 提取码&#xff1a;6666 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不易…

api接口是什么意思,api接口该如何防护呢?

API接口&#xff1a;应用程序与服务之间的接口 什么是API接口 API是应用程序接口的缩写&#xff0c;指的是能够让不同的应用程序之间交换数据的一种方式。一个API接口就是应用程序与服务之间的接口&#xff0c;它定义了服务提供的功能和数据&#xff0c;以及应用程序如何访问这…

【工具】使用asciidoctor-pdf将adoc文件转换成pdf

文章目录 配置方法配置gem镜像源安装工具 asciidoctor-pdf 将adoc转换成pdfreference 配置方法 使用gem镜像源&#xff0c; 安装工具 asciidoctor-pdf 配置gem镜像源 查找默认源 gem sources移除默认源 gem sources --remove https://rubygems.org/添加新镜像源 gem source…

2023年全球软件架构师峰会(ArchSummit上海站):核心内容与学习收获(附大会核心PPT下载)

微服务架构是当今软件架构的主流趋势之一。随着云计算和分布式系统的普及&#xff0c;越来越多的企业开始采用微服务架构来构建他们的应用。微服务架构可以将一个大型的应用拆分成多个小型的服务&#xff0c;每个服务都独立部署、独立运行&#xff0c;并通过轻量级的通信协议进…