Compare commits

...

13 Commits

Author SHA1 Message Date
Alexey Kostarev
919ef43d60 Дерево перестроено на два уроыня 2024-04-24 15:02:03 +05:00
Alexey Kostarev
d34a5e2708 Добавлены пустые файлы Dockerfile и image.yml 2024-04-24 14:53:51 +05:00
Alexey Kostarev
85334e382c Add tree 2024-04-24 14:48:10 +05:00
Nadezhda Fedorova
abdd641ac2 update tags for k8s 2024-04-24 14:41:37 +05:00
Nadezhda Fedorova
1a1bf5ac64 fix getting number of tech.issue for notifications to static number 1 (filter on tag doesn't work) 2024-04-24 14:41:37 +05:00
Nadezhda Fedorova
a0643aca87 delete from workflow building images on c10f1/2 for arches arm, ppc 2024-04-24 14:41:37 +05:00
Nadezhda Fedorova
57aa82cf8c add workflow for building all images on branches p10, c10f1/2 2024-04-24 14:41:37 +05:00
Nadezhda Fedorova
14da06e02b add branches c10f1,c10f2 to list of options 2024-04-24 14:41:37 +05:00
3b652fc6b0 Обновить branch/README.md 2024-04-23 10:04:32 +03:00
2b923e4c96 Обновить branch/README.md 2024-04-23 10:03:48 +03:00
Alexey Kostarev
9175f34e52 Правка документации 2024-04-23 11:45:11 +05:00
f3f74f56dd Обновить branch/README.md 2024-04-23 09:26:37 +03:00
Alexey Kostarev
31de830d2e Постоено основное дерево в branch/sisyphus, оформлены основные файлы в группе ranch/sisyphus/k8s 2024-04-23 10:54:20 +05:00
63 changed files with 530 additions and 23 deletions

View File

@ -0,0 +1,127 @@
name: Full building alt images
on:
push:
tags:
- '*10*_*'
jobs:
build-process:
runs-on: alt-p10
outputs:
branch: ${{ env.BRANCH }}
org: ${{ env.ORG }}
url: ${{ env.URL }}
repo: ${{ env.REPO }}
buildres: ${{ steps.build-script.outcome }}
steps:
- name: Check workspace
run: |
repourl=$(echo $GU | cut -d '/' -f 3)
echo "URL=$repourl" >> ${GITHUB_ENV}
echo $repourl
reponame=$(echo $GR | cut -d '/' -f 1)
echo "REPO=$reponame" >> ${GITHUB_ENV}
echo $reponame
env:
GU: ${{ gitea.server_url }}
GR: ${{ gitea.repository }}
- name: Update apt
uses: actions/init-alt-env@v1
- name: Install requires
run: |
echo "apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl"
apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl
echo "apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-ppc"
apt-get install -y qemu-user-static-binfmt-aarch64 qemu-user-static-binfmt-arm qemu-user-static-binfmt-ppc
- name: Check out current repo
uses: actions/checkout@v4
- name: Parse target branch and tag from events context, save to env
env:
EV: ${{ toJson(gitea.event) }}
run: |
echo $EV | jq '.ref' -r | sed "s/refs\/tags\//BRANCH=/g" | cut -d '_' -f 1
echo $EV | jq '.ref' -r | sed "s/refs\/tags\//BRANCH=/g" | cut -d '_' -f 1 >> ${GITHUB_ENV}
org=$(echo $EV | jq '.ref' -r | sed 's/refs\/tags\///g' | cut -d '_' -f 2)
echo "ORG=$org" >> ${GITHUB_ENV}
echo "ORG=$org"
- name: Login podman gitea
run: |
echo "podman login ${{ env.URL }}"
podman login --username $P_USER --password $P_PASS ${{ env.URL }}
env:
P_USER: ${{ secrets.PODMAN_USER }}
P_PASS: ${{ secrets.PODMAN_PASS }}
- name: Run building script
id: build-script
run: |
build_args="-b $BR -o $ORG --skip-images alt/distroless-devel"
if [[ $BR == 'c10f1' || $BR == 'c10f2' ]]; then build_args="$build_args --skip-arches arm ppc64le"; fi
if [[ $ORG == 'k8s' ]]; then build_args="$build_args --tags tags.toml --overwrite-organization $ORG-$BR --skip-images k8s/kube-apiserver k8s/kube-controller-manager k8s/kube-proxy k8s/kube-scheduler"; fi
echo "build.py $build_args"
${{ gitea.workspace }}/build.py $build_args
env:
ORG: ${{ env.ORG }}
BR: ${{ env.BRANCH }}
continue-on-error: true
- name: Send notification if build crashed
if: ${{ steps.build-script.outcome != 'success' }}
run: |
issueid=1
body="Building images finish with some errors."
curl -X 'POST' "$URL/api/v1/repos/$REPO/image-forge/issues/$issueid/comments?token=$T" -H 'accept: application/json' -H 'Content-Type: application/json' -d "{ \"body\": \"$body\" }" -s
echo "notification about test error is sent to issue $issueid"
env:
T: ${{ secrets.TOKEN }}
BR: ${{ env.BRANCH }}
URL: ${{ gitea.server_url }}
REPO: ${{ env.REPO }}
- name: Delete event tag
run: |
tagname=$(echo $EV | jq '.ref' -r | sed "s/refs\/tags\///g")
curl -X 'DELETE' "$URL/api/v1/repos/$REPO/image-forge/tags/$tagname?token=$T" -H 'accept: application/json' -s
echo "tag $tagname is deleted"
env:
T: ${{ secrets.TOKEN }}
BR: ${{ env.BRANCH }}
URL: ${{ gitea.server_url }}
REPO: ${{ env.REPO }}
EV: ${{ toJson(gitea.event) }}
test-process:
needs: build-process
if: ${{ needs.build-process.outputs.buildres == 'success' }}
runs-on: alt-p10
steps:
- name: Update apt
uses: actions/init-alt-env@v1
- name: Install requires
run: |
echo "apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl"
apt-get install -y python3-module-tomli python3-module-jinja2 podman buildah jq curl
- name: Check out current repo
uses: https://gitea.com/actions/checkout@v4
- name: Test
id: test-script
continue-on-error: true
run: |
$WS/.gitea/workflows/testscript $BR $ORG $URL $REPO $WS
cat haserr.log >> ${GITHUB_ENV}
echo "test process finished"
env:
BR: ${{ needs.build-process.outputs.branch }}
ORG: ${{ needs.build-process.outputs.org }}
URL: ${{ needs.build-process.outputs.url }}
REPO: ${{ needs.build-process.outputs.repo }}
WS: ${{ gitea.workspace }}
- name: Send notification if test crashed
if: ${{ env.ERR == 'true' || steps.test-script.outcome == 'failure' }}
run: |
issueid=1
errors=$(cat errors.log)
body="Testing images finish with some errors. $errors"
curl -X 'POST' "$URL/api/v1/repos/$REPO/image-forge/issues/$issueid/comments?token=$T" -H 'accept: application/json' -H 'Content-Type: application/json' -d "{ \"body\": \"$body\" }" -s
echo "notification about test error is sent to issue $issueid"
env:
T: ${{ secrets.TOKEN }}
BR: ${{ needs.build-process.outputs.branch }}
URL: ${{ gitea.server_url }}
REPO: ${{ needs.build-process.outputs.repo }}

View File

@ -66,12 +66,10 @@ jobs:
- name: Send notification if build crashed
if: ${{ steps.build-script.outcome != 'success' }}
run: |
issueid=$(curl -X 'GET' "$URL/api/v1/repos/$REPO/image-forge/issues?state=open&labels=building&type=issues&page=1&limit=1&token=$T" -H 'accept: application/json' -s | jq '.[].number' -r)
if [[ $issueid != '' ]]; then \
body="Building images finish with some errors."; \
curl -X 'POST' "$URL/api/v1/repos/$REPO/image-forge/issues/$issueid/comments?token=$T" -H 'accept: application/json' -H 'Content-Type: application/json' -d "{ \"body\": \"$body\" }" -s;\
echo "notification about test error is sent to issue $issueid"; \
else echo "no issue to send notification"; fi
issueid=1
body="Building images finish with some errors."
curl -X 'POST' "$URL/api/v1/repos/$REPO/image-forge/issues/$issueid/comments?token=$T" -H 'accept: application/json' -H 'Content-Type: application/json' -d "{ \"body\": \"$body\" }" -s
echo "notification about test error is sent to issue $issueid"
env:
T: ${{ secrets.TOKEN }}
BR: ${{ env.BRANCH }}
@ -117,13 +115,11 @@ jobs:
- name: Send notification if test crashed
if: ${{ env.ERR == 'true' || steps.test-script.outcome == 'failure' }}
run: |
issueid=$(curl -X 'GET' "$URL/api/v1/repos/$REPO/image-forge/issues?state=open&labels=building&type=issues&page=1&limit=1&token=$T" -H 'accept: application/json' -s | jq '.[].number' -r)
if [[ $issueid != '' ]]; then \
errors=$(cat errors.log); \
body="Testing images finish with some errors. $errors"; \
curl -X 'POST' "$URL/api/v1/repos/$REPO/image-forge/issues/$issueid/comments?token=$T" -H 'accept: application/json' -H 'Content-Type: application/json' -d "{ \"body\": \"$body\" }" -s; \
echo "notification about test error is sent to issue $issueid"; \
else echo "no issue to send notification"; fi
issueid=1
errors=$(cat errors.log)
body="Testing images finish with some errors. $errors"
curl -X 'POST' "$URL/api/v1/repos/$REPO/image-forge/issues/$issueid/comments?token=$T" -H 'accept: application/json' -H 'Content-Type: application/json' -d "{ \"body\": \"$body\" }" -s
echo "notification about test error is sent to issue $issueid"
env:
T: ${{ secrets.TOKEN }}
BR: ${{ needs.build-process.outputs.branch }}

1
.gitignore vendored
View File

@ -1 +0,0 @@
Dockerfile

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

View File

View File

View File

View File

View File

View File

View File

View File

@ -0,0 +1,13 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="flannel-cni-plugin"
LABEL org.opencontainers.image.description="CNI network plugin that is powered by flannel"
LABEL org.opencontainers.image.source="https://github.com/flannel-io/cni-plugin"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_pakages("cni-plugin-flannel") }}
RUN cp /usr/libexec/cni/flannel /flannel

View File

@ -0,0 +1,28 @@
FROM {{ registry }}{{ alt_image }}:{{ branch }}
MAINTAINER alt-cloud
LABEL org.opencontainers.image.title="flannel"
LABEL org.opencontainers.image.description="Network fabric for containers"
LABEL org.opencontainers.image.source="https://github.com/flannel-io/flannel"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
{{ install_pakages(
"iproute2",
"net-tools",
"ca-certificates",
"iptables",
"iptables-nft",
"strongswan",
"wireguard-tools",
"flannel",
"wget",
) }}
RUN update-ca-trust
RUN mkdir -p /opt/bin/ && cp /usr/sbin/flanneld /opt/bin/flanneld
RUN cp /usr/libexec/flannel/mk-docker-opts.sh /opt/bin/
ENTRYPOINT ["/opt/bin/flanneld"]

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,65 @@
version: 1.0
imageSet:
- version: 1.26.9
images:
- kube-apiserver:
tag: 1.26.9
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
- kube-controllermanager:
tag: 1.26.9
alias: k8s-${BRANCH}/${IMAGE}:${TAG}
- kube-proxy:
tag: 1.26.9
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
- kube-scheduler:
tag: 1.26.9
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
- pause:
tag: 3.8
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
- coredns:
tag: v1.10.0
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
- etcd:
tag: 3.5.9
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
- alt/etcd:3.5.9
- version: 1.26.14
images:
- kube-apiserver:
tag: 1.26.14
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
- kube-controllermanager:
tag: 1.26.14
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
- kube-proxy:
tag: 1.26.14
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
- kube-scheduler:
tag: 1.26.14
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
- pause:
tag: 3.9
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
- coredns:
tag: v1.10.0
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
- etcd:
tag: 3.5.10
alias:
- k8s-${BRANCH}/${IMAGE}:${TAG}
- alt/etcd:3.5.10

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

View File

@ -0,0 +1,17 @@
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.opencontainers.image.title="apache2"
LABEL org.opencontainers.image.description="The most widely used Web server on the Internet"
LABEL org.opencontainers.image.source="http://httpd.apache.org"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.vendor="ALT Linux Team"
RUN alt_install_pakages apache2
EXPOSE 80
CMD ["/usr/sbin/httpd2", "-D", "NO_DETACH", "-k", "start"]

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

@ -639,7 +639,7 @@ class ImagesInfo:
def parse_args():
stages = ["build", "remove_dockerfiles", "render_dockerfiles", "push"]
arches = ["amd64", "386", "arm64", "arm", "ppc64le"]
branches = ["p9", "p10", "sisyphus"]
branches = ["p9", "p10", "sisyphus", "c10f1", "c10f2"]
organizations = list(ORG_DIR.iterdir())
images = [f"{o.name}/{i.name}" for o in organizations for i in o.iterdir()]
organizations = [o.name for o in organizations]

View File

@ -1,51 +1,77 @@
["k8s/kube-apiserver"]
p10 = [ "v1.26.9" ]
sisyphus = [ "v1.26.9" ]
p10 = [ "v1.28.9" ]
sisyphus = [ "v1.28.9" ]
c10f1 = [ "v1.26.15" ]
c10f2 = [ "v1.26.15" ]
["k8s/kube-controller-manager"]
p10 = [ "v1.26.9" ]
sisyphus = [ "v1.26.9" ]
p10 = [ "v1.28.9" ]
sisyphus = [ "v1.28.9" ]
c10f1 = [ "v1.26.15" ]
c10f2 = [ "v1.26.15" ]
["k8s/kube-scheduler"]
p10 = [ "v1.26.9" ]
sisyphus = [ "v1.26.9" ]
p10 = [ "v1.28.9" ]
sisyphus = [ "v1.28.9" ]
c10f1 = [ "v1.26.15" ]
c10f2 = [ "v1.26.15" ]
["k8s/kube-proxy"]
p10 = [ "v1.26.9" ]
sisyphus = [ "v1.26.9" ]
p10 = [ "v1.28.9" ]
sisyphus = [ "v1.28.9" ]
c10f1 = [ "v1.26.15" ]
c10f2 = [ "v1.26.15" ]
["k8s/pause"]
p10 = [ "3.9" ]
sisyphus = [ "3.9" ]
c10f1 = [ "3.9" ]
c10f2 = [ "3.9" ]
["k8s/etcd"]
p10 = [ "3.5.12-0" ]
sisyphus = [ "3.5.12-0" ]
c10f1 = [ "3.5.9-0" ]
c10f2 = [ "3.5.9-0" ]
["k8s/coredns"]
p10 = [ "v1.10.1" ]
sisyphus = [ "v1.10.1" ]
c10f1 = [ "v1.9.3" ]
c10f2 = [ "v1.9.3" ]
["k8s/cert-manager-cainjector"]
p10 = [ "v1.9.1" ]
sisyphus = [ "v1.11.0" ]
c10f1 = [ "v1.9.1" ]
c10f2 = [ "v1.9.1" ]
["k8s/cert-manager-controller"]
p10 = [ "v1.9.1" ]
sisyphus = [ "v1.11.0" ]
c10f1 = [ "v1.9.1" ]
c10f2 = [ "v1.9.1" ]
["k8s/cert-manager-webhook"]
p10 = [ "v1.9.1" ]
sisyphus = [ "v1.11.0" ]
c10f1 = [ "v1.9.1" ]
c10f2 = [ "v1.9.1" ]
["k8s/flannel"]
p10 = [ "v0.21.4" ]
sisyphus = [ "v0.24.2" ]
c10f1 = [ "v0.21.4" ]
c10f2 = [ "v0.21.4" ]
["k8s/flannel-cni-plugin"]
p10 = [ "v1.1.2" ]
sisyphus = [ "v1.2.0" ]
c10f1 = [ "v1.1.2" ]
c10f2 = [ "v1.1.2" ]
["k8s/trivy-node-collector"]
p10 = [ "0.0.9" ]
sisyphus = [ "0.0.9" ]
c10f1 = [ "0.0.9" ]
c10f2 = [ "0.0.9" ]