Skip to content

Latest commit

 

History

History
209 lines (149 loc) · 8.24 KB

Control_scripts.md

File metadata and controls

209 lines (149 loc) · 8.24 KB

Control scripts

Table of contents

create

Реализация создания нового развертывания.

Получает на вход следующие аргументы:

  • --project-name – название проекта
  • --base-domain – базовый домен
  • --namespace – namespace
  • --name – имя развертывания
  • --tag – тег развертывания
  • --app-env-override – override уровня приложения (формат значения FOO=BAR, может быть передано 0 или более раз)
  • --deployment-override – override уровня развертывания (формат значения FOO=BAR, может быть передано 0 или более раз)

Успешность операции определяется по exit code (0 – успех).

Например create с полученными аргументами может выполнять:

helm upgrade --install --namespace "$namespace" "$name" "$deployment_chart" \
    --set "global.project-name=$project_name" \
    --set "global.base-domain=$base-domain" \
    --set "app.tag=$tag" \
    --set "app.env.foo=$app_env_override_1" \
    --set "app.bar=$deployment_override_1" \
    --wait \
    --timeout 300

update

Реализация обновления развертывания.

Получает на вход следующие аргументы:

  • --project-name – название проекта
  • --base-domain – базовый домен
  • --namespace – namespace
  • --name – имя развертывания
  • --tag – тег развертывания
  • --app-env-override – override уровня приложения (формат значения FOO=BAR, может быть передано 0 или более раз)
  • --deployment-override – override уровня развертывания (формат значения FOO=BAR, может быть передано 0 или более раз)

Успешность операции определяется по exit code (0 – успех).

Например update с полученными аргументами может выполнять:

helm upgrade --install --namespace "$namespace" "$name" "$deployment_chart" \
    --set "global.project-name=$project_name" \
    --set "global.base-domain=$base-domain" \
    --set "app.tag=$tag" \
    --set "app.env.foo=$app_env_override_1" \
    --set "app.bar=$deployment_override_1" \
    --wait \
    --timeout 300

archive

Реализация удаления развертывания.

Получает на вход следующие аргументы:

  • --project-name – название проекта
  • --base-domain – базовый домен
  • --namespace – namespace
  • --name – имя развертывания

Успешность операции определяется по exit code (0 – успех).

Например archive с полученными аргументами может выполнять:

helm delete "$name" --purge

check

Реализация проверки состояния развертывания.

Получает на вход следующие аргументы:

  • --project-name – название проекта
  • --base-domain – базовый домен
  • --namespace – namespace
  • --name – имя развертывания

Успешность операции определяется по exit code (0 – успех).

Например check с полученными аргументами может выполнять:

echo "{\"Deployments\": [{\"ResourceName\": \"app-${name}\", \"Namespace\": \"${namespace}\"}], \"StatefulSets\": [{\"ResourceName\": \"db-${name}\", \"Namespace\": \"${namespace}\"}]}" | \
    kubedog multitrack -t 3

В примере выше используется Kubedog. Предполагается, что пользователь сам установит Kubedog: сохранит его в / контейнера с Control scripts или установит его в $HOME из init.

cleanup

Реализация очистки ресурсов развертывания.

Получает на вход следующие аргументы:

  • --project-name – название проекта
  • --base-domain – базовый домен
  • --namespace – namespace
  • --name – имя развертывания

Успешность операции определяется по exit code (0 – успех).

Например cleanup с полученными аргументами может выполнять:

kubectl delete pvc -n $namespace -l "app=$name"

archive_check

Реализация проверки успешности удаления развертывания.

Получает на вход следующие аргументы:

  • --project-name – название проекта
  • --base-domain – базовый домен
  • --namespace – namespace
  • --name – имя развертывания

Успешность операции определяется по exit code (0 – успех).

Например archive_check с полученными аргументами может выполнять:

helm status $name

tag_check

Реализация проверки существования тега развертывания.

Получает на вход следующие аргументы:

  • --project-name – название проекта
  • --base-domain – базовый домен
  • --namespace – namespace
  • --name – имя развертывания
  • --tag – тег развертывания

Успешность операции определяется по exit code (0 – успех).

init

Реализация инициализации рабочего окружения для будущих запусков Control Scripts.

В этом скрипте предлагается настроить доступ к системам контроля версий, облачным провайдерам и т.д. Для этого можно сохранить настройки в файлы в $HOME.

Этот скрипт однократно запускается во время создания пода Octopod Server.

Успешность операции определяется по exit code (0 – успех).

Например init может выполнять:

mkdir $HOME/.ssh
echo -e "Host github.com\nHostname github.com\nPort 22\nUser git\nIdentityFile $HOME/.ssh/deploy.key" > $HOME/.ssh/config
echo "MY_DEPLOY_KEY" > $HOME/.ssh/deploy.key"

info

Реализация получения метаданных о deployment. Содержимое stdout будет использованно в качестве дополнительной информации о deployment в CLI/UI. Ожидаемый формат stdoutCSV ключ,значение:

app,https://foo.example.com
api,https://api.foo.example.com

Ожидается, что ключ не может содержать символ ,, ограничений на значение нет. Пробельные символы остаются без изменений.

Получает на вход следующие аргументы:

  • --project-name – название проекта
  • --base-domain – базовый домен
  • --namespace – namespace
  • --name – имя стейджинга

Успешность операции определяется по exit code (0 – успех).

Например info с полученными аргументами может выполнять:

echo "app,https://${name}.example.com"
echo "api,https://api.${name}.example.com"