В нашем последнем путешествии мы подключили 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 Обновление
Команда стоит отметить:
-
--et Image.tag = $ {ci_commit_sha}
ПереопределяетТег
Часть нашего развертывания.yaml, проходящая в Git Commit Hash. Это предполагает, что ваши контейнеры помечены фиксацией, который создает их. Если вы этого не сделаете, рассмотрите статическое значение, такое какПоследние
Отказ -
MyApp - $ {CI_COMMIT_REF_SLUG}
Предоставляет имя для этого развертывания. Если вы развертываете изМастер
ветвь, это будетMyApp-Master
Отказ Это должно быть уникально, поэтому настроитьmyapp-
Префикс, если у вас есть несколько приложений. -
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
И укажите свой браузер на http://localhost: 2222 ОтказРазвертывание/MyApp-Master 2222: 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»