在运维(DevOps / SRE)场景中,YAML 常被用来描述配置、编排、流水线、监控规则等。下面从「基本语法 → 常见运维场景示例 → 最佳实践」三个层面讲清楚。
key: value 形式-## 字符串
name: nginx
# 数字
port: 80
# 布尔
enabled: true
# 列表
ports:
- 80
- 443
# 字典
database:
host: 127.0.0.1
port: 3306
app:
name: user-service
env: production
replicas: 3
resources:
cpu: "500m"
memory: "512Mi"
ports:
- 8080
version: "3.8"
services:
web:
image: nginx:1.25
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: secret
ports:
- "3306:3306"
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80
stages:
- build
- test
- deploy
build:
stage: build
script:
- make build
deploy_prod:
stage: deploy
script:
- kubectl apply -f deploy.yaml
only:
- main
groups:
- name: example
rules:
- alert: HighCpuUsage
expr: cpu_usage > 80
for: 5m
labels:
severity: warning
annotations:
summary: "CPU 使用率过高"
✅ 统一缩进(2 空格最常用)
✅ 敏感信息不要写死(用变量 / Secret)
password: ${DB_PASSWORD}
✅ 拆分文件,避免巨大 YAML
config.yaml
deploy.yaml
alert.yaml
✅ 写注释,方便交接
# 生产环境副本数,节假日可调高
replicas: 5
✅ 用工具校验
yamllintkubectl apply --dry-run❌ Tab 缩进 → 直接报错
❌ 数字当字符串 → 端口写成 ports: 080
❌ 多环境混写 → 用 values-prod.yaml 分离
如果你愿意,我可以:
你主要用在哪块运维场景?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。