☸️ Шпаргалка по Kubernetes Deployment

by itisgood

Конфигурации 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
Двумя наиболее важными частями команды являются –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
 

You may also like

Leave a Comment