以下是针对 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 集群