Compare commits
6 Commits
master
...
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
|
Loading…
Reference in New Issue
Block a user