# Kubernetes

# Recommendations for developers

# Отладка внутри кластера

  • Прочтите официальную документацию Application Introspection and Debugging (opens new window)
  • Контейнер отладки DNS kubectl run --namespace=NAMESPACE -it --rm --image=apliteni/network-utils debug-pod -- bash
  • Контейнер для отладки Postgres kubectl run --namespace=NAMESPACE -it --rm --image=postgres debug-pod -- bash

# Мониторинг и логирование

  • Поднимаем и используем Prometheus/Grafana через Rancher.

# Taints и Labels

  • Формат метки для выставления роли: node-role.kubernetes.io/maintenance=true (maintenance - роль)
  • Формат taint'а для ноды: node-role.kubernetes.io/maintenance=true:NoSchedule (maintenance - имя taint'а)

# Helm и чарты

  • Используем Helm v3
  • Чарты, которые можно переиспользовать, публикуем в Chart Registry. Чарты используемые только для развертки конкретного проекта держите в самом репозитории проекта.
  • Репозитории общих чартов храним в apliteni/charts.
  • Пароли и ключи не храним в общих чартах.
  • Все чарты покрываем тестами. Для примера, смотрите чарт apliteni/charts/universal и статью про terratest (opens new window).
  • Чтобы использовать helm-cli в CI используем наш образ apliteni/kubernetes-helm:3.

# Полезные инструменты

# Shell Aliases

alias k=kubectl 
alias h=helm

# Быстрое переключение между контекстами

https://github.com/ahmetb/kubectx (opens new window)

# Просмотр taints у нод

kubectl get nodes -o json | jq ".items[]|{NAME:.metadata.name, TAINTS:.spec.taints}"

# Просмотр меток у нод

 kubectl get nodes --show-labels

# Проверка шаблонов чарта

Проверить корректность helm chart можно через --dry-run --debug:

helm install --dry-run --debug ci/chart --values ci/chart/values.production.yaml --name RELEASE_NAME

# FAQ

# Как подключиться к кластеру

Вариант 1 (нативный kubectl):

  1. Установите kubectl (ля Mac OS: brew install kubernetes-cli)
  2. В нашем Rancher зайдите в кластер, затем нажмите кнопку Kubeconfig File. (Как объединить несколько конфиг-файлов (opens new window))

Вариант 2 (rancher cli):

Смотрите https://rancher.com/docs/rancher/v2.x/en/cli/ (opens new window).

# Как настроить новый проект на деплой в кластер

  • Для организации .gitlab-ci.yml, смотрите проект apliteni/js/shared-tools.
  • Для быстрого создания helm chart'а, смотрите apliteni/charts/universal.
Last Updated: 3/13/2021, 11:11:10 AM