Автоматизированное удаление сервиса с использованием Deploy Tools#
Для автоматизированного удаления программного компонента используется отдельная Jenkins задача. Указанная конфигурация позволяет удалить манифесты только для целей переустановки программного компонента. Окончательное удаление программного компонента описано в разделе Ручное удаление сервиса, пункт "Окончательное удаление".
Настройка Jenkins задачи#
Создать Jenkins задачу в типом Pipeline
Заполнить блок Properties Content
NODE=
GIT_URL=
SEGMENT=
ENVIR=
CHANNEL=
CE=
SUBDIVISION=
REPO_NAME=
REPOCOMMON=
REPOFPCONFIG=
REPOCOMMONBRANCH=
REPOFPCONFIGBRANCH=
SCRIPTS_GIT_URL=
Параметр |
Описание |
Комментарий |
|---|---|---|
NODE |
Метка Jenkins агента для выполлнения сборки |
|
GIT_URL |
SSH url на пространство BitBucket, где располагаются созданные репозитории |
см. раздел Подготовка п. Настройка BitBucket |
SEGMENT |
Сегмент, указанный в environment.json common репозитория |
|
ENVIR |
Любой суффикс, например, буквенный код стенда (**) |
|
CHANNEL |
Канал, оставить пустым |
|
CE |
Любой префикс компонента |
см. раздел Подготовка п. Настройка BitBucket |
SUBDIVISION |
Название компонента, mailbridge |
см. раздел Подготовка п. Настройка BitBucket |
REPO_NAME |
Имя репозитория, всегда fpi |
|
REPOCOMMON |
Название BitBucket репозитория common |
|
REPOFPCONFIG |
Название BitBucket репозитория стендозависимых параметров mail |
|
REPOCOMMONBRANCH |
Ветка BitBucket common репозитория |
по умолчанию master |
REPOFPCONFIGBRANCH |
Ветка BitBucket mail репозитория |
по умолчанию master |
SCRIPTS_GIT_URL |
(*) url на репозиторий, где размещаются технические скрипты job установки/удаления |
см. раздел Настройка deploy pipeline п. Заполнение файла environment.json |
(*) Необходим для исправной работы job удаления дистрибутива в случае, если суффикс у репозитория отличается от "dev" или "mmv". Если не будет указан - job Jenkins будет завершаться с ошибками загрузки скриптов pipeline из репозитория, так как будет искать их по адресу по умолчанию. Данный параметр (с именем "scriptsGitUrl") может быть также добавлен в environment.json (необходима реконфигурация job установки).
Заполнить блок Pipeline
Definition=Pipeline script from SCM
SCM=Git
Repository URL=SSH url репозитория BitBucket {код компонента}mailbridge_pipeline{стенд} (**)
Credentials=Запись в Credentials plugin Jenkins с учетными данными для подключения к BitBucket по SSH
Branch Specifier (blank for 'any')=*/master
Script Path=deploy-fpi-security.groovy
** см. раздел Подготовка п. Настройка BitBucket
Настройки параметров удаления#
Открыть файл openshift_del_res.conf из репозитория common
Заполнить согласно шаблону:
Содержимое openshift_del_res.conf:
###################### ОПИСАНИЕ ПРОЕКТОВ ######################
# openshift_del_res.project.<name/id>.[cluster/projects]
# projects может быть несколько, может быть один - перечислять через запятую
# имена проектов соответствуют названиям проектов в openshift
# поле cluster брать из multiCluster.json common репозитория
# если multiCluster.json нет, ставить "none" в поле cluster
openshift_del_res.project.1.cluster = 1_tribe-sy-eku-dev-01
openshift_del_res.project.1.projects = tribe-sy-eku-dev-01
# список проектов на удаление, можно списком, через запятую
openshift_del_res.projectList = 1
##### ОГРАНИЧЕНИЯ, ПРИМЕНЯЕМЫЕ К СПИСКУ ОБРАБАТЫВАЕМЫХ РЕСУРСОВ #####
# Удалять только ресурсы, связанные с проектом определенной версии, если указана
openshift_del_res.delete.projects.version = off
# игнорирование ресурсов по лейблам, аннотациям и маскам файлов
openshift_del_res.delete.projects.safe_mode = off
# (применяется при отключенном параметре openshift_del_res.delete.projects.safe_mode)
openshift_del_res.delete.projects.keep_contain_labels = off
openshift_del_res.delete.projects.keep_contain_annotations = kubernetes.io/created-by,kubernetes.io/service-account.name=builder,kubernetes.io/service-account.name=default,kubernetes.io/service-account.name=deployer,kubernetes.io/service-account.name=jenkins,kubernetes.io/service-account.name=prometheus,kubernetes.io/service-account.name=test-sa
openshift_del_res.delete.projects.dpl.keep_name_mask = off
openshift_del_res.delete.projects.dc.keep_name_mask = off
openshift_del_res.delete.projects.is.keep_name_mask = off
openshift_del_res.delete.projects.routes.keep_name_mask = off
openshift_del_res.delete.projects.cfgmaps.keep_name_mask = ^istio-ca-root-cert$, ^kube-root-ca.crt$, ^openshift-service-ca.crt$, ^grafana-*, ^prometeus-*
openshift_del_res.delete.projects.secrets.keep_name_mask = ^builder-*, ^default-*, ^deployer-*, ^jenkins-*, ^prometheus-*, ^test-sa-*, ^crypt-key-secret$, ^general-emc-docker-registry-pull-secret$
openshift_del_res.delete.projects.pods.keep_name_mask = off
openshift_del_res.delete.projects.srv.keep_name_mask = off
openshift_del_res.delete.projects.rplc.keep_name_mask = off
openshift_del_res.delete.projects.hps.keep_name_mask = off
openshift_del_res.delete.projects.rs.keep_name_mask = off
openshift_del_res.delete.projects.se.keep_name_mask = off
openshift_del_res.delete.projects.gw.keep_name_mask = off
openshift_del_res.delete.projects.dsr.keep_name_mask = off
openshift_del_res.delete.projects.vs.keep_name_mask = off
openshift_del_res.delete.projects.ef.keep_name_mask = off
###################### УДАЛЕНИЕ ОБЪЕКТОВ ПО ТИПУ ######################
# будут удалены все объекты определенного типа из проекта
# удаление сикретов env-commons, mq.jks и secret-secret
openshift_del_res.delete.projects.commons = off
# удаление всeх ресурсов проекта, кроме коммонов
openshift_del_res.delete.projects.all = off
# удаление deploymants
openshift_del_res.delete.projects.dpl = on
# удаление deploymentconfigs
openshift_del_res.delete.projects.dc = on
# удаление imagestreams
openshift_del_res.delete.projects.is = on
# удаление routes
openshift_del_res.delete.projects.routes = on
# удаление configmaps
openshift_del_res.delete.projects.cfgmaps = on
# удаление secrets
openshift_del_res.delete.projects.secrets = on
# удаление pods
openshift_del_res.delete.projects.pods = on
# удаление services
openshift_del_res.delete.projects.srv = on
# удаление replicationcontrollers
openshift_del_res.delete.projects.rplc = on
# удаление horizontalpodautoscalers
openshift_del_res.delete.projects.hpa = on
# удаление replicasets
openshift_del_res.delete.projects.rs = on
# удаление serviceentries
openshift_del_res.delete.projects.se = on
# удаление gateways
openshift_del_res.delete.projects.gw = on
# удаление destinationrules
openshift_del_res.delete.projects.dsr = on
# удаление virtualservices
openshift_del_res.delete.projects.vs = on
# удаление envoyfilters
openshift_del_res.delete.projects.ef = on
###################### УДАЛЕНИЕ ОБЪЕКТОВ ПО ИМЕНИ И ТИПУ ######################
# тут писать имена удаляемых ресурсов, можно список - через запятую
# удаление deploymants
openshift_del_res.delete_by_name.projects.dpl = off
# удаление deploymentconfigs
openshift_del_res.delete_by_name.projects.dc = off
# удаление imagestreams
openshift_del_res.delete_by_name.projects.is = off
# удаление routes
openshift_del_res.delete_by_name.projects.routes = off
# удаление configmaps
openshift_del_res.delete_by_name.projects.cfgmaps = off
# удаление secrets
openshift_del_res.delete_by_name.projects.secrets = off
# удаление pods
openshift_del_res.delete_by_name.projects.pods = off
# удаление services
openshift_del_res.delete_by_name.projects.srv = off
# удаление replicationcontrollers
openshift_del_res.delete_by_name.projects.rplc = off
# удаление horizontalpodautoscalers
openshift_del_res.delete_by_name.projects.hpa = off
# удаление replicasets
openshift_del_res.delete_by_name.projects.rs = off
# удаление serviceentries
openshift_del_res.delete_by_name.projects.se = off
# удаление gateways
openshift_del_res.delete_by_name.projects.gw = off
# удаление destinationrules
openshift_del_res.delete_by_name.projects.dsr = off
# удаление virtualservices
openshift_del_res.delete_by_name.projects.vs = off
# удаление envoyfilters
openshift_del_res.delete_by_name.projects.ef = off
Запуск Jenkins задачи#
Запустить сборку Jenkins задачи без указания параметров, произойдет ее автоматическая реконфигурация
Запустить сборку повторно, произойдет удаление манифестов с проекта оркестрации
Управлять удалением манифестов с разных проектов оркестрации можно путем редактирования параметра openshift_del_res.projectList