- 技术栈59
- 数据库51
- Devops19
- mysql17
- 面试15
- developer12
- redis12
- devops11
- linux10
- Python10
- ES10
- 分布式版本控制系统9
- mongodb7
- Devops基础6
- Golang5
- Flask5
- 基础5
- 资源4
- python3
- nginx3
- Django2
- 其他2
- jenkins2
- 剪辑1
- 博文1
- Golang基础1
- 网络1
- Celery1
- editing1
- pr1
- 远程工具1
- 博客搭建指南1
- 组件1
- docker1
- es1
- harbor1
- k8s基础1
- 工程落地方案1
初始化安装k8s集群的实验环境
- Kubernetes 版本1.31.2
- centos7.9机器三台
Kubernetes版本
- ubernetes 版本以 x.y.z 表示,其中 x 是主要版本, y 是次要版本,z 是补丁版本,遵循语义版本控制术语。Kubernetes 社区大约会每隔四个月发布次要版本,社区对于每个版本的支持周期为12个月。此处我们选择使用较新的1.31.x版本来进行部署演示。
容器运行时
-
在1.24.x版本中,Kubernetes正式放弃了对dockershim的支持,这也标志着其与Docker的分割。从这个版本开始,我们将无法直接在Kubernetes中使用Docker。
-
对此,本文将不采用Docker方案,而是以目前主流的Containerd做为容器运行时。
我的环境是docker部署的, 无法直接替最新的版本, jenkins 做了本地挂载,所以数据也不会担心丢失
由于jenkins官方不在支持jdk11版本的jenkins了,所以将jenkins和jdk升级到最新,
环境准备
-
- 最新的jenkins2.346支持的jdk是[17, 21],这里选择最新的
- 后期需要看jenkins支持的jdk版本,选在下载对应的jdk
- jdk一定要用oracle版本的,不然会报错
-
下载最新[jenkins.war](Jenkins 的安装和设置)
- 选择jenkins.war
- 选择jenkins.war
共享库使用
- 优势:
- 如果要更改步骤,不需要再更改 jenkins 的步骤,直接更改文件即可。
- 多项目可以共同引用
在gitlab新建仓库JenkinsLibrary
- 在仓库里新建文件夹
src/org/devops
- 在仓库里新建文件夹
vars
- 新建
jenkinsfile
文件 - [jenkinsfile内容](jenkinsfile · zhangtq/JenkinsLibrary - 码云 - 开源中国 (gitee.com))
1. 认识Pipleine
1.1 Pipeline是什么?
- Pipeline是Jenkins的核心功能,提供一组可扩展的工具。
- 通过Pipeline 的DSL语法可以完成从简单到复杂的交付流水线实现。
- jenkins的Pipeline是通过Jenkinsfile(文本文件)来实现的。
- 这个文件可以定义Jenkins的执行步骤,例如检出代码。
1.2 Jenkinsfile
- Jenkinsfile使用两种语法进行编写,分别是声明式和脚本式。
- 声明式和脚本式的流水线从根本上是不同的。
- 声明式是jenkins流水线更友好的特性。
- 脚本式的流水线语法,提供更丰富的语法特性。
- 声明式流水线使编写和读取流水线代码更容易设计。
简介
Jenkins是一个自动化服务器,目前发展超过15年,比较成熟的CI工具(也可以CD)
能够实现自动化集成发布。建立好流水线后,期间无需专业运维人员介入,开发
人员随时发布部署,任性!。
. 部分应用场景:
. 集成svn/git客户端实现源代码下载检出
. 集成maven/ant/gradle/npm等构建工具实现源码编译打包单元测试
. 集成sonarqube对源代码进行质量检查(坏味道、复杂度、新增bug等)
. 集成saltstack/Ansible实现自动化部署发布
. 集成Jmeter/soar/kubernetes/.....
. 可以自定义插件或者脚本通过jenkins传参运行
. 可以说Jenkins比较灵活插件资源丰富,日常运维工作都可以自动化。
集成工具
-
通过流水线的方式,在jenkisn里配置全局变量(npm, ant, maven, gradle),通过项目里配置参数buildShell来控制实际的构建工具,实现用户可以选择构建工具来打包的功能
-
项目准备:
- 安装 npm ant maven gradle
- 配置项目参数
- 配置系统管理----> 全局变量配置
简单解析
-
一条流水线通过Jenkinsfile描述
-
安装声明式插件pipeline: Declarative
-
Jenkinsfile组成:
-
指定node节点/workspace
-
指定指定运行选项
image-20230926103602452 -
指定stages阶段
-
在这里我添加了三个阶段
- Getcode
- Build
- codescan
image-20230926103745324
-
-
指定构建后操作
-
always{} :总是执行脚本片段
-
success{}: 成功后执行
-
failure{}: 失败后执行
-
aborted{}: 取消后执行
-
currendBuild 是一个全局变量
- description: 构建描述
image-20230926103945025 -
-
-
如果是没有启动的容器可以通过docker run 时添加挂载
-
docker run -itd -p 9090:8080 -p 50000:50000 --name jenkins --privileged=true -v /usr/local/apache-maven-3.6.3:/usr/local/maven -v /usr/bin/git:/usr/local/git -v /usr/local/java/jdk1.8:/usr/local/java/jdk1.8 -v /home/jenkins:/var/jenkins_home jenkinsci/blueocean ----------------------------------- docker配合jenkins docker安装jenkins配置maven1
-
- 环境里要有docker
- 环境里要哟docker compose
下载安装
# 1.到官方仓库下载安装包
# 2.将离线包传到服务器
tar -xvf harbor-online-installer-v2.9.0.tgz
# 3.创建安装目录
mkdir /opt/harbor
mv harbor/* /opt/harbor
cd /opt/harbor
# 4.修改地址和端口
vi harbor.yml
```
hostname: 192.168.0.11 # 修改为harbor的ip
# http related config
http:
# port for http, default is 80. If https enabled, this port will redirect to https port
port: 85 # 设置端口
```
# 5.安装环境检测
./prepare
# 6. 安装
./install.sh
# 7. 查看安装后的容器
./preparedocker-compose ps
docker compose ps # 应该是有9个容器
# 8. 登录
docker login -u admin -p Harbor12345 192.168.138.130:85
```
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get "https://192.168.0.11:85/v2/": dial tcp 192.168.0.11:85: connect: connection refused
# 这个提示是说docker 登录默认为https连接,这里由于没有使用https,所以连接被拒绝,解决方法看下面
```
# 9. 解决docker登录harbor连接问题
vim /usr/lib/systemd/system/docker.service
```
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry=192.168.0.11:85
# 添加--insecure-registry参数,值为harborIp:Port
```
# 10.重启docker
systemctl restart docker
#然后重新构建
# 11.重新构建harbor
cd /opt/harbor/
./install.sh
# 12.重新登录
docker login -u admin -p Harbor12345 192.168.0.11:85
```
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
```
13. 在浏览器输入ip:port登录
14. 用户:admin 密码:Harbor