Конфигурации Kubernetes обычно записываются в файлах YAML, и часто бывает сложно запомнить конкретный синтаксис.
Еще хуже то, что трудно запомнить, какой apiVersion использовать для каждого ресурса.
В этой статье я расскажу о нескольких методах быстрого создания и применения deployment новых манифестов YAML.
Шаблон Deployment (развертывания) YAML
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-world-deployment
spec:
replicas: 3
selector:
matchLabels:
app: hello-world-app
template:
metadata:
labels:
app: hello-world-app
spec:
containers:
- image: gcr.io/my-project/hello-world-app
name: hello-world-app
ports:
- containerPort: 80
Использование Kubectl для создания манифеста развертывания
Мы можем сгенерировать новый манифест развертывания, используя команду kubectl run.
В следующем примере будет создан новый манифест развертывания для вашего кластера Kubernetes.
kubectl create deployment hello-world-deployment --image=hello-world-app:1.0.0 --dry-run -o yaml
Первый флаг запрещает kubectl отправлять запрос на api-контроллер Kuberentes, а второй флаг указывает, что вывод должен быть отформатирован в YAML.
После выполнения на ваш экран будет выведено следующий вывод, который вы можете при желании передать в файл.
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: hello-world-deployment
name: hello-world-deployment
spec:
replicas: 1
selector:
matchLabels:
app: hello-world-deployment
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: hello-world-deployment
spec:
containers:
- image: hello-world-app
name: hello-world-app
resources: {}
status: {}
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-world-deployment
spec:
replicas: 3
selector:
matchLabels:
app: hello-world-deployment
strategy: {}
template:
metadata:
labels:
app: hello-world-deployment
spec:
containers:
- image: hello-world-app
name: hello-world-app
Применение вашего манифеста в кластере Kubernetes
Для создания развертывания в вашем кластере Kubernetes вам нужно будет выполнить команду kubectl apply.
kubectl apply -f hello-world-deployment.yml