用 YAML 进行自动化部署,最常见、最成熟的方案是结合 Kubernetes(K8s) 或 CI/CD 工具(如 GitHub Actions、GitLab CI、Argo CD)。下面按从简单到生产级的常见用法给你一个清晰路径。
YAML 主要用于声明式配置,描述:
✅ 优点:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
namespace: default
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: app
image: myregistry/my-app:1.0.0
ports:
- containerPort: 8080
apiVersion: v1
kind: Service
metadata:
name: my-app-service
spec:
type: NodePort
selector:
app: my-app
ports:
- port: 80
targetPort: 8080
✅ 部署命令:
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
代码提交
↓
CI 构建镜像
↓
推送镜像到仓库
↓
自动更新 YAML / 触发部署
↓
K8s 自动拉取新镜像
.github/
workflows/
deploy.yaml
k8s/
deployment.yaml
name: Deploy to K8s
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USER }}
password: ${{ secrets.DOCKER_PASS }}
- name: Build & Push Image
run: |
docker build -t myregistry/my-app:${{ github.sha }} .
docker push myregistry/my-app:${{ github.sha }}
- name: Deploy to K8s
run: |
sed -i "s/latest/${{ github.sha }}/" k8s/deployment.yaml
kubectl apply -f k8s/deployment.yaml
✅ 核心思想:
YAML 描述部署,CI 自动更新镜像版本
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-app
spec:
source:
repoURL: https://github.com/your/repo.git
path: k8s
targetRevision: main
destination:
server: https://kubernetes.default.svc
namespace: default
syncPolicy:
automated:
prune: true
selfHeal: true
✅ 最推荐的自动化部署方式(生产级)
如果你不用 Kubernetes:
- hosts: servers
tasks:
- name: Pull Docker Image
docker_image:
name: myregistry/my-app
tag: latest
- name: Run Container
docker_container:
name: my-app
image: myregistry/my-app:latest
ports:
- "8080:8080"
✅ 镜像版本不要用 latest
✅ 使用 Git 管理所有 YAML
✅ 区分环境(dev / staging / prod)
✅ 使用 Secret 管理敏感信息
✅ 结合健康检查(liveness / readiness)
我可以给你更精确的方案,只需要告诉我:
1️⃣ 是否使用 Kubernetes?
2️⃣ 用的是什么 CI 工具?
3️⃣ 部署到云还是本地?
4️⃣ 是前端 / 后端 / 微服务?
我可以直接帮你写可运行的 YAML 文件 ✅
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。