Артефакты для установки Istio компонентов#
Для установки Istio компонентов альтернативным способом с помощью Jenkins Job InstallerIstioSE (описанного в подразделе «Pipelines» раздела «Дополнительная документация» текущего документа) необходимы следующие артефакты:
Образ операционной системы, содержащий kubectl;
Дистрибутив, содержащий helm chart c шаблоном Kubernetes ресурса Job;
Стендозависимые параметры в каталоге проекта в репозитории стендозависимых параметров;
Образ операционной системы, содержащий kubectl#
Для сборки образа необходима следующая структура репозитория:
Каталог docker, в котором находится Dockerfile для сборки образа;
Каталог kubectl, в котором находится бинарный файл kubectl;

Рисунок. Структура репозитория
Содержимое Dockerfile
# базовый образ
FROM registry.domain.ru/sbt_dev/ci90000051_synai_dev/istio_se_dev/base:1.12-dev
# копировать в рабочую директорию
COPY kubectl/kubectl /usr/local/bin
# полномочия на выполнение и версия kubectl
RUN chmod +x /usr/local/bin/kubectl \
&& kubectl version --client
Дистрибутив, содержащий helm chart c шаблоном Kubernetes ресурса Job#
Для сборки дистрибутива в репозитории необходим каталог со структурой helm chart.
Каталог обязан содержать файл values.yaml (регулируется параметром helmValuesFileName в репозитории настроек SMDL).
В этом файле необходимо наличие параметра component_type с типом компоненты: job (имя параметра и список допустимых значений регулируется соответствующими параметрами в репозитории настроек SMDL:
componentTypeField и availableHelmComponentsType). В подкаталоге templates должен находиться шаблон Kubernetes ресурса Job - job.yaml

Рисунок. Структура каталога с helm chart
Содержимое values.yaml
component_type: "job"
configPath: "/etc/config"
Содержимое job.yaml
kind: Job
apiVersion: batch/v1
metadata:
name: {{ .Release.Name }}-job
namespace: {{ .Release.Namespace }}
spec:
template:
spec:
volumes:
- name: configmap-volume
configMap:
name: {{ .Release.Name }}-configmap
defaultMode: 0700
serviceAccountName: {{ .Values.serviceAccountName }}
imagePullSecrets:
- name: {{ .Values.imagePullSecretName }}
containers:
- name: {{ .Release.Name }}-container
image: {{ .Values.registry }}/sbt/ci90000017_synapse/ci90000017_synapse/rhel7-java-synapse-devopsk8s-ci90000017:0.1.0.3
command: ["bin/bash", "-c"]
args:
- >
date &&
echo Hi!... &&
kubectl apply -f {{ .Values.configPath }}
volumeMounts:
- name: configmap-volume
mountPath: {{ .Values.configPath }}
readOnly: true
restartPolicy: Never
Стендозависимые параметры в каталоге проекта в репозитории стендозависимых параметров#
Стендозависимые параметры формируются, согласно структуре стендозависимых параметров (подробнее в "Структура исходного кода, конфигурации приложения" в разделe «Дополнительная документация» текущего документа)

Рисунок. Структура стендозависимых параметров
Пример default.yaml
serviceAccountName: "sa-smdl-sy-devops-istio"
imagePullSecretName: "os-image-pull-secret"
registry: "registry.domain.ru"
configPath: "/etc/config"
Сборка образа и дистрибутива#
Сборка образа и дистрибутива осуществляется с помощью Jenkins Job SynapseBuilder (описанного в подразделе «Pipelines» раздела «Дополнительная документация» текущего документа). За публикацию в реестр образов и в репозиторий хранения артефактов отвечают флаги: needsPublishToRegistry, needsPublishToNexus.