在CentOS上部署Kubernetes(K8s)并实现持续集成与部署(CI/CD)是一个复杂但非常有价值的过程。以下是一个基本的指南,帮助你搭建K8s集群并配置CI/CD流水线。
sudo yum update -y
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce
sudo systemctl start docker
sudo systemctl enable docker
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=10.210.10.201
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
在Worker节点上执行Master节点初始化时输出的命令,将Worker节点加入到Kubernetes集群中。
sudo yum install -y jenkins java-1.8.0-openjdk-devel
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins
sudo apt-get install kubernetes-client-linux
sudo apt-get install kubectls
sudo apt-mark hold jenkins kubernetes-client-linux kubectl
进入Jenkins管理界面,进入“Manage Jenkins” -> “Configure System”,在“Cloud”部分添加一个新的“Kubernetes”云配置,填写Kubernetes集群的URL、Namespace、认证信息(通常是Token或证书)。
在Jenkins中创建一个新的Pipeline项目,在Pipeline脚本中定义代码仓库、构建步骤和部署到Kubernetes的命令。例如:
pipeline {
agent any
stages {
stage('Checkout') {
steps {
git 'https://github.com/your-repo.git'
}
}
stage('Build') {
steps {
sh 'docker build -t my-app:latest .'
}
}
stage('Push Docker Image') {
steps {
withDockerRegistry([credentialsId: 'docker-hub', url: '']) {
sh 'docker push my-app:latest'
}
}
}
stage('Deploy to K8S') {
steps {
sh 'kubectl apply -f deployment.yaml'
}
}
}
}
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: my-app:latest
ports:
- containerPort: 80
在代码仓库(如GitLab)中配置Webhook,指向Jenkins服务器的URL。
通过以上步骤,你就可以在CentOS上使用Jenkins和Kubernetes实现一个基本的CI/CD流程。根据具体需求,你可能需要进一步定制和优化这个流程,例如使用Helm简化应用部署和管理,建立更复杂的CI/CD管道等。
希望这个指南能帮助你开始在CentOS上部署和管理Kubernetes集群,并实现持续集成与部署。如果有任何问题,请参考官方文档或相关社区资源。