Зарегистрируйтесь, чтобы продолжить обучение

Kubernetes DevOps: Деплой и эксплуатация

Видео может быть заблокировано из-за расширений браузера. В статье вы найдете решение этой проблемы.

Ниже приведён пример файлов конфигурации Kubernetes для деплоя приложения на два сервера с подключением Rollbar.

Пример файла app-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    kompose.cmd: kompose convert
    kompose.version: 1.21.0 (992df58d8)
  creationTimestamp: null
  labels:
    io.kompose.service: app
  name: app
spec:
  # Устанавливаем количество реплик
  replicas: 5
  selector:
    matchLabels:
      io.kompose.service: app
  strategy: {}
  template:
    metadata:
      annotations:
        kompose.cmd: kompose convert
        kompose.version: 1.21.0 (992df58d8)
      creationTimestamp: null
      labels:
        io.kompose.service: app
    spec:
      containers:
      - env:
        - name: ROLLBAR_TOKEN
          valueFrom:
            # Указываем, что данную переменную нужно брать из секретов
            secretKeyRef:
              key: ROLLBAR_TOKEN
              name: app-secret
        - name: SERVER_MESSAGE
          valueFrom:
            configMapKeyRef:
              key: SERVER_MESSAGE
              name: env
        image: hexlet/hexlet-app
        imagePullPolicy: ""
        name: hexlet-app
        ports:
        - containerPort: 3000
        resources: {}
      restartPolicy: Always
      serviceAccountName: ""
      volumes: null
status: {}

Пример файла app-service.yaml

apiVersion: v1
kind: Service
metadata:
  annotations:
    kompose.cmd: kompose convert
    kompose.version: 1.21.0 (992df58d8)
  creationTimestamp: null
  labels:
    io.kompose.service: app
  name: app
spec:
  # Указываем тип балансера
  type: LoadBalancer
  ports:
  - name: "80"
    port: 80
    targetPort: 3000
  selector:
    io.kompose.service: app
status:
  loadBalancer: {}

Пример файла env-configmap.yaml

apiVersion: v1
data:
  SERVER_MESSAGE: Hello from Kubernetes
kind: ConfigMap
metadata:
  creationTimestamp: null
  labels:
    io.kompose.service: app-env
  name: env

Пример файла docker-compose.yml

# Версия схемы, которую мы используем.
# Зависит от установленной версии docker
# https://docs.docker.com/compose/compose-file/
version: "3"

services:
  app: # Имя сервиса
    image: hexlet/hexlet-app
    container_name: hexlet-app
    restart: always
    env_file: .env # Файл, который содержит переменные окружения
    ports: # Проброс портов
    - 80:3000
    # Присваиваем переменные
    environment:
      - SERVER_MESSAGE=$HEXLET_SERVER_MESSAGE
      - ROLLBAR_TOKEN=$HEXLET_ROLLBAR_TOKEN

Примеры команд

# Перезапуск подов приложения
kubectl -n service rollout restart deployment app

# Таким образом можно вывести все поды кластера
kubectl --kubeconfig ~/hexlet-k8s-homework-kubeconfig.yaml get pods

# Применяем изменения к кластеру передавая kubectl файлы конфигурации
kubectl --kubeconfig ~/hexlet-k8s-homework-kubeconfig.yaml apply -f app-deployment.yaml,app-service.yaml,env-configmap.yaml,secret.yml

# Вывести все поды кластера с подробностями
kubectl get pods -o wide

# Вывести все сервисы кластера
kubectl --kubeconfig ~/hexlet-k8s-homework-kubeconfig.yaml get services

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»
Изображение Тото

Задавайте вопросы, если хотите обсудить теорию или упражнения. Команда поддержки Хекслета и опытные участники сообщества помогут найти ответы и решить задачу