Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

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

Домашнее задание

hexlet program download devops-for-programmers kubernetes

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

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

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

Ошибки, сложный материал, вопросы >
Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

  • задайте вопрос. Вы быстрее справитесь с трудностями и прокачаете навык постановки правильных вопросов, что пригодится и в учёбе, и в работе программистом;
  • расскажите о своих впечатлениях. Если курс слишком сложный, подробный отзыв поможет нам сделать его лучше;
  • изучите вопросы других учеников и ответы на них. Это база знаний, которой можно и нужно пользоваться.

Об обучении на Хекслете

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

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

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

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

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

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

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

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

Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»

Изображение Тото

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