Обновите рабочую нагрузку Rancher 2 из CLI - PullRequest
0 голосов
/ 02 июля 2018

Я создал рабочую нагрузку на Rancher. Эта рабочая нагрузка создается из образа, размещенного в реестре проекта gitlab-ci.

Я хочу заставить ранчера загрузить новую версию этого образа и обновить рабочую нагрузку.

Я хочу сделать это из скрипта .gitlab-ci.yml. Как это сделать с Rancher версия 2 ? С Rancher 1.6 я использовал этот скрипт:

deploy:
  stage: deploy
  image: cdrx/rancher-gitlab-deploy
  script:
    - upgrade --stack mystack --service myservice --no-start-before-stopping

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

@ nidomo, просто используйте API для выдачи pause, а затем resume, это приведет к обновлению рабочей нагрузки, буму, извлечению и развертыванию последней версии контейнера.

0 голосов
/ 04 июля 2018

На ранчере 2 большая часть управления рабочими нагрузками делегируется Kubernetes через его API или CLI (kubectl).

Вы можете установить исправление для развертывания, чтобы указать новое изображение / версию, но если вы используете тег типа :latest, который перемещается, вам нужно будет заставить Kubernetes повторно развернуть модули, изменив что-то в спецификации развертывания.

Один из распространенных способов сделать это - изменить / добавить переменную среды, которая вызывает повторное развертывание.

В Gitlab задайте две переменные в вашем проекте или группе gitlab для передачи аутентификационной информации в сборку.

kubectl patch обновит или добавит переменную среды с именем FORCE_RESTART_AT к контейнеру вашего развертывания, которая будет вызывать повторное развертывание каждый раз, когда оно установлено, поскольку изменяется идентификатор конвейера Gitlab.

Вам нужно будет указать пространство имен, имя вашего развертывания, имя контейнера и изображение. Если тег изображения изменяется, нет необходимости указывать переменную окружения. Если вы используете :latest, убедитесь, что установлен imagePullPolicy: Always вашего контейнера, который используется по умолчанию, если Kubernetes обнаруживает изображение, используя :latest.

Изображение diemscott/rancher-cli-k8s - это простое изображение, полученное из rancher/cli, которое также включает kubectl.

RANCHER_SERVER_URL=https://rancher.example.com
RANCHER_API_TOKEN="token-sd5kk:d27nrsstx6z5blxgkmspqv94tzkptnrpj7rkcrt7vtxt28tvw4djxp"

deploy:
  stage: deploy
  image: diemscott/rancher-cli-k8s:v2.0.2
  script:
    - rancher login "$RANCHER_SERVER_URL" -t "$RANCHER_API_TOKEN"
    - rancher kubectl --namespace=default patch deployment nginx --type=strategic -p '{"spec":{"template":{"spec":{"containers":[{"name":"nginx","image": "nginx","env":[{"name":"FORCE_RESTART_AT","value":"$CI_PIPELINE_ID"}]}]}}}}'
...