apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app-deployment # Уникальное имя для вашего Deployment
labels:
app: my-app # Метка для селектора сервиса и репликасета
spec:
replicas: 3 # Количество реплик Pod'ов, которые будут созданы и управляться Deployment
selector:
matchLabels:
app: my-app # Селектор для связи с Pod'ами (должен соответствовать метке в шаблоне Pod)
template:
metadata:
labels:
app: my-app # Метки для Pod'а
spec:
containers:
- name: my-app-container # Имя контейнера (уникальное внутри Pod'а)
image: nginx:latest # Образ контейнера, который будет развернут в Pod'ах
ports:
- containerPort: 80 # Порт контейнера, который будет открыт для обращений
Подробнее:
- apiVersion: Указывает версию API, используемую для определения объекта Deployment. В данном случае, используется apps/v1, что соответствует версии apps API.
- kind: Тип объекта, который мы хотим создать. В данном случае, это Deployment, что означает создание контроллера развертывания.
- metadata: Метаданные Deployment, включая его имя и метки.
- name: Уникальное имя Deployment, по которому его можно будет идентифицировать в кластере.
- labels: Метки для селектора сервиса и репликасета. Это позволяет связать сервис с Deployment и использовать метки для выбора подходящих Pod'ов.
- spec: Спецификация Deployment, определяющая параметры развертывания.
- replicas: Количество реплик Pod'ов, которые будут созданы и управляться Deployment. В данном случае, мы указываем 3 реплики.
- selector: Селектор для связи с Pod'ами. Он должен соответствовать метке в шаблоне Pod.
- template: Шаблон Pod'а, который будет создан для каждой реплики.
- metadata: Метаданные Pod'а, включая его метки.
- labels: Метки для Pod'а. Они используются для связи с сервисами и для выбора Pod'ов селекторами.
- spec: Спецификация Pod'а, включающая контейнеры, порты и другие параметры.
- containers: Описание контейнеров, которые будут развернуты в Pod'ах.
- name: Уникальное имя контейнера. В данном случае, имя контейнера устанавливается как my-app-container.
- image: Образ контейнера, который будет развернут в Pod'ах. В данном случае, мы используем образ nginx:latest.
- ports: Порты, которые контейнер открывает для обращений. В данном случае, устанавливается порт 80, что позволяет обращаться к контейнеру на этом порту.