Рубрики
Uncategorized

Использование управляемых GitLab Kubernetes

В нашем последнем путешествии мы подключили Gitlab к кластеру Kubernetes, исследуя «Добавить Кубернаны Cluste … Помечено с Кубернанами, Gitlab, Devops.

В нашем последнем путешествии мы подключили Gitlab к куберату кластер, исследующий «Добавить кластер Kubernetes» кнопка. Теперь, когда наш кластер настроен, давайте поставить его на использование!

Gitlab’s Авто DEVOPS слишком волшебно для меня. Я не понимаю достаточно хорошо, чтобы использовать его; И я подозреваю, что мое использование правил докеров Bazel вызовет проблемы. Вместо этого мы вручную добавим шаг развертывания, чтобы обновить наше приложение.

1. Добавьте хелм-график.

Геллерные диаграммы по существу являются шаблонами YAML для ресурсов Kubernetes. Они позволяют добавлять переменные и установить/переопределить их при нанесении графика … то, что вы, возможно, традиционно используете Sed или другой трюк Bash.

Чтобы создать новую карту HELM, запустите команду, как:

mkdir devops; cd devops
helm create myapp

Это создаст MyApp/Directory со всеми кусками шаблона HELM внутри. Затем вы можете просмотреть вывод YAML этого шаблона, используя команду, как:

helm install --dry-run --debug myapp

Геллерные диаграммы могут быть довольно пугающими. Мясо шаблона в Шаблоны/развертывание.yaml файл. Если вы хотите, вы можете удалить все модные шаблоны в этом файле и заменить его ванильным ямлем для объекта развертывания.

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

2. Вытягивание из реестра Gitlab

Автор

Если вы используете реестр частного контейнера, например, GitLab, вам нужно будет хранить некоторую информацию для входа в секрет В ваших кластере Кубера.

Для начала отправляйтесь в настройки вашего проекта в GitLab и перейдите к разделу реестра. Создайте развертывание токена и обратите внимание на имя пользователя и пароль.

Далее следуют Это руководство Загрузить этот секрет к вашему кластеру. Я закончил использовать команду как:

kubectl create secret docker-registry regcred \
--docker-server=registry.gitlab.com \
--docker-username=gitlab+deploy-token-123456 \
--docker-password=p@ssw0rdh3r3 \
--docker-email=me@gmail.com

ЗАМЕТКА: Вам, вероятно, нужно запустить эту команду с - проект Флаг, который устанавливает этот секрет в том же пространстве имен, который выбирает Gitlab для запуска вашего приложения. Если он не установлен, вы увидите ошибки, пытающиеся получить контейнер.

Геллер диаграммы твик

Использовать это regcred Секрет, добавьте его в imagepullsecrets Раздел вашего Значения.yaml файл, как это:

image:
  repository: registry.gitlab.com/bamnet/project/image
  pullPolicy: IfNotPresent
  tag: ""

imagePullSecrets:
  - name: regcred

3.gitlab-ci.yml Обновления

Чтобы применить этот диаграмма HELM как часть вашего CI/CD-трубопровода, добавьте работу на ваш .gitlab-ci.yml файл, как следующее:

deploy_myapp:
  stage: deploy
  image:
    name: alpine/helm:latest
    entrypoint: [""]
  script:
    - helm upgrade
      --install
      --wait
      --set image.tag=${CI_COMMIT_SHA}
      myapp-${CI_COMMIT_REF_SLUG}
      devops/myapp
  environment:
    name: production

Самая важная часть всей этой работы — окружающая среда раздел. Gitlab предоставляет только информацию о подключении Kubernetes (через переменные среды Helm и Kubectl автоматически используют), когда этап развертывания имеет окружающая среда установленный. Без этого раздела вы получите ошибки, подключаемые к вашему кластеру.

Есть 3 части Helm Обновление Команда стоит отметить:

  1. --et Image.tag = $ {ci_commit_sha} Переопределяет Тег Часть нашего развертывания.yaml, проходящая в Git Commit Hash. Это предполагает, что ваши контейнеры помечены фиксацией, который создает их. Если вы этого не сделаете, рассмотрите статическое значение, такое как Последние Отказ
  2. MyApp - $ {CI_COMMIT_REF_SLUG} Предоставляет имя для этого развертывания. Если вы развертываете из Мастер ветвь, это будет MyApp-Master Отказ Это должно быть уникально, поэтому настроить myapp- Префикс, если у вас есть несколько приложений.
  3. DevOps/MyApp В конце указана папка, в которой расположены файлы диаграммы HELM.

Нажатие на этот новый файл GitLab-CI должен вызвать автоматическое развертывание в кластере Kubernetes. Сядьте назад, расслабитесь и посмотрите на приборную панель, чтобы увидеть ее работу.

Если это ваш первый толчок, будьте в поисках нового пространства имен, который будет создан .., вероятно, что-то вроде GitLabProject-123456-Production Отказ

Устранение неисправностей Советы

  • Локально беги helm установить --dry-run чтобы увидеть запланированную конфигурацию. Если он не смотрит вправо локально, нет, Gitlab пойдет правильно.
  • Подключите к приборной панели Kubernetes, чтобы увидеть, почему развертывания не удаются.
  • Убедитесь, что имена и теги изображения и теги соответствуют между вашим хостингом реестра вещей и развертывания YAML, пытающихся их создать.
  • Используйте флаг — проект пространства, чтобы убедиться, что ваши учетные данные реестра в конечном итоге в правильном пространстве имен.

GitLab имеет ряд knlemet of Premetheus. Я являюсь присосом для однокливых кнопок установки и хотел дать ему спин мониторинг моего приложения Go.

1. Экспорт метрик

Opentelemetry Документы и примеры — хорошая отправная точка. Armetheus нужна и HTTP конечная точка, чтобы схватить метрики, очень простой экспортер Premetheus выглядит так.

func initMeter() {
    exporter, err := prometheus.InstallNewPipeline(prometheus.Config{})
    if err != nil {
        log.Panicf("failed to initialize prometheus exporter %v", err)
    }
    http.HandleFunc("/metrics", exporter.ServeHTTP)
    go func() {
        _ = http.ListenAndServe(":2222", nil)
    }()

    fmt.Println("Prometheus server running on :2222")
}

func main() {
    initMeter()
     // Rest of your code here.

2. Добавление аннотаций.

PROMETHEUS GITLAB PROMETHEUS автоматически записывает метрики с любого ресурса, имеющего определенные аннотации на месте, которые говорят ему, как соскребать. Добавьте следующее в свой Chart.yaml файл:

podAnnotations:
  prometheus.io/scrape: "true"
  prometheus.io/path: /metrics
  prometheus.io/port: "2222"

Вот и все!

Устранение неисправностей Советы

  • Вручную подключите к вашему приложению и посмотрите экспортируемые метрики. Переслать порт, используя KUBECTL PORT-FORVE-FORVER -N Развертывание/MyApp-Master 2222: 2222 И укажите свой браузер на http://localhost: 2222 Отказ
  • Вручную подключите к PROMETHEUS и используйте веб-пользовательский интерфейс, чтобы увидеть, какие метрики соскребают и запускают запросы против них. Переслать порт, используя KUBECTL PORT-FORVE-INVER Gitlab-Managed-Apps Service/PROMETHEUS-PROMETHEUS-SERVER 9090: 80 и укажите свой браузер на http://localhost: 9090 Отказ

Оригинал: «https://dev.to/bamnet/using-gitlab-managed-kubernetes-5b03»