Compare commits

...

6 Commits

8 changed files with 236 additions and 0 deletions

153
branch/README.md Normal file
View File

@ -0,0 +1,153 @@
# Описание структуры каталогов для автоматизации рабочео процесса создания образов
## Общая структура каталогов
- Вместо каталога `org` предлагается использовать каталог `branch`
- Каталог `branch` содержит подкаталога бранчей (платформ):
* `sisyphus`;
* `p10`;
* `c10f1`;
* `c10f2`;
* ...
Подкаталоги бранчей содержат дерево групп образов.
Корневая группа `base` содержит образы, которые тегируются по дате создания.
Остальные группы тегируются по версии основного ПО, входящего в состав образа.
Каталог группы может содержать yml-файл `images.yml` описания группы.
Пример дерева описания образов:
<pre>
branch/sisyphus/
├── apache
├── base
│   ├── alt
│   ├── buildpack
│   │   ├── buildpack-deps-curl
│   │   └── buildpack-deps-scm
│   ├── devel
│   ├── distroless
│   │   ├── distroless-base
│   │   ├── distroless-builder
│   │   ├── distroless-devel
│   │   ├── distroless-gotop
│   │   ├── distroless-static
│   │   └── distroless-true
│   ├── systemd
│   └── unit
├── cert-manager
│   ├── cert-manager-cainjector
│   ├── cert-manager-controller
│   └── cert-manager-webhook
├── cni
│   └── flannel
│   ├── flannel
│   └── flannel-cni-plugin
├── gitea
├── k8s
│   ├── coredns
│   ├── deckhouse
│   │   ├── coredns
│   │   ├── etcd
│   │   ├── kube-apiserver
│   │   ├── kube-controller-manager
│   │   ├── kube-proxy
│   │   ├── kube-scheduler
│   │   └── pause
│   ├── etcd
│   ├── kube-apiserver
│   ├── kube-controller-manager
│   ├── kube-proxy
│   ├── kube-scheduler
│   └── pause
├── nginx
├── prometheus
├── python
├── registry
├── ruby
└── trivy
└── trivy-node-collector
</pre>
Конечный каталог дерева содержит файлы:
- **`Dockerfile`** - файл для сборки образа;
- **`image.yml`** - файл описания метаданных для образа.
Кроме этого конечный каталог может содержать файлы и каталоги, которые помещаются в образ командами `COPY` и `ADD`.
Все вышележащие до каталога конкретного бранча (`sisyphus`, `p10`, `c10f1`, `c10f2`, ...) описывают группу (возможно пустую), в которую входит образ.
Имя образа формируется как тропа дерева каталогов.
Например:
- `sisyphus/apache`
- `sisyphus/k8s/kube-apiserver`
Имя тега берется либо из файла `image.yml` описания образа, либо из файла описания группы `images.yml`.
## Конечный каталог описания образа
### Dockerfile
Предлагается заменить шаблон `Dockerfile.template` заменить на нативный `Dockerfile`.
Все параметры, подставляемые функцией `render_dockerfiles` скрипта
[/build.py](https://gitea.basealt.ru/alt/image-forge/src/branch/feature-new-layout/build.py#L249)
заменяются на аргументы (`ARG`), инициализируемые непосредственно в `Dockerfile`или передаваемые (с заиещением) при сборко образа параметрами `--build-arg="<ARG>=<VALUE>"`.
За исключением шаблона `{{ install_pakages("<пакет>" ...) }}`
Предлагается во все базовые дистрибутивы включить `shell-скрипт` `alt_install_pakages`, выполняющий функции аналогичные
python-функции [install_pakages](https://gitea.basealt.ru/alt/image-forge/src/branch/feature-new-layout/build.py#L250).
Шаблон `{{ install_pakages("<пакет>" ...) }}` заменяется в `Dockerfile` оператором:
```
RUN alt_install_pakages <пакет> ...
```
Пример файла образа `sisyphus/k8s/kube-apiserver`:
<pre>
ARG BRANCH REGISTRY=gitea.basealt.ru ALT_IMAGE=base/alt:$BRANCH MAINTAINER=alt-cloud ALT_TESTSCRIPT=/bin/true
FROM $REGISTRY/$ALT_IMAGE:$BRANCH
MAINTAINER $MAINTAINER
LABEL org.altlinux.testscript=$ALT_TESTSCRIPT
RUN alt_install_pakages kubernetes-master
ENTRYPOINT ["/usr/bin/kube-apiserver"]
</pre>
### Файл image.yml описания метаданных для образа
В настоящий момент он содержит (жирным шрифтом обязательные элементы):
* **`image.maintainer`** - E-mail майнтейнера для создания и проверки электронной подписи образа;
* `image.alias` - список возможных алиасов образа;
* `image.tag` - тер образа (может при сборке перекрываться тегом, взятым из вышележащего файла `images.yml` описания группы)
* `image.labels` - список дополнительных метов образа, в частности:
- `org.altlinux.testscript` - shell код для тестоиования образа при его запуске в режиме `podman ... -it --- <образ>`
Пример файла образа `sisyphus/k8s/kube-apiserver`:
<pre>
version: 1.0
image:
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
labels:
org.altlinux.testscript: /bin/true
maintainer: stepchenkoas@basealt.ru
</pre>
## Каталог группы
### Файл `images.yml` описания метаданных группы

View File

@ -0,0 +1,7 @@
version: 1.0
image:
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
labels:
org.altlinux.testscript: /bin/true
maintainer: stepchenkoas@basealt.ru

View File

@ -0,0 +1,41 @@
version: 1.0
imageSet:
listCmd: ...
- version: 1.26.9
images:
- kube-apiserver:
tag: 1.26.9
- kube-controllermanager:
tag: 1.26.9
- kube-proxy:
tag: 1.26.9
- kube-scheduler:
tag: 1.26.9
- pause:
tag: 3.8
- coredns:
tag: v1.10.0
- etcd:
tag: 3.5.9
alias:
- alt/etcd:3.5.9
- version: 1.26.14
images:
- kube-apiserver:
tag: 1.26.14
- kube-controllermanager:
tag: 1.26.14
- kube-proxy:
tag: 1.26.14
- kube-scheduler:
tag: 1.26.14
- pause:
tag: 3.9
- coredns:
tag: v1.10.0
- etcd:
tag: 3.5.10
alias:
- alt/etcd:3.5.10

View File

@ -0,0 +1,7 @@
version: 1.0
image:
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
labels:
org.altlinux.testscript: /bin/true
maintainer: stepchenkoas@basealt.ru

View File

@ -0,0 +1,7 @@
version: 1.0
image:
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
labels:
org.altlinux.testscript: /bin/true
maintainer: stepchenkoas@basealt.ru

View File

@ -0,0 +1,7 @@
version: 1.0
image:
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
labels:
org.altlinux.testscript: /bin/true
maintainer: stepchenkoas@basealt.ru

View File

@ -0,0 +1,7 @@
version: 1.0
image:
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
labels:
org.altlinux.testscript: /bin/true
maintainer: stepchenkoas@basealt.ru

View File

@ -0,0 +1,7 @@
version: 1.0
image:
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
labels:
org.altlinux.testscript: /bin/true
maintainer: stepchenkoas@basealt.ru