Автоматизированное удаление сервиса с использованием Deploy Tools#

Для автоматизированного удаления программного компонента используется отдельная Jenkins задача. Указанная конфигурация позволяет удалить манифесты только для целей переустановки программного компонента. Окончательное удаление программного компонента описано в разделе Ручное удаление сервиса, пункт "Окончательное удаление".

Настройка Jenkins задачи#

  1. Создать Jenkins задачу в типом Pipeline

  2. Заполнить блок 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 установки).

  1. Заполнить блок 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

Настройки параметров удаления#

  1. Открыть файл openshift_del_res.conf из репозитория common

  2. Заполнить согласно шаблону:

Содержимое 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 задачи#

  1. Запустить сборку Jenkins задачи без указания параметров, произойдет ее автоматическая реконфигурация

  2. Запустить сборку повторно, произойдет удаление манифестов с проекта оркестрации

  3. Управлять удалением манифестов с разных проектов оркестрации можно путем редактирования параметра openshift_del_res.projectList