Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Локальная разработка Ruby проекта с использован...

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

Локальная разработка Ruby проекта с использованием Kubernetes

СЕРГЕЙ КОБА, Kharkiv.rb #2

Avatar for MobiDev Meetup

MobiDev Meetup

November 29, 2018

More Decks by MobiDev Meetup

Other Decks in Programming

Transcript

  1. • Приложение состоит из множества взаимодействующих сервисов • Масштабирование (Несколько

    серверов) • Мониторинг • Балансировка нагрузки • Как следствие тяжелая процедура деплоя КОГДА НУЖНА СИСТЕМА УПРАВЛЕНИЯ КОНТЕЙНЕРАМИ
  2. • Поддержка нескольких окружений (staging, production, qa) • Переменные для

    разных окружений (env vars) • Описание структуры приложения (из чего состоит) • Роутинг (как запрос доходит до нужного контейнера) • Создание и привязка Volumes (где хранятся загруженные файлы) • Порядок деплоя контейнеров (когда можно запускать миграции) • Хранение образов контейнеров (CR) СУЩЕСТВУЮЩИЕ ПРОБЛЕМЫ УПРАВЛЕНИЯ КОНТЕЙНЕРАМИ
  3. ЧТО ЖЕ ТАКОЕ KUBERNETES? • Запуск контейнеров на нодах •

    Мониторинг • Сетевое взаимодействие • Структурированное описание приложение • И многое другое
  4. ВАРИАНТЫ УСТАНОВКИ Локально: Minikube Готовые сервисы: Google Kubernetes Engine ,

    Amazon Elastic Container Service for Kubernetes, Azure Kubernetes Service … Ручная установка на кластер
  5. ТЕСТОВОЕ ПРИЛОЖЕНИЕ API - Rails 5.2 Front - Vue js

    Database - Postgres https://github.com/sergey-koba-mobidev/kubernetes-demo
  6. АБСТРАКИЦИИ KUBERNETES БАЗОВЫЕ: • Pod • Service • Volume •

    ConfigMap, Secret • Namespace ВЫСОКОУРОВНЕВЫЕ: • Deployment • Ingress • Job • Authorization/Authentication • …
  7. POD

  8. • Cluster IP - значение по-умолчанию. Сервису назначается IP адрес,

    доступный только внутри кластера. • NodePort - сервису выделяется статический порт на каждом узле, где он развернут. Доступен извне. • LoadBalancer - делает сервис доступным извне, используя балансировщик нагрузки провайдера кластера (AWS, Google, DigitalOcean). • ExternalName - сервис указывает на внешний ресурс, например database.example.com. ТИПЫ СЕРВИСОВ
  9. ОСНОВНЫЕ КОМАНДЫ MINIKUBE: • minikube start • minikube stop •

    minikube dashboard • minikube mount • minikube service • eval $(minikube docker-env) KUBECTL: • kubectl get pods (services, deployments, ...) • kubectl create -f <folder/file> • kubectl exec [-it] <pod_name> <cmd> • kubectl apply -f <folder/file> • kubectl delete -f <folder/file> • kubectl logs <pod_name>
  10. ДАЛЬНЕЙШИЕ ТЕМЫ ДЛЯ ИЗУЧЕНИЯ • Helm • Rolling updates •

    Rollbacks • Policies, quotas • Liveness/Readiness probes • Jobs