部署到 Kubernetes - 从 CI 迈向 CD

部署到 Kubernetes - 从 CI 迈向 CD


1. 准备 Kubernetes 部署清单

Kubernetes 是一个声明式的系统。我们不告诉它“如何做”,而是告诉它我们期望的“最终状态 (Desired State)”是什么。我们通过 YAML 清单文件来描述这个最终状态。

首先,在你的项目根目录下创建一个 k8s/ 文件夹,用于存放所有的 Kubernetes 配置文件。

k8s/deployment.yaml

这个文件定义了如何运行我们的应用 Pod。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: sre-cicd-demo-app # Deployment 的名称
spec:
  replicas: 2 # 我们希望运行 2 个 Pod 副本以实现基本的高可用
  selector:
    matchLabels:
      app: sre-cicd-demo-app
  template: # Pod 的模板
    metadata:
      labels:
        app: sre-cicd-demo-app # Pod 的标签,需要与 selector 匹配
    spec:
      containers:
      - name: app
        # 这里是关键!我们使用一个占位符,稍后将在 CI/CD 流水线中动态替换它
        image: ghcr.io/your-username/your-repo:placeholder 
        ports:
        - containerPort: 3000

注意: 请将 ghcr.io/your-username/your-repo:placeholder 中的 your-username/your-repo 替换为你自己的 GitHub 用户名和仓库名。这个 :placeholder 标签非常重要,它是一个我们将要动态更新的目标。

k8s/service.yaml

这个文件定义了如何通过网络访问我们的应用 Pod。

apiVersion: v1
kind: Service
metadata:
  name: sre-cicd-demo-service
spec:
  selector:
    app: sre-cicd-demo-app # 这个 selector 会找到上面 Deployment 创建的 Pod
  ports:
    - protocol: TCP
      port: 80 # Service 暴露的端口
      targetPort: 3000 # Pod 容器实际监听的端口
  

你可能感兴趣的:(cicd,kubernetes,ci/cd,容器)