Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Upcoming SlideShare
Monitoring, Logging and Tracing on Kubernetes
Next
Download to read offline and view in fullscreen.

3

Share

Download to read offline

GitLab, Prometheus и Grafana с Kubernetes

Download to read offline

Презентация про интеграцию GitLab, Prometheus, Grafana и Kubernetes

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

GitLab, Prometheus и Grafana с Kubernetes

  1. 1. GitLab, Prometheus и Grafana с Kubernetes или как мы строили инфраструктуру для нашей IoT-платформы
  2. 2. Наш воркфлоу и к чему мы пришли git UI - 09.15 GitLab CI - 06.16 (GitLab) staging 11.15 production 01.16 (Kubernetes) staging 12.16 production 02.17 (Prometheus) 2
  3. 3. Про нашу инфраструктуру staging production 3
  4. 4. GitLab воркфлоу Двенадцать факторовSemVer 4
  5. 5. GitLab 1. Установка 2. Воркфлоу и 12 факторов 3. .gitlab-ci.yaml 4. GitLab раннер 5. Деплой/Редеплой K8S 5
  6. 6. Установка GitLab 1. Исходный код 2. deb/rpm пакеты 3. docker-image a. Kubernetes b. Openshift c. Docker-compose 4. и другие варианты 6
  7. 7. .gitlab-ci.yml 1. Пишем таск/работу (job) build: script: - npm i - git submodule update --init --recursive - npm run build 7
  8. 8. .gitlab-ci.yml stages: - lint - test - build eslint: type: lint script: - npm i --only=dev - npm run lint allow_failure: true test: type: test script: - npm i --only=dev - npm run test 1. Пишем таск/работу (job) 2. Добавляем линтер 3. Прогоняем тесты 8
  9. 9. .gitlab-ci.yml before_script: - nvm use 6.2.0 - docker version stages: - lint - test - build test: <...> after_script: - nvm use 4.1.1 1. Пишем таск/работу (job) 2. Добавляем линтер 3. Прогоняем тесты 4. Подготовка окружения 9
  10. 10. .gitlab-ci.yml before_script: <...> image: node:6.9.4-slim stages: - lint - test - build eslint: image: node:custom-test-with-dev-package script: - npm run lint build: image: node:custom-test-with-prod-package <...> 1. Пишем таск/работу (job) 2. Добавляем линтер 3. Прогоняем тесты 4. Подготовка окружения 5. docker-in-docker 10
  11. 11. .gitlab-ci.yml before_script: <...> image: node:6.9.4-slim stages: <...> test: <...> build: image: node:custom-test-with-prod-package script: - npm run build - docker build -t $CI_REGISTRY_IMAGE . - docker push $CI_REGISTRY_IMAGE after_script: <...> 1. Пишем таск/работу (job) 2. Добавляем линтер 3. Прогоняем тесты 4. Подготовка окружения 5. docker-in-docker 6. docker build, docker push 11
  12. 12. Dockerfile примерно так выглядят наши Dockerfile FROM node:6.x.x-slim WORKDIR /src COPY ./modules ./modules COPY ./node_modules ./node_modules COPY package.json package.json COPY ./public ./ public EXPOSE 5050 CMD [“npm”, “run”, “start:prod”] 12
  13. 13. .gitlab-ci.yml # before_script, image, stages, eslint, test build_production : type: build script: - <...> - docker build -t $CI_REGISTRY_NAME - docker build -t $CI_REGISTRY_NAME:$CI_BUILD_TAG only: # 1.0.0 1.0.0.1 X.Y.Z - X.Y.Z.{P} - /^(?:0|[1-9]d*).(?:0|[1-9]d*).(?:0|[1 -9]d*).?(?:0|[1-9]d*)?$/ # after_script 1. Пишем таск/работу (job) 2. Добавляем линтер 3. Прогоняем тесты 4. Подготовка окружения 5. docker-in-docker 6. docker build, docker push 7. Немного SemVer’а 13
  14. 14. .gitlab-ci.yml stages: - <...> - deploy deploy_staging : type: deploy script: - kubectl config use-context ric-sandbox - kubectl --namespace=rightech rolling-update ric-web --image-pull-policy=Always --image=$CI_REGISTRY_IMAGE:staging only: # 1.0.0-rc1 1.0.0-rc2 X.Y.Z-rc{N} - /^(?:0|[1-9]d*).(?:0|[1-9]d*).(?:0|[1 -9]d*)-rc(?:0|[1-9]d*)$/ 1. Пишем таск/работу (job) 2. Добавляем линтер 3. Прогоняем тесты 4. Подготовка окружения 5. docker-in-docker 6. docker build, docker push 7. Немного SemVer’а 8. И наконец деплой в k8s 14
  15. 15. .gitlab-ci.yml # before_script, image, eslint, test, build_staging, build_production stages: - <...> deploy_staging : type: deploy environment: name: $CI_ENVIRONMENT_NAME # имя репозитория echo-server url: https://echo-server.example.com script: <...> only: <...> # deploy_production, after_script 1. Пишем таск/работу (job) 2. Добавляем линтер 3. Прогоняем тесты 4. Подготовка окружения 5. docker-in-docker 6. docker build, docker push 7. Немного SemVer’а 8. И наконец деплой в k8s 9. Добавим удобства 15
  16. 16. GitLab Runner + deb/rpm пакеты + docker - образ + k8s - образ (experimental) 16
  17. 17. Что есть еще для Kubernetes? Если у вас OpenShift... + web-terminal + генерация .gitlab-ci.yml + Auto-deploy 17
  18. 18. Будущее GitLab CI с Prometheus Также в планах: проверка лицензий, центр безопасности и дальнейшее расширение возможностей GitLab CI 18
  19. 19. А теперь как это работает в реальном мире Go, Go, Go 19 demo.rightech.io
  20. 20. Kubernetes + Используем CoreOS + Два кластера + Десяток серверов + Базы данных + Ежедневные обновления сервисов 20
  21. 21. Prometheus 1. Познакомились в декабре 2016 2. Обзор экосистемы 3. Как подружить с Kubernetes? 4. И как получать данные? 5. Пишем алертинги 6. Настраиваем нотификацию 21
  22. 22. Из чего состоит Prometheus? 22
  23. 23. Настраиваем Prometheus 1. Общие настройки global: # Настройка глобальных значений rule_files: - "/etc/prometheus-rules/*.rules" scrape_configs: # Дальше описываем джобы, подключаемся к k8s API # Пример статичного сервиса - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] 23
  24. 24. Настраиваем Prometheus 1. Общие настройки 2. Подключаем K8S-ноды # Получаем ноды k8s - job_name: 'kubernetes-nodes' scheme: https tls_config: ca_file: /path/serviceaccount/ca.crt insecure_skip_verify: true bearer_token_file: /path/serviceaccount/token kubernetes_sd_configs: - role: node relabel_configs: - action: labelmap regex: __meta_kubernetes_node_label_(.+) 24
  25. 25. Настраиваем Prometheus 25
  26. 26. 1. Запустить exporter 26 apiVersion: v1 kind: Service metadata: annotations: prometheus.io/scrape: "true" prometheus.io/port: "9121" spec: selector: app: ric-redis-exporter ports: - port: 9121 Как получать данные?
  27. 27. 1. Запустить exporter 2. Указать аннотации # HELP redis_uptime_in_seconds # TYPE redis_uptime_in_seconds gauge redis_uptime_in_seconds {addr="redis://ric-red is.rightech:6379"} 7.741975e+06 # HELP redis_used_cpu_sys # TYPE redis_used_cpu_sys gauge redis_used_cpu_sys {addr="redis://ric-redis.ri ghtech:6379"} 9021.01 # HELP redis_used_cpu_user # TYPE redis_used_cpu_user gauge redis_used_cpu_user {addr="redis://ric-redis.r ightech:6379"} 3202.48 27 Как получать данные?
  28. 28. PromQL 1. Запросы http_requests_total {method="GET"} 28
  29. 29. PromQL 1. Запросы 2. Функции sum(http_requests_total {method="GET"} offset 5m) 29 http_requests_total {method="GET"}
  30. 30. PromQL 1. Запросы 2. Функции 3. Алерты ALERT CountHttpGetRequest IF (sum(http_requests_total {method="GET"} offset 5m) > 500) FOR 10m LABELS {severity=”page”} ANNOTATION {DESCRIPTION=”{{$labels.instance}}”} 30 sum(http_requests_total {method="GET"} offset 5m) http_requests_total {method="GET"}
  31. 31. Настраиваем нотификаци ю 31 1. Подключаем slack, smtp, webhook 2. Подписываемся на события
  32. 32. Grafana 1. Grafana + Prometheus 2. Grafana + Prometheus + Slack 3. Grafana + Prometheus + GitLab 32
  33. 33. Grafana and Prometheus 1. Выбрать источник данных Prometheus 2. Указать путь до Prometheus 3. Basic Auth, CA Cert - опционально 1. Подключение стора 33
  34. 34. Grafana and Prometheus 1. Берем упомянутый ранее запрос 2. Создаем дашборд 3. Вставляем запрос PromQL 4. Видим результат 1. Подключение стора 2. Создаем дашборд 34
  35. 35. Grafana and Prometheus 1. Можем добавить алертинг 2. Добавляем алертинг 3. Настраиваем интеграцию со Slack 1. Подключение стора 2. Создаем дашборд 3. Создаем алерт 35
  36. 36. Grafana and Prometheus 1. Подключение стора 2. Создаем дашборд 3. Создаем алерт 4. Настраиваем нотификацию 36
  37. 37. GitLab GitLab runner (kubernetes) Prometheus и GitLab 37
  38. 38. Prometheus + Kubernetes https://github.com/kayrus/prometheus-kubernetes https://github.com/giantswarm/kubernetes-prometheus https://www.robustperception.io/blog https://prometheus.io/docs/introduction/overview 38
  39. 39. Итог + Льем + Мониторим + Уведомляем + Все заинтегрировано login@ rightech.io github.com/batazor
  • VyankteshTadkod

    Nov. 23, 2019
  • PavelTchaikovsky

    Apr. 23, 2018
  • up1

    Jun. 25, 2017

Презентация про интеграцию GitLab, Prometheus, Grafana и Kubernetes

Views

Total views

882

On Slideshare

0

From embeds

0

Number of embeds

1

Actions

Downloads

11

Shares

0

Comments

0

Likes

3

×