Compare commits
6 Commits
workflow
...
feature-tw
Author | SHA1 | Date | |
---|---|---|---|
ba60c43424 | |||
3b652fc6b0 | |||
2b923e4c96 | |||
9175f34e52 | |||
f3f74f56dd | |||
31de830d2e |
153
branch/README.md
Normal file
153
branch/README.md
Normal 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` описания метаданных группы
|
7
branch/sisyphus/k8s/coredns/image.yml
Normal file
7
branch/sisyphus/k8s/coredns/image.yml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
version: 1.0
|
||||||
|
image:
|
||||||
|
alias:
|
||||||
|
- k8s-${BRANCH}/${IMAGE}:${TAG}
|
||||||
|
labels:
|
||||||
|
org.altlinux.testscript: /bin/true
|
||||||
|
maintainer: stepchenkoas@basealt.ru
|
41
branch/sisyphus/k8s/images.yml
Normal file
41
branch/sisyphus/k8s/images.yml
Normal 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
|
7
branch/sisyphus/k8s/kube-apiserver/image.yml
Normal file
7
branch/sisyphus/k8s/kube-apiserver/image.yml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
version: 1.0
|
||||||
|
image:
|
||||||
|
alias:
|
||||||
|
- k8s-${BRANCH}/${IMAGE}:${TAG}
|
||||||
|
labels:
|
||||||
|
org.altlinux.testscript: /bin/true
|
||||||
|
maintainer: stepchenkoas@basealt.ru
|
7
branch/sisyphus/k8s/kube-controller-manager/image.yml
Normal file
7
branch/sisyphus/k8s/kube-controller-manager/image.yml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
version: 1.0
|
||||||
|
image:
|
||||||
|
alias:
|
||||||
|
- k8s-${BRANCH}/${IMAGE}:${TAG}
|
||||||
|
labels:
|
||||||
|
org.altlinux.testscript: /bin/true
|
||||||
|
maintainer: stepchenkoas@basealt.ru
|
7
branch/sisyphus/k8s/kube-proxy/image.yml
Normal file
7
branch/sisyphus/k8s/kube-proxy/image.yml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
version: 1.0
|
||||||
|
image:
|
||||||
|
alias:
|
||||||
|
- k8s-${BRANCH}/${IMAGE}:${TAG}
|
||||||
|
labels:
|
||||||
|
org.altlinux.testscript: /bin/true
|
||||||
|
maintainer: stepchenkoas@basealt.ru
|
7
branch/sisyphus/k8s/kube-scheduler/image.yml
Normal file
7
branch/sisyphus/k8s/kube-scheduler/image.yml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
version: 1.0
|
||||||
|
image:
|
||||||
|
alias:
|
||||||
|
- k8s-${BRANCH}/${IMAGE}:${TAG}
|
||||||
|
labels:
|
||||||
|
org.altlinux.testscript: /bin/true
|
||||||
|
maintainer: stepchenkoas@basealt.ru
|
7
branch/sisyphus/k8s/pause/image.yml
Normal file
7
branch/sisyphus/k8s/pause/image.yml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
version: 1.0
|
||||||
|
image:
|
||||||
|
alias:
|
||||||
|
- k8s-${BRANCH}/${IMAGE}:${TAG}
|
||||||
|
labels:
|
||||||
|
org.altlinux.testscript: /bin/true
|
||||||
|
maintainer: stepchenkoas@basealt.ru
|
Reference in New Issue
Block a user