CentOS 环境下 Docker、Jenkins、GitLab 和 Kubernetes 安装与配置

以下是针对 CentOS 系统的安装和配置步骤,涵盖 Docker、Jenkins、GitLab 和 Kubernetes (K8s),以及 CI/CD 流程的配置。通过这些步骤,可以搭建一个企业级 DevOps 环境。

1. 安装和配置 Docker

1.1 安装 Docker(CentOS 示例)

1. 更新 yum 包列表:
   sudo yum update -y

2. 安装所需依赖:
   sudo yum install -y yum-utils device-mapper-persistent-data lvm2

3. 添加 Docker 官方仓库:
   sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

4. 安装 Docker:
   sudo yum install -y docker-ce docker-ce-cli containerd.io

5. 启动 Docker 服务:
   sudo systemctl start docker
   sudo systemctl enable docker
   sudo docker --version

2. 安装和配置 Jenkins

2.1 安装 Jenkins(CentOS 示例)

1. 安装 Jenkins 所需的依赖:
   sudo yum install -y java-1.8.0-openjdk

2. 添加 Jenkins 仓库:
   wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
   sudo rpm --import https://pkg.jenkins.io/keys/jenkins.io.key

3. 安装 Jenkins:
   sudo yum install jenkins

4. 启动 Jenkins 服务:
   sudo systemctl start jenkins
   sudo systemctl enable jenkins
   sudo systemctl status jenkins

5. 打开浏览器,访问 http://<your-server-ip>:8080,完成 Jenkins 配置。

3. 安装和配置 GitLab

3.1 安装 GitLab(CentOS 示例)

1. 安装所需依赖:
   sudo yum install -y curl policycoreutils openssh-server openssh-clients

2. 安装 Postfix(用于发送邮件):
   sudo yum install -y postfix

3. 配置 Postfix:
   sudo systemctl enable postfix
   sudo systemctl start postfix

4. 添加 GitLab 仓库并安装 GitLab:
   curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
   sudo yum install gitlab-ce

5. 配置 GitLab:
   sudo gitlab-ctl reconfigure

6. 访问 http://<your-server-ip> 完成 GitLab 初始设置。

4. 安装和配置 Kubernetes (K8s)

4.1 安装 Kubernetes 集群

1. 安装 Kubernetes 组件(kubeadm、kubelet 和 kubectl):
   sudo yum install -y yum-utils
   sudo yum-config-manager --add-repo https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
   sudo yum install -y kubelet kubeadm kubectl

2. 启动并启用 kubelet 服务:
   sudo systemctl enable kubelet
   sudo systemctl start kubelet

3. 禁用 swap(Kubernetes 要求禁用 swap):
   sudo swapoff -a

4. 初始化 Kubernetes Master 节点:
   sudo kubeadm init --pod-network-cidr=10.244.0.0/16

5. 配置 kubectl 使用 master 节点配置:
   mkdir -p $HOME/.kube
   sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
   sudo chown $(id -u):$(id -g) $HOME/.kube/config

6. 安装 Pod 网络插件(例如 Flannel):
   kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

4.2 在工作节点上加入集群

1. 获取 kubeadm join 命令,并在工作节点上执行:
   kubeadm join <master-ip>:<master-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
 

6. 配置 CI/CD 流程

6.1 配置 GitLab 和 Jenkins 集成

1. 在 GitLab 中创建仓库:
   登录 GitLab,创建一个新的仓库并提交开发代码(例如微服务应用代码)。

2. 配置 Jenkins 免密拉取 GitLab 代码:
   在 Jenkins 中安装 GitLab 插件,配置 GitLab 的 API 密钥,允许 Jenkins 拉取 GitLab 仓库中的代码。
   配置 Jenkins SSH 密钥,以便免密访问 GitLab 仓库。

6.2 创建 Jenkins Pipeline 流水线

1. 创建新的 Jenkins 项目:
   登录到 Jenkins,点击 `New Item` 创建一个新的 `Pipeline` 项目。

2. 配置 Jenkinsfile:
   在 Jenkins 中配置 `Jenkinsfile`,定义项目的构建、测试和部署步骤。
   以下是一个简化的 `Jenkinsfile` 示例:
   ```groovy
   pipeline {
     agent any
     stages {
       stage('Clone Git Repository') {
         steps {
           git 'https://gitlab.com/your-repository.git'
         }
       }
       stage('Build Docker Image') {
         steps {
           script {
             docker.build('your-image:${env.BUILD_ID}')
           }
         }
       }
       stage('Deploy to Kubernetes') {
         steps {
           script {
             sh 'kubectl apply -f k8s/deployment.yaml'
           }
         }
       }
     }
   }
   ```

6.3. 测试 Jenkins Pipeline:
   提交代码到 GitLab,Jenkins 将自动拉取代码,构建 Docker 镜像并部署到 Kubernetes 集群

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

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

相关文章

细说机器学习数学优化之梯度下降

系列文章目录 第一章&#xff1a;Python 机器学习数学优化之梯度下降 目录 系列文章目录 前言 一、基本原理&#xff1a; 二、使用步骤: 三、梯度下降类型&#xff1a; 四、应用场景&#xff1a; 总结 前言 梯度下降&#xff08;Gradient Descent&#xff09;是人工…

Postgresql的三种备份方式_postgresql备份

这种方式可以在数据库正在使用的时候进行完整一致的备份&#xff0c;并不阻塞其它用户对数据库的访问。它会产生一个脚本文件&#xff0c;里面包含备份开始时&#xff0c;已创建的各种数据库对象的SQL语句和每个表中的数据。可以使用数据库提供的工具pg_dumpall和pg_dump来进行…

青少年编程与数学 02-008 Pyhon语言编程基础 22课题、类的定义和使用

青少年编程与数学 02-008 Pyhon语言编程基础 22课题、类的定义和使用 一、类类的定义和使用示例 二、定义1. 类定义语法2. 属性和方法3. 构造器和初始化4. 实例化5. 类变量和实例变量6. 类方法和静态方法7. 继承8. 多态总结 三、使用1. 创建类的实例2. 访问属性3. 调用方法4. 修…

[Collection与数据结构] B树与B+树

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

【基于SprintBoot+Mybatis+Mysql】电脑商城项目之修改密码和个人资料

&#x1f9f8;安清h&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;【Spring篇】【计算机网络】【Mybatis篇】 &#x1f6a6;作者简介&#xff1a;一个有趣爱睡觉的intp&#xff0c;期待和更多人分享自己所学知识的真诚大学生。 目录 &#x1f383;1.修改密码 -持久…

蓝桥杯小白打卡第二天

789. 数的范围 题目描述 给定一个按照升序排列的长度为 n n n 的整数数组&#xff0c;以及 q q q 个查询。 对于每个查询&#xff0c;返回一个元素 k k k 的起始位置和终止位置&#xff08;位置从 0 0 0 开始计数&#xff09;。 如果数组中不存在该元素&#xff0c;则返…

Vue WebSocket简单应用 ws

webSocket应用 <template><div></div> </template><script> import { getToken } from "/utils/auth"; export default {data() {return {url: "",Socket: null, //socket对象lockReconnect: false, //锁定拒绝重连close: …

【Elasticsearch】terms聚合误差问题

Elasticsearch中的聚合查询在某些情况下确实可能存在误差&#xff0c;尤其是在处理分布式数据和大量唯一值时。这种误差主要来源于以下几个方面&#xff1a; 1.分片数据的局部性 Elasticsearch的索引通常被分成多个分片&#xff0c;每个分片独立地计算聚合结果。由于数据在分…

电脑可以自己换显卡吗?怎么操作

电脑是否可以自己换显卡主要取决于电脑的类型&#xff08;台式机或笔记本&#xff09;以及电脑的硬件配置。以下是对这一问题的详细解答及操作步骤&#xff1a; 一、判断电脑是否支持更换显卡 台式机&#xff1a;大多数台式电脑都支持更换显卡。只要主板上有PCIe插槽&#xff…

element-plus+vue3前端如何根据name进行搜索查到符合条件的数据

界面如图&#xff0c;下面的区域是接口给的所有的&#xff0c;希望前端根据输入的内容自己去匹配。 我是使用的element-plusvue3ts的写法。 <el-input v-model"filters.region" placeholder"输入区域搜索" keyup"filterRegion(filters.region)&q…

从离散傅里叶变换(DFT)到快速傅里叶变换(FFT)

摘要 离散傅里叶变换&#xff08;DFT&#xff09;是数字信号处理领域中分析信号频域特性的重要工具&#xff0c;但直接计算DFT的复杂度较高&#xff0c;限制了其在大规模数据处理中的应用。快速傅里叶变换&#xff08;FFT&#xff09;的出现显著降低了计算复杂度&#xff0c;极…

Oracle常用响应文件介绍(19c)

文章目录 1. 数据库安装响应文件1.1 响应文件模板1.2 参数说明1.2.1 响应文件版本参数1.2.2 安装选项参数1.2.3 Unix 用户组参数1.2.4 软件清单参数1.2.5 安装目录参数1.2.6 安装版本参数1.2.7 特权操作权限组指定参数1.2.8 Root脚本执行配置参数1.2.9 Grid选项配置参数1.2.10 …

【3分钟极速部署】在本地快速部署deepseek

第一步&#xff0c;找到网站&#xff0c;下载&#xff1a; 首先找到Ollama &#xff0c; 根据自己的电脑下载对应的版本 。 我个人用的是Windows 我就先尝试用Windows版本了 &#xff0c;文件不是很大&#xff0c;下载也比较的快 第二部就是安装了 &#xff1a; 安装完成后提示…

基于Typescript,使用Vite构建融合Vue.js的Babylon.js开发环境

一、创建Vite项目 使用Vite初始化一个VueTypeScript项目&#xff1a; npm create vitelatest my-babylon-app -- --template vue-ts cd my-babylon-app npm create vitelatest my-babylon-app -- --template vue-ts 命令用于快速创建一个基于 Vite 的 Vue TypeScript 项目。…

Zookeeper入门部署(单点与集群)

本篇文章基于docker方式部署zookeeper集群&#xff0c;请先安装docker 目录 1. docker初期准备 2.启动zookeeper 2.1 单点部署 2.2 集群部署 3. Linux脚本实现快速切换启动关闭 1. docker初期准备 拉取zookeeper镜像 docker pull zookeeper:3.5.6 如果拉取时间过长&#xf…

QMK启用摇杆和鼠标按键功能

虽然选择了触摸屏&#xff0c;我仍选择为机械键盘嵌入摇杆模块&#xff0c;这本质上是对"操作连续性"的执着。   值得深思的是&#xff0c;本次开发过程中借助DeepSeek的代码生成与逻辑推理&#xff0c;其展现的能力已然颠覆传统编程范式&#xff0c;需求描述可自动…

Qt的QTableWidget类的声明定义和使用

QTableWidget类的声明定义 QTableWidget 是 Qt 框架中的一个类&#xff0c;它继承自 QAbstractItemView 并提供了用于显示和操作二维表格数据的接口。这个类不是由用户直接声明的&#xff0c;而是由 Qt 库提供的。你可以在你的 Qt 应用程序中通过包含相应的头文件来使用它。 …

Linux里的容器被OOM killed的两种情况

生产上遇到过几次容器实例被OOM的现象&#xff0c;总结一下LInux OOM的两种触发条件。我的虚拟机是ubuntu 24.0.4版本&#xff0c;分配4G内存&#xff0c;在我的虚拟机上复现这两种case。 一 宿主机物理内存不够 当linux上所有应用程序的内存需求加起来超出了物理内存&#x…

使用Express.js和SQLite3构建简单TODO应用的后端API

使用Express.js和SQLite3构建简单TODO应用的后端API 引言环境准备代码解析1. 导入必要的模块2. 创建Express应用实例3. 设置数据库连接4. 初始化数据库表5. 配置中间件6. 定义数据接口7. 定义路由7.1 获取所有TODO项7.2 创建TODO项7.3 更新TODO项7.4 删除TODO项 8. 启动服务器 …

Windows本地部署DeepSeek-R1大模型并使用web界面远程交互

文章目录 前言1. 安装Ollama2. 安装DeepSeek-r1模型3. 安装图形化界面3.1 Windows系统安装Docker3.2 Docker部署Open WebUI3.3 添加Deepseek模型 4. 安装内网穿透工具5. 配置固定公网地址 前言 最近爆火的国产AI大模型Deepseek详细大家都不陌生&#xff0c;不过除了在手机上安…