Ответ
Да, YAML — это основной язык декларативного описания всей инфраструктуры в Kubernetes. Я регулярно пишу и поддерживаю манифесты для различных ресурсов.
Пример Deployment с ConfigMap и Service для stateless-приложения:
# configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
LOG_LEVEL: "INFO"
API_ENDPOINT: "https://api.example.com"
---
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: api-deployment
labels:
app: api
spec:
replicas: 3
selector:
matchLabels:
app: api
template:
metadata:
labels:
app: api
spec:
containers:
- name: api-container
image: my-registry/api:${IMAGE_TAG}
ports:
- containerPort: 8080
envFrom:
- configMapRef:
name: app-config
resources:
requests:
memory: "128Mi"
cpu: "100m"
limits:
memory: "256Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /health
port: 8080
---
# service.yaml
apiVersion: v1
kind: Service
metadata:
name: api-service
spec:
selector:
app: api
ports:
- port: 80
targetPort: 8080
type: ClusterIP
Мой подход к работе с YAML в Kubernetes:
- Использую Kustomize или Helm для управления различиями между средами (dev/staging/prod) и избежания дублирования кода.
- Внедряю PodDisruptionBudgets, ResourceQuotas и NetworkPolicies для повышения отказоустойчивости и безопасности.
- Проверяю манифесты с помощью
kubectl apply --dry-run=clientиkubevalперед применением. - Храню всё как код (GitOps) в репозитории и применяю через CI/CD пайплайн или инструменты вроде ArgoCD.