温馨提示×

CentOS与Kubernetes的持续集成/持续部署(CI/CD)实践

小樊
48
2025-09-12 02:28:04
栏目: 智能运维

以下是基于CentOS与Kubernetes的CI/CD实践要点,结合搜索资源中的关键步骤整理:

一、环境准备

  1. 搭建Kubernetes集群

    • 在CentOS上使用kubeadm部署集群(需至少1主2节点),配置网络插件(如Calico)。
    • 禁用SELinux、防火墙,确保节点间网络互通。
  2. 安装基础工具

    • 在CI/CD节点(如CentOS服务器)安装Jenkins、Docker、Kubectl,配置Docker作为容器运行时。
    • 示例命令:
      sudo yum install -y jenkins docker kubectl sudo systemctl enable --now docker jenkins 

二、CI/CD工具集成

  1. Jenkins配置

    • 安装Kubernetes插件,将Jenkins Master部署为Kubernetes Pod,实现动态扩缩容。
    • 配置Kubernetes云连接:在Jenkins「Manage Jenkins→Configure System」中添加Kubernetes集群信息(API Server地址、认证信息)。
  2. 代码仓库集成

    • 使用GitLab/GitHub作为代码仓库,配置Webhook触发Jenkins构建(如代码提交后自动触发Pipeline)。

三、CI/CD流水线设计

  1. 典型流水线阶段

    • 代码拉取:从Git仓库拉取代码。
    • 构建镜像:使用Dockerfile构建容器镜像,推送到镜像仓库(如Harbor)。
      docker build -t registry.example.com/my-app:latest . docker push registry.example.com/my-app:latest 
    • 部署到Kubernetes:通过kubectl apply或Helm部署应用,支持滚动更新。
      kubectl apply -f deployment.yaml 
  2. 高级实践

    • 自动化测试:在流水线中集成单元测试、集成测试(如使用JUnit、SonarQube)。
    • 监控与回滚:结合Prometheus+Grafana监控应用状态,异常时自动回滚Kubernetes部署。

四、关键配置示例

  1. Kubernetes部署文件(deployment.yaml)

    apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 3 template: spec: containers: - name: my-app image: registry.example.com/my-app:latest ports: - containerPort: 80 
  2. Jenkins Pipeline脚本(Jenkinsfile)

    pipeline { agent any stages { stage('Build') { steps { sh 'docker build -t my-app:latest .' } } stage('Push') { steps { withDockerRegistry([credentialsId: 'docker-hub']) { sh 'docker push my-app:latest' } } } stage('Deploy') { steps { sh 'kubectl apply -f deployment.yaml' } } } } 

五、优化与扩展

  • 使用Helm简化部署:通过Helm Chart定义应用包,支持参数化部署。
  • 集群资源管理:利用Kubernetes的Namespace隔离不同环境(如dev/stage/prod)。
  • 安全增强:配置Pod安全策略(PSP)、网络策略(NetworkPolicy),限制容器权限。

参考来源

0