Compare commits
86 Commits
Author | SHA256 | Date | |
---|---|---|---|
54dd0b2cec | |||
e20624cf98
|
|||
afba5dedef | |||
5cbf832b02 | |||
7cf1b8ea26 | |||
83b44c9bc7 | |||
a7cb23a9c1 | |||
07505665e4 | |||
13b18090d0 | |||
22947d9847 | |||
3d087070a7 | |||
9bc3066279 | |||
ec4c51d003 | |||
70ff1fdd31 | |||
ce6519f470 | |||
0ccade5817 | |||
87f163939c | |||
f0d7ede6e0 | |||
aa677745a8 | |||
08797b0030 | |||
8b37096c3a | |||
6ca1cc0ded | |||
fc24747ee5 | |||
9c2d445b06 | |||
e5de658ae9 | |||
8cc06f4ccb | |||
9dc5ba4c52
|
|||
f92f3600e6 | |||
e379d5df4e | |||
346d6137fe | |||
1f36228510 | |||
ec7da715f4 | |||
1ad6c99257 | |||
12e91c2102
|
|||
6fb80441cd | |||
93a5f6813d | |||
bdaa422813 | |||
c25bf622bc | |||
fa57d15ff9 | |||
1a29da28ca | |||
f2d39a7025 | |||
629e96dded | |||
c190a1c800 | |||
be87fb0fc6 | |||
01dfdc5fd9 | |||
90ce8e165c | |||
ad68a91755 | |||
c37782e077 | |||
71257047ed | |||
477a4e15eb
|
|||
be0d25d8f7
|
|||
70a42948aa
|
|||
fb0f99ee20 | |||
cc8d3fe431 | |||
4ee8e8c6f2 | |||
79268b8e71 | |||
d5e487518a | |||
a7d128b8c4 | |||
d97b554f8c | |||
1ca6ea51ea | |||
c9b9e2223b | |||
027df1b35c | |||
e7448eeb1c | |||
fb4d399f0f | |||
f47b6df822 | |||
4e3f1b61fd | |||
df60bb2ed3 | |||
3a654b9826
|
|||
15e4de98a7 | |||
fe8d0ba120
|
|||
0b431c75e2 | |||
a59e253ecd | |||
b28f7a5817 | |||
c6b78eb569
|
|||
8f7747415c
|
|||
e5ba38d02f | |||
f221cf4b37 | |||
f42ac11716 | |||
08ef2fe86f | |||
ad221cd94e | |||
81a856e586 | |||
3c9ebbd7ef | |||
03018e5cd1 | |||
e91096e13e | |||
93f3abfeb5 | |||
2c4991cb24
|
23
.gitea/workflows/check_manifest.yaml
Normal file
23
.gitea/workflows/check_manifest.yaml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
name: Check Release Manifest Local Charts Versions
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches-ignore:
|
||||||
|
- "devel"
|
||||||
|
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
sync-pr-project:
|
||||||
|
name: "Check Release Manifest Local Charts Versions"
|
||||||
|
runs-on: tumbleweed
|
||||||
|
steps:
|
||||||
|
# Waiting on PR to get merged for support in upstream action/checkout action
|
||||||
|
- uses: 'https://github.com/yangskyboxlabs/action-checkout@sha256'
|
||||||
|
name: Checkout repository
|
||||||
|
with:
|
||||||
|
object-format: 'sha256'
|
||||||
|
- name: Setup dependencies
|
||||||
|
run: |
|
||||||
|
zypper in -y python3-PyYAML
|
||||||
|
- name: Check release manifest
|
||||||
|
run: |
|
||||||
|
python3 .obs/manifest-check.py
|
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,3 +1,4 @@
|
|||||||
*/.osc
|
*/.osc
|
||||||
*/__pycache__
|
*/__pycache__
|
||||||
.venv/
|
.venv/
|
||||||
|
.idea/
|
45
.obs/manifest-check.py
Normal file
45
.obs/manifest-check.py
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
import yaml
|
||||||
|
import sys
|
||||||
|
|
||||||
|
def get_chart_version(chart_name: str) -> str:
|
||||||
|
with open(f"./{chart_name}-chart/Chart.yaml") as f:
|
||||||
|
chart = yaml.safe_load(f)
|
||||||
|
return chart["version"]
|
||||||
|
|
||||||
|
def get_charts(chart):
|
||||||
|
if not chart["chart"].startswith("%%CHART_REPO%%"):
|
||||||
|
# Not a locally managed chart
|
||||||
|
return {}
|
||||||
|
|
||||||
|
chart_name = chart["chart"][len("%%CHART_REPO%%/%%CHART_PREFIX%%"):]
|
||||||
|
charts = { chart_name: chart["version"] }
|
||||||
|
for child_chart in chart.get("dependencyCharts", []) + chart.get("addonCharts", []):
|
||||||
|
charts.update(get_charts(child_chart))
|
||||||
|
return charts
|
||||||
|
|
||||||
|
def get_charts_list():
|
||||||
|
with open("./release-manifest-image/release_manifest.yaml") as f:
|
||||||
|
manifest = yaml.safe_load(f)
|
||||||
|
charts = {}
|
||||||
|
for chart in manifest["spec"]["components"]["workloads"]["helm"]:
|
||||||
|
charts.update(get_charts(chart))
|
||||||
|
return charts
|
||||||
|
|
||||||
|
def main():
|
||||||
|
print("Checking charts versions in release manifest")
|
||||||
|
success = True
|
||||||
|
charts = get_charts_list()
|
||||||
|
for chart in charts:
|
||||||
|
expected_version = get_chart_version(chart)
|
||||||
|
if expected_version != charts[chart]:
|
||||||
|
success = False
|
||||||
|
print(f"{chart}: Expected: {expected_version}, Got: {charts[chart]}")
|
||||||
|
if not success:
|
||||||
|
sys.exit(1)
|
||||||
|
else:
|
||||||
|
print("All local charts in release manifest are using the right version")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
16
_config
16
_config
@@ -60,6 +60,7 @@ BuildFlags: onlybuild:release-manifest-image
|
|||||||
BuildFlags: excludebuild:endpoint-copier-operator-image
|
BuildFlags: excludebuild:endpoint-copier-operator-image
|
||||||
BuildFlags: excludebuild:ironic-image
|
BuildFlags: excludebuild:ironic-image
|
||||||
BuildFlags: excludebuild:ironic-ipa-downloader-image
|
BuildFlags: excludebuild:ironic-ipa-downloader-image
|
||||||
|
BuildFlags: excludebuild:kiwi-builder-image
|
||||||
BuildFlags: excludebuild:kubectl-image
|
BuildFlags: excludebuild:kubectl-image
|
||||||
BuildFlags: excludebuild:kube-rbac-proxy-image
|
BuildFlags: excludebuild:kube-rbac-proxy-image
|
||||||
BuildFlags: excludebuild:metallb-controller-image
|
BuildFlags: excludebuild:metallb-controller-image
|
||||||
@@ -109,6 +110,11 @@ BuildFlags: onlybuild:release-manifest-image
|
|||||||
# Publish multi-arch container images only once all archs have been built
|
# Publish multi-arch container images only once all archs have been built
|
||||||
PublishFlags: archsync
|
PublishFlags: archsync
|
||||||
|
|
||||||
|
# skopeo and umoci are used by build scripts to list packages
|
||||||
|
Substitute: system-packages:podman podman buildah createrepo_c release-compare skopeo umoci
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if "%_repository" == "images"
|
||||||
# skopeo and umoci are used by build scripts to list packages
|
# skopeo and umoci are used by build scripts to list packages
|
||||||
Substitute: system-packages:podman podman buildah createrepo_c release-compare edge-build-checks skopeo umoci
|
Substitute: system-packages:podman podman buildah createrepo_c release-compare edge-build-checks skopeo umoci
|
||||||
|
|
||||||
@@ -123,6 +129,8 @@ BuildFlags: onlybuild:release-manifest-image
|
|||||||
BuildFlags: dockerarg:SLE_VERSION=16.0
|
BuildFlags: dockerarg:SLE_VERSION=16.0
|
||||||
BuildFlags: onlybuild:kiwi-builder-image
|
BuildFlags: onlybuild:kiwi-builder-image
|
||||||
|
|
||||||
|
Substitute: system-packages:podman podman buildah createrepo_c release-compare skopeo umoci
|
||||||
|
|
||||||
# Publish multi-arch container images only once all archs have been built
|
# Publish multi-arch container images only once all archs have been built
|
||||||
PublishFlags: archsync
|
PublishFlags: archsync
|
||||||
|
|
||||||
@@ -140,7 +148,13 @@ BuildFlags: onlybuild:release-manifest-image
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%else
|
%else
|
||||||
BuildFlags: excludebuild:kiwi-builder-image
|
%if "%{sub %{reverse %_project} 1 7}" != "%{reverse :ToTest}" && "%{sub %{reverse %_project} 1 9}" != "%{reverse :Snapshot}"
|
||||||
|
BuildFlags: excludebuild:kiwi-builder-image
|
||||||
|
%else
|
||||||
|
%ifarch aarch64
|
||||||
|
BuildFlags: onlybuild:kiwi-builder-image
|
||||||
|
%endif
|
||||||
|
%endif
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
|
||||||
|
3
_meta
3
_meta
@@ -23,6 +23,9 @@
|
|||||||
<disable/>
|
<disable/>
|
||||||
<enable repository="charts"/>
|
<enable repository="charts"/>
|
||||||
<enable repository="test_manifest_images"/>
|
<enable repository="test_manifest_images"/>
|
||||||
|
{%- if for_release %}
|
||||||
|
<enable repository="releasecharts"/>
|
||||||
|
{%- endif %}
|
||||||
</build>
|
</build>
|
||||||
<publish>
|
<publish>
|
||||||
<disable repository="phantomcharts"/>
|
<disable repository="phantomcharts"/>
|
||||||
|
@@ -1,6 +1,5 @@
|
|||||||
#!BuildTag: %%CHART_PREFIX%%akri-dashboard-extension:%%CHART_MAJOR%%.0.1
|
#!BuildTag: %%CHART_PREFIX%%akri-dashboard-extension:%%CHART_MAJOR%%.0.2_up1.3.1
|
||||||
#!BuildTag: %%CHART_PREFIX%%akri-dashboard-extension:%%CHART_MAJOR%%.0.1_up1.3.0
|
#!BuildTag: %%CHART_PREFIX%%akri-dashboard-extension:%%CHART_MAJOR%%.0.2_up1.3.1-%RELEASE%
|
||||||
#!BuildTag: %%CHART_PREFIX%%akri-dashboard-extension:%%CHART_MAJOR%%.0.1_up1.3.0-%RELEASE%
|
|
||||||
annotations:
|
annotations:
|
||||||
catalog.cattle.io/certified: rancher
|
catalog.cattle.io/certified: rancher
|
||||||
catalog.cattle.io/namespace: cattle-ui-plugin-system
|
catalog.cattle.io/namespace: cattle-ui-plugin-system
|
||||||
@@ -10,13 +9,13 @@ annotations:
|
|||||||
catalog.cattle.io/ui-component: plugins
|
catalog.cattle.io/ui-component: plugins
|
||||||
catalog.cattle.io/display-name: Akri
|
catalog.cattle.io/display-name: Akri
|
||||||
catalog.cattle.io/rancher-version: '>= 2.11.0-0'
|
catalog.cattle.io/rancher-version: '>= 2.11.0-0'
|
||||||
catalog.cattle.io/ui-extensions-version: '>= 3.0.4 < 4.0.0'
|
catalog.cattle.io/ui-extensions-version: '>= 3.0.2 < 4.0.0'
|
||||||
catalog.cattle.io/kube-version: '>= v1.26.0-0'
|
catalog.cattle.io/kube-version: '>= v1.26.0-0'
|
||||||
apiVersion: v2
|
apiVersion: v2
|
||||||
appVersion: 303.0.1+up1.3.0
|
appVersion: 303.0.2+up1.3.1
|
||||||
description: 'SUSE Edge: Akri extension for Rancher Dashboard'
|
description: 'SUSE Edge: Akri extension for Rancher Dashboard'
|
||||||
name: akri-dashboard-extension
|
name: akri-dashboard-extension
|
||||||
type: application
|
type: application
|
||||||
version: "%%CHART_MAJOR%%.0.1+up1.3.0"
|
version: "%%CHART_MAJOR%%.0.2+up1.3.1"
|
||||||
icon: >-
|
icon: >-
|
||||||
https://raw.githubusercontent.com/cncf/artwork/main/projects/akri/icon/color/akri-icon-color.svg
|
https://raw.githubusercontent.com/cncf/artwork/main/projects/akri/icon/color/akri-icon-color.svg
|
||||||
|
@@ -8,7 +8,7 @@ spec:
|
|||||||
plugin:
|
plugin:
|
||||||
name: {{ include "extension-server.fullname" . }}
|
name: {{ include "extension-server.fullname" . }}
|
||||||
version: {{ (semver (default .Chart.AppVersion .Values.plugin.versionOverride)).Original }}
|
version: {{ (semver (default .Chart.AppVersion .Values.plugin.versionOverride)).Original }}
|
||||||
endpoint: https://raw.githubusercontent.com/suse-edge/dashboard-extensions/gh-pages/extensions/akri-dashboard-extension/303.0.1+up1.3.0
|
endpoint: https://raw.githubusercontent.com/suse-edge/dashboard-extensions/gh-pages/extensions/akri-dashboard-extension/303.0.2+up1.3.1
|
||||||
noCache: {{ .Values.plugin.noCache }}
|
noCache: {{ .Values.plugin.noCache }}
|
||||||
noAuth: {{ .Values.plugin.noAuth }}
|
noAuth: {{ .Values.plugin.noAuth }}
|
||||||
metadata: {{ include "extension-server.pluginMetadata" . | indent 6 }}
|
metadata: {{ include "extension-server.pluginMetadata" . | indent 6 }}
|
||||||
|
@@ -8,5 +8,5 @@ plugin:
|
|||||||
metadata:
|
metadata:
|
||||||
catalog.cattle.io/display-name: Akri
|
catalog.cattle.io/display-name: Akri
|
||||||
catalog.cattle.io/rancher-version: ">= 2.11.0-0"
|
catalog.cattle.io/rancher-version: ">= 2.11.0-0"
|
||||||
catalog.cattle.io/ui-extensions-version: ">= 3.0.4 < 4.0.0"
|
catalog.cattle.io/ui-extensions-version: ">= 3.0.2 < 4.0.0"
|
||||||
catalog.cattle.io/kube-version: ">= v1.26.0-0"
|
catalog.cattle.io/kube-version: ">= v1.26.0-0"
|
||||||
|
@@ -1,13 +1,13 @@
|
|||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
#!BuildTag: %%IMG_PREFIX%%baremetal-operator:%%baremetal-operator_version%%
|
#!BuildTag: %%IMG_PREFIX%%baremetal-operator:%%baremetal-operator_version%%.0
|
||||||
#!BuildTag: %%IMG_PREFIX%%baremetal-operator:%%baremetal-operator_version%%-%RELEASE%
|
#!BuildTag: %%IMG_PREFIX%%baremetal-operator:%%baremetal-operator_version%%.0-%RELEASE%
|
||||||
#!BuildVersion: 15.6
|
#!BuildVersion: 15.6
|
||||||
ARG SLE_VERSION
|
ARG SLE_VERSION
|
||||||
FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro
|
FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro
|
||||||
|
|
||||||
FROM registry.suse.com/bci/bci-base:$SLE_VERSION AS base
|
FROM registry.suse.com/bci/bci-base:$SLE_VERSION AS base
|
||||||
COPY --from=micro / /installroot/
|
COPY --from=micro / /installroot/
|
||||||
RUN zypper --installroot /installroot --non-interactive install --no-recommends baremetal-operator iproute2 bind-utils vim shadow; zypper -n clean; rm -rf /var/log/*
|
RUN zypper --installroot /installroot --non-interactive install --no-recommends baremetal-operator inotify-tools procps iproute2 bind-utils vim shadow; zypper -n clean; rm -rf /var/log/*
|
||||||
|
|
||||||
FROM micro AS final
|
FROM micro AS final
|
||||||
# Define labels according to https://en.opensuse.org/Building_derived_containers
|
# Define labels according to https://en.opensuse.org/Building_derived_containers
|
||||||
@@ -19,7 +19,7 @@ LABEL org.opencontainers.image.version="%%baremetal-operator_version%%"
|
|||||||
LABEL org.opencontainers.image.url="https://www.suse.com/products/server/"
|
LABEL org.opencontainers.image.url="https://www.suse.com/products/server/"
|
||||||
LABEL org.opencontainers.image.created="%BUILDTIME%"
|
LABEL org.opencontainers.image.created="%BUILDTIME%"
|
||||||
LABEL org.opencontainers.image.vendor="SUSE LLC"
|
LABEL org.opencontainers.image.vendor="SUSE LLC"
|
||||||
LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%baremetal-operator:%%baremetal-operator_version%%-%RELEASE%"
|
LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%baremetal-operator:%%baremetal-operator_version%%.1-%RELEASE%"
|
||||||
LABEL org.openbuildservice.disturl="%DISTURL%"
|
LABEL org.openbuildservice.disturl="%DISTURL%"
|
||||||
LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%"
|
LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%"
|
||||||
LABEL com.suse.eula="SUSE Combined EULA February 2024"
|
LABEL com.suse.eula="SUSE Combined EULA February 2024"
|
||||||
@@ -29,6 +29,8 @@ LABEL com.suse.release-stage="released"
|
|||||||
# endlabelprefix
|
# endlabelprefix
|
||||||
|
|
||||||
COPY --from=base /installroot /
|
COPY --from=base /installroot /
|
||||||
|
COPY bmo-run /usr/bin/bmo-run
|
||||||
|
RUN chmod +x /usr/bin/bmo-run
|
||||||
RUN groupadd -r -g 11000 bmo
|
RUN groupadd -r -g 11000 bmo
|
||||||
RUN useradd -u 11000 -g 11000 bmo
|
RUN useradd -u 11000 -g 11000 bmo
|
||||||
ENTRYPOINT [ "/usr/bin/baremetal-operator" ]
|
ENTRYPOINT [ "/usr/bin/bmo-run" ]
|
||||||
|
12
baremetal-operator-image/bmo-run
Normal file
12
baremetal-operator-image/bmo-run
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
export RESTART_CONTAINER_CERTIFICATE_UPDATED=${RESTART_CONTAINER_CERTIFICATE_UPDATED:-"false"}
|
||||||
|
export IRONIC_CACERT_FILE=${IRONIC_CACERT_FILE:-"/opt/metal3/certs/ca/tls.crt"}
|
||||||
|
|
||||||
|
if [[ "${RESTART_CONTAINER_CERTIFICATE_UPDATED}" == "true" ]]; then
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
inotifywait -m -e delete_self "${IRONIC_CACERT_FILE}" | while read -r file event; do
|
||||||
|
kill $(pgrep baremetal-opera)
|
||||||
|
done &
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec /usr/bin/baremetal-operator $@
|
@@ -0,0 +1,529 @@
|
|||||||
|
From 19cbf4febbf042248266188e3629e0c88e06906a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Nicolas Belouin <nicolas.belouin@suse.com>
|
||||||
|
Date: Thu, 26 Jun 2025 09:37:19 +0200
|
||||||
|
Subject: [PATCH] Allow configuring different IPA images per architecture
|
||||||
|
|
||||||
|
When using multiple architectures, having a way to set the Ironic
|
||||||
|
"bootloader" (a.k.a EFI partition) accordingly is important, so this
|
||||||
|
commit adds a new `DEPLOY_BOOTLOADER_URL` variable to set this Ironic
|
||||||
|
option.
|
||||||
|
|
||||||
|
This commit adds a set of new environment variables allowing to specify
|
||||||
|
different URLs per target CPU architecture for the IPA image:
|
||||||
|
- `DEPLOY_KERNEL_URL_<ARCH>`
|
||||||
|
- `DEPLOY_RAMDISK_URL_<ARCH>`
|
||||||
|
- `DEPLOY_ISO_URL_<ARCH>`
|
||||||
|
- `DEPLOY_BOOTLOADER_URL_<ARCH>`
|
||||||
|
|
||||||
|
Non suffixed variables are used as defaults, if there is no architecture
|
||||||
|
specific image(s) defined for the BMH CPU architecture.
|
||||||
|
|
||||||
|
Signed-off-by: Nicolas Belouin <nicolas.belouin@suse.com>
|
||||||
|
---
|
||||||
|
.../metal3.io/baremetalhost_controller.go | 1 +
|
||||||
|
pkg/imageprovider/imageprovider.go | 1 +
|
||||||
|
pkg/provisioner/ironic/factory.go | 61 ++++++++++----
|
||||||
|
pkg/provisioner/ironic/factory_test.go | 25 ++++--
|
||||||
|
pkg/provisioner/ironic/ironic.go | 46 ++++++++---
|
||||||
|
pkg/provisioner/ironic/ironic_test.go | 10 ++-
|
||||||
|
pkg/provisioner/ironic/register_test.go | 80 ++++++++++++-------
|
||||||
|
pkg/provisioner/provisioner.go | 1 +
|
||||||
|
8 files changed, 160 insertions(+), 65 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/internal/controller/metal3.io/baremetalhost_controller.go b/internal/controller/metal3.io/baremetalhost_controller.go
|
||||||
|
index d04bb618..a4ea9d19 100644
|
||||||
|
--- a/internal/controller/metal3.io/baremetalhost_controller.go
|
||||||
|
+++ b/internal/controller/metal3.io/baremetalhost_controller.go
|
||||||
|
@@ -847,6 +847,7 @@ func (r *BareMetalHostReconciler) registerHost(prov provisioner.Provisioner, inf
|
||||||
|
PreprovisioningNetworkData: preprovisioningNetworkData,
|
||||||
|
HasCustomDeploy: hasCustomDeploy(info.host),
|
||||||
|
DisablePowerOff: info.host.Spec.DisablePowerOff,
|
||||||
|
+ CPUArchitecture: getHostArchitecture(info.host),
|
||||||
|
},
|
||||||
|
credsChanged,
|
||||||
|
info.host.Status.ErrorType == metal3api.RegistrationError)
|
||||||
|
diff --git a/pkg/imageprovider/imageprovider.go b/pkg/imageprovider/imageprovider.go
|
||||||
|
index 459fdf2d..f307c041 100644
|
||||||
|
--- a/pkg/imageprovider/imageprovider.go
|
||||||
|
+++ b/pkg/imageprovider/imageprovider.go
|
||||||
|
@@ -20,6 +20,7 @@ type ImageData struct {
|
||||||
|
type GeneratedImage struct {
|
||||||
|
ImageURL string
|
||||||
|
KernelURL string
|
||||||
|
+ BootloaderURL string
|
||||||
|
ExtraKernelParams string
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/pkg/provisioner/ironic/factory.go b/pkg/provisioner/ironic/factory.go
|
||||||
|
index 95cc21b4..5f4189bb 100644
|
||||||
|
--- a/pkg/provisioner/ironic/factory.go
|
||||||
|
+++ b/pkg/provisioner/ironic/factory.go
|
||||||
|
@@ -58,9 +58,10 @@ func (f *ironicProvisionerFactory) init(havePreprovImgBuilder bool) error {
|
||||||
|
f.log.Info("ironic settings",
|
||||||
|
"endpoint", ironicEndpoint,
|
||||||
|
"ironicAuthType", ironicAuth.Type,
|
||||||
|
- "deployKernelURL", f.config.deployKernelURL,
|
||||||
|
- "deployRamdiskURL", f.config.deployRamdiskURL,
|
||||||
|
- "deployISOURL", f.config.deployISOURL,
|
||||||
|
+ "defaultDeployKernelURL", f.config.defaultDeployConfig.kernelURL,
|
||||||
|
+ "defaultDeployRamdiskURL", f.config.defaultDeployConfig.ramdiskURL,
|
||||||
|
+ "defaultDeployISOURL", f.config.defaultDeployConfig.ISOURL,
|
||||||
|
+ "defaultDeployBootloaderURL", f.config.defaultDeployConfig.bootloaderURL,
|
||||||
|
"liveISOForcePersistentBootDevice", f.config.liveISOForcePersistentBootDevice,
|
||||||
|
"CACertFile", tlsConf.TrustedCAFile,
|
||||||
|
"ClientCertFile", tlsConf.ClientCertificateFile,
|
||||||
|
@@ -105,27 +106,55 @@ func (f ironicProvisionerFactory) NewProvisioner(ctx context.Context, hostData p
|
||||||
|
return f.ironicProvisioner(ctx, hostData, publisher)
|
||||||
|
}
|
||||||
|
|
||||||
|
-func loadConfigFromEnv(havePreprovImgBuilder bool) (ironicConfig, error) {
|
||||||
|
- c := ironicConfig{
|
||||||
|
- havePreprovImgBuilder: havePreprovImgBuilder,
|
||||||
|
+func loadDeployURLFromEnv(arch string, havePreprovImgBuilder bool) (ironicDeployConfig, error) {
|
||||||
|
+ c := ironicDeployConfig{}
|
||||||
|
+ var suffix string
|
||||||
|
+ if arch != "" {
|
||||||
|
+ suffix = "_" + strings.ToUpper(arch)
|
||||||
|
}
|
||||||
|
+ c.kernelURL = os.Getenv("DEPLOY_KERNEL_URL" + suffix)
|
||||||
|
+ c.ramdiskURL = os.Getenv("DEPLOY_RAMDISK_URL" + suffix)
|
||||||
|
+ c.ISOURL = os.Getenv("DEPLOY_ISO_URL" + suffix)
|
||||||
|
+ c.bootloaderURL = os.Getenv("DEPLOY_BOOTLOADER_URL" + suffix)
|
||||||
|
|
||||||
|
- c.deployKernelURL = os.Getenv("DEPLOY_KERNEL_URL")
|
||||||
|
- c.deployRamdiskURL = os.Getenv("DEPLOY_RAMDISK_URL")
|
||||||
|
- c.deployISOURL = os.Getenv("DEPLOY_ISO_URL")
|
||||||
|
if !havePreprovImgBuilder {
|
||||||
|
- if c.deployISOURL == "" &&
|
||||||
|
- (c.deployKernelURL == "" || c.deployRamdiskURL == "") {
|
||||||
|
- return c, errors.New("either DEPLOY_KERNEL_URL and DEPLOY_RAMDISK_URL or DEPLOY_ISO_URL must be set")
|
||||||
|
- }
|
||||||
|
- if (c.deployKernelURL == "" && c.deployRamdiskURL != "") ||
|
||||||
|
- (c.deployKernelURL != "" && c.deployRamdiskURL == "") {
|
||||||
|
+ if (c.kernelURL == "" && c.ramdiskURL != "") ||
|
||||||
|
+ (c.kernelURL != "" && c.ramdiskURL == "") {
|
||||||
|
return c, errors.New("DEPLOY_KERNEL_URL and DEPLOY_RAMDISK_URL can only be set together")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
- if c.deployKernelURL == "" && c.deployRamdiskURL != "" {
|
||||||
|
+ if c.kernelURL == "" && c.ramdiskURL != "" {
|
||||||
|
return c, errors.New("DEPLOY_RAMDISK_URL requires DEPLOY_KERNEL_URL to be set also")
|
||||||
|
}
|
||||||
|
+ return c, nil
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+func loadConfigFromEnv(havePreprovImgBuilder bool) (ironicConfig, error) {
|
||||||
|
+ c := ironicConfig{
|
||||||
|
+ havePreprovImgBuilder: havePreprovImgBuilder,
|
||||||
|
+ archDeployConfig: make(map[string]ironicDeployConfig),
|
||||||
|
+ }
|
||||||
|
+ var err error
|
||||||
|
+ c.defaultDeployConfig, err = loadDeployURLFromEnv("", havePreprovImgBuilder)
|
||||||
|
+ if err != nil {
|
||||||
|
+ return c, err
|
||||||
|
+ }
|
||||||
|
+ for _, arch := range supportedArch {
|
||||||
|
+ archDeployConfig, err := loadDeployURLFromEnv(arch, havePreprovImgBuilder)
|
||||||
|
+ // Only register valid arch specific deploy configuration
|
||||||
|
+ if archDeployConfig.ISOURL != "" || (archDeployConfig.kernelURL != "" && archDeployConfig.ramdiskURL != "") {
|
||||||
|
+ c.archDeployConfig[arch] = archDeployConfig
|
||||||
|
+ }
|
||||||
|
+ if err != nil {
|
||||||
|
+ return c, err
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ if !havePreprovImgBuilder {
|
||||||
|
+ if c.defaultDeployConfig.ISOURL == "" &&
|
||||||
|
+ (c.defaultDeployConfig.kernelURL == "" || c.defaultDeployConfig.ramdiskURL == "") {
|
||||||
|
+ return c, errors.New("either DEPLOY_KERNEL_URL and DEPLOY_RAMDISK_URL or DEPLOY_ISO_URL must be set")
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
|
||||||
|
c.maxBusyHosts = 20
|
||||||
|
if maxHostsStr := os.Getenv("PROVISIONING_LIMIT"); maxHostsStr != "" {
|
||||||
|
diff --git a/pkg/provisioner/ironic/factory_test.go b/pkg/provisioner/ironic/factory_test.go
|
||||||
|
index db47d8b2..acdedf1c 100644
|
||||||
|
--- a/pkg/provisioner/ironic/factory_test.go
|
||||||
|
+++ b/pkg/provisioner/ironic/factory_test.go
|
||||||
|
@@ -14,6 +14,11 @@ type EnvFixture struct {
|
||||||
|
kernelURL string
|
||||||
|
ramdiskURL string
|
||||||
|
isoURL string
|
||||||
|
+ bootloaderURL string
|
||||||
|
+ aarch64kernelURL string
|
||||||
|
+ aarch64ramdiskURL string
|
||||||
|
+ aarch64isoURL string
|
||||||
|
+ aarch64bootloaderURL string
|
||||||
|
liveISOForcePersistentBootDevice string
|
||||||
|
ironicCACertFile string
|
||||||
|
ironicClientCertFile string
|
||||||
|
@@ -49,6 +54,11 @@ func (f *EnvFixture) SetUp() {
|
||||||
|
f.replace("DEPLOY_KERNEL_URL", f.kernelURL)
|
||||||
|
f.replace("DEPLOY_RAMDISK_URL", f.ramdiskURL)
|
||||||
|
f.replace("DEPLOY_ISO_URL", f.isoURL)
|
||||||
|
+ f.replace("DEPLOY_BOOTLOADER_URL", f.bootloaderURL)
|
||||||
|
+ f.replace("DEPLOY_KERNEL_URL_AARCH64", f.aarch64kernelURL)
|
||||||
|
+ f.replace("DEPLOY_RAMDISK_URL_AARCH64", f.aarch64ramdiskURL)
|
||||||
|
+ f.replace("DEPLOY_ISO_URL_AARCH64", f.aarch64isoURL)
|
||||||
|
+ f.replace("DEPLOY_BOOTLOADER_URL_AARCH64", f.aarch64bootloaderURL)
|
||||||
|
f.replace("LIVE_ISO_FORCE_PERSISTENT_BOOT_DEVICE", f.liveISOForcePersistentBootDevice)
|
||||||
|
f.replace("IRONIC_CACERT_FILE", f.ironicCACertFile)
|
||||||
|
f.replace("IRONIC_CLIENT_CERT_FILE", f.ironicClientCertFile)
|
||||||
|
@@ -58,9 +68,14 @@ func (f *EnvFixture) SetUp() {
|
||||||
|
}
|
||||||
|
func (f EnvFixture) VerifyConfig(t *testing.T, c ironicConfig, _ string) {
|
||||||
|
t.Helper()
|
||||||
|
- assert.Equal(t, f.kernelURL, c.deployKernelURL)
|
||||||
|
- assert.Equal(t, f.ramdiskURL, c.deployRamdiskURL)
|
||||||
|
- assert.Equal(t, f.isoURL, c.deployISOURL)
|
||||||
|
+ assert.Equal(t, f.kernelURL, c.defaultDeployConfig.kernelURL)
|
||||||
|
+ assert.Equal(t, f.ramdiskURL, c.defaultDeployConfig.ramdiskURL)
|
||||||
|
+ assert.Equal(t, f.isoURL, c.defaultDeployConfig.ISOURL)
|
||||||
|
+ assert.Equal(t, f.bootloaderURL, c.defaultDeployConfig.bootloaderURL)
|
||||||
|
+ assert.Equal(t, f.aarch64kernelURL, c.archDeployConfig["aarch64"].kernelURL)
|
||||||
|
+ assert.Equal(t, f.aarch64ramdiskURL, c.archDeployConfig["aarch64"].ramdiskURL)
|
||||||
|
+ assert.Equal(t, f.aarch64isoURL, c.archDeployConfig["aarch64"].ISOURL)
|
||||||
|
+ assert.Equal(t, f.aarch64bootloaderURL, c.archDeployConfig["aarch64"].bootloaderURL)
|
||||||
|
assert.Equal(t, f.liveISOForcePersistentBootDevice, c.liveISOForcePersistentBootDevice)
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -108,14 +123,14 @@ func TestLoadConfigFromEnv(t *testing.T) {
|
||||||
|
env: EnvFixture{
|
||||||
|
kernelURL: "http://kernel",
|
||||||
|
},
|
||||||
|
- expectedError: "either DEPLOY_KERNEL_URL and DEPLOY_RAMDISK_URL or DEPLOY_ISO_URL must be set",
|
||||||
|
+ expectedError: "DEPLOY_KERNEL_URL and DEPLOY_RAMDISK_URL can only be set together",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "only ramdisk",
|
||||||
|
env: EnvFixture{
|
||||||
|
ramdiskURL: "http://ramdisk",
|
||||||
|
},
|
||||||
|
- expectedError: "either DEPLOY_KERNEL_URL and DEPLOY_RAMDISK_URL or DEPLOY_ISO_URL must be set",
|
||||||
|
+ expectedError: "DEPLOY_KERNEL_URL and DEPLOY_RAMDISK_URL can only be set together",
|
||||||
|
expectedImgBuildError: "DEPLOY_RAMDISK_URL requires DEPLOY_KERNEL_URL to be set also",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
diff --git a/pkg/provisioner/ironic/ironic.go b/pkg/provisioner/ironic/ironic.go
|
||||||
|
index 4bc753f2..52d03479 100644
|
||||||
|
--- a/pkg/provisioner/ironic/ironic.go
|
||||||
|
+++ b/pkg/provisioner/ironic/ironic.go
|
||||||
|
@@ -30,6 +30,7 @@ var (
|
||||||
|
subscriptionRequeueDelay = time.Second * 10
|
||||||
|
introspectionRequeueDelay = time.Second * 15
|
||||||
|
softPowerOffTimeout = time.Second * 180
|
||||||
|
+ supportedArch = [...]string{"x86_64", "aarch64"}
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
@@ -41,6 +42,7 @@ const (
|
||||||
|
nameSeparator = "~"
|
||||||
|
customDeployPriority = 80
|
||||||
|
|
||||||
|
+ bootloaderKey = "bootloader"
|
||||||
|
deployKernelKey = "deploy_kernel"
|
||||||
|
deployRamdiskKey = "deploy_ramdisk"
|
||||||
|
deployISOKey = "deploy_iso"
|
||||||
|
@@ -61,11 +63,17 @@ func NewMacAddressConflictError(address, node string) error {
|
||||||
|
return macAddressConflictError{Address: address, ExistingNode: node}
|
||||||
|
}
|
||||||
|
|
||||||
|
+type ironicDeployConfig struct {
|
||||||
|
+ kernelURL string
|
||||||
|
+ ramdiskURL string
|
||||||
|
+ bootloaderURL string
|
||||||
|
+ ISOURL string
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
type ironicConfig struct {
|
||||||
|
havePreprovImgBuilder bool
|
||||||
|
- deployKernelURL string
|
||||||
|
- deployRamdiskURL string
|
||||||
|
- deployISOURL string
|
||||||
|
+ defaultDeployConfig ironicDeployConfig
|
||||||
|
+ archDeployConfig map[string]ironicDeployConfig
|
||||||
|
liveISOForcePersistentBootDevice string
|
||||||
|
maxBusyHosts int
|
||||||
|
externalURL string
|
||||||
|
@@ -318,7 +326,7 @@ func (p *ironicProvisioner) createPXEEnabledNodePort(uuid, macAddress string) er
|
||||||
|
func (p *ironicProvisioner) configureImages(data provisioner.ManagementAccessData, ironicNode *nodes.Node, bmcAccess bmc.AccessDetails) (result provisioner.Result, err error) {
|
||||||
|
updater := clients.UpdateOptsBuilder(p.log)
|
||||||
|
|
||||||
|
- deployImageInfo := setDeployImage(p.config, bmcAccess, data.PreprovisioningImage)
|
||||||
|
+ deployImageInfo := setDeployImage(p.config, bmcAccess, data.PreprovisioningImage, data.CPUArchitecture)
|
||||||
|
updater.SetDriverInfoOpts(deployImageInfo, ironicNode)
|
||||||
|
|
||||||
|
// NOTE(dtantsur): It is risky to update image information for active nodes since it may affect the ability to clean up.
|
||||||
|
@@ -430,14 +438,20 @@ func setExternalURL(p *ironicProvisioner, driverInfo map[string]interface{}) map
|
||||||
|
return driverInfo
|
||||||
|
}
|
||||||
|
|
||||||
|
-func setDeployImage(config ironicConfig, accessDetails bmc.AccessDetails, hostImage *provisioner.PreprovisioningImage) clients.UpdateOptsData {
|
||||||
|
+func setDeployImage(config ironicConfig, accessDetails bmc.AccessDetails, hostImage *provisioner.PreprovisioningImage, cpuArch string) clients.UpdateOptsData {
|
||||||
|
deployImageInfo := clients.UpdateOptsData{
|
||||||
|
+ bootloaderKey: nil,
|
||||||
|
deployKernelKey: nil,
|
||||||
|
deployRamdiskKey: nil,
|
||||||
|
deployISOKey: nil,
|
||||||
|
kernelParamsKey: nil,
|
||||||
|
}
|
||||||
|
|
||||||
|
+ deployConfig, ok := config.archDeployConfig[cpuArch]
|
||||||
|
+ if !ok {
|
||||||
|
+ deployConfig = config.defaultDeployConfig
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
allowISO := accessDetails.SupportsISOPreprovisioningImage()
|
||||||
|
|
||||||
|
if hostImage != nil {
|
||||||
|
@@ -450,10 +464,15 @@ func setDeployImage(config ironicConfig, accessDetails bmc.AccessDetails, hostIm
|
||||||
|
case metal3api.ImageFormatInitRD:
|
||||||
|
if hostImage.KernelURL != "" {
|
||||||
|
deployImageInfo[deployKernelKey] = hostImage.KernelURL
|
||||||
|
- } else if config.deployKernelURL == "" {
|
||||||
|
+ } else if deployConfig.kernelURL == "" {
|
||||||
|
return nil
|
||||||
|
} else {
|
||||||
|
- deployImageInfo[deployKernelKey] = config.deployKernelURL
|
||||||
|
+ deployImageInfo[deployKernelKey] = deployConfig.kernelURL
|
||||||
|
+ }
|
||||||
|
+ if hostImage.BootloaderURL != "" {
|
||||||
|
+ deployImageInfo[bootloaderKey] = hostImage.BootloaderURL
|
||||||
|
+ } else if deployConfig.bootloaderURL != "" {
|
||||||
|
+ deployImageInfo[bootloaderKey] = deployConfig.bootloaderURL
|
||||||
|
}
|
||||||
|
deployImageInfo[deployRamdiskKey] = hostImage.ImageURL
|
||||||
|
if hostImage.ExtraKernelParams != "" {
|
||||||
|
@@ -465,13 +484,16 @@ func setDeployImage(config ironicConfig, accessDetails bmc.AccessDetails, hostIm
|
||||||
|
}
|
||||||
|
|
||||||
|
if !config.havePreprovImgBuilder {
|
||||||
|
- if allowISO && config.deployISOURL != "" {
|
||||||
|
- deployImageInfo[deployISOKey] = config.deployISOURL
|
||||||
|
+ if allowISO && deployConfig.ISOURL != "" {
|
||||||
|
+ deployImageInfo[deployISOKey] = deployConfig.ISOURL
|
||||||
|
return deployImageInfo
|
||||||
|
}
|
||||||
|
- if config.deployKernelURL != "" && config.deployRamdiskURL != "" {
|
||||||
|
- deployImageInfo[deployKernelKey] = config.deployKernelURL
|
||||||
|
- deployImageInfo[deployRamdiskKey] = config.deployRamdiskURL
|
||||||
|
+ if deployConfig.kernelURL != "" && deployConfig.ramdiskURL != "" {
|
||||||
|
+ deployImageInfo[deployKernelKey] = deployConfig.kernelURL
|
||||||
|
+ deployImageInfo[deployRamdiskKey] = deployConfig.ramdiskURL
|
||||||
|
+ if deployConfig.bootloaderURL != "" {
|
||||||
|
+ deployImageInfo[bootloaderKey] = deployConfig.bootloaderURL
|
||||||
|
+ }
|
||||||
|
return deployImageInfo
|
||||||
|
}
|
||||||
|
}
|
||||||
|
diff --git a/pkg/provisioner/ironic/ironic_test.go b/pkg/provisioner/ironic/ironic_test.go
|
||||||
|
index a8759c44..f65592e6 100644
|
||||||
|
--- a/pkg/provisioner/ironic/ironic_test.go
|
||||||
|
+++ b/pkg/provisioner/ironic/ironic_test.go
|
||||||
|
@@ -27,10 +27,12 @@ func newTestProvisionerFactory() ironicProvisionerFactory {
|
||||||
|
return ironicProvisionerFactory{
|
||||||
|
log: logf.Log,
|
||||||
|
config: ironicConfig{
|
||||||
|
- deployKernelURL: "http://deploy.test/ipa.kernel",
|
||||||
|
- deployRamdiskURL: "http://deploy.test/ipa.initramfs",
|
||||||
|
- deployISOURL: "http://deploy.test/ipa.iso",
|
||||||
|
- maxBusyHosts: 20,
|
||||||
|
+ defaultDeployConfig: ironicDeployConfig{
|
||||||
|
+ kernelURL: "http://deploy.test/ipa.kernel",
|
||||||
|
+ ramdiskURL: "http://deploy.test/ipa.initramfs",
|
||||||
|
+ ISOURL: "http://deploy.test/ipa.iso",
|
||||||
|
+ },
|
||||||
|
+ maxBusyHosts: 20,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
diff --git a/pkg/provisioner/ironic/register_test.go b/pkg/provisioner/ironic/register_test.go
|
||||||
|
index c7d6bc75..9ded5946 100644
|
||||||
|
--- a/pkg/provisioner/ironic/register_test.go
|
||||||
|
+++ b/pkg/provisioner/ironic/register_test.go
|
||||||
|
@@ -1112,9 +1112,11 @@ func TestSetDeployImage(t *testing.T) {
|
||||||
|
Scenario: "iso no imgbuilder",
|
||||||
|
Config: ironicConfig{
|
||||||
|
havePreprovImgBuilder: false,
|
||||||
|
- deployKernelURL: localKernel,
|
||||||
|
- deployRamdiskURL: localRamdisk,
|
||||||
|
- deployISOURL: localIso,
|
||||||
|
+ defaultDeployConfig: ironicDeployConfig{
|
||||||
|
+ kernelURL: localKernel,
|
||||||
|
+ ramdiskURL: localRamdisk,
|
||||||
|
+ ISOURL: localIso,
|
||||||
|
+ },
|
||||||
|
},
|
||||||
|
Driver: isoDriver,
|
||||||
|
ExpectBuild: false,
|
||||||
|
@@ -1125,8 +1127,10 @@ func TestSetDeployImage(t *testing.T) {
|
||||||
|
Scenario: "no imgbuilder no iso",
|
||||||
|
Config: ironicConfig{
|
||||||
|
havePreprovImgBuilder: false,
|
||||||
|
- deployKernelURL: localKernel,
|
||||||
|
- deployRamdiskURL: localRamdisk,
|
||||||
|
+ defaultDeployConfig: ironicDeployConfig{
|
||||||
|
+ kernelURL: localKernel,
|
||||||
|
+ ramdiskURL: localRamdisk,
|
||||||
|
+ },
|
||||||
|
},
|
||||||
|
Driver: isoDriver,
|
||||||
|
ExpectBuild: false,
|
||||||
|
@@ -1137,9 +1141,11 @@ func TestSetDeployImage(t *testing.T) {
|
||||||
|
Scenario: "pxe no imgbuilder",
|
||||||
|
Config: ironicConfig{
|
||||||
|
havePreprovImgBuilder: false,
|
||||||
|
- deployKernelURL: localKernel,
|
||||||
|
- deployRamdiskURL: localRamdisk,
|
||||||
|
- deployISOURL: localIso,
|
||||||
|
+ defaultDeployConfig: ironicDeployConfig{
|
||||||
|
+ kernelURL: localKernel,
|
||||||
|
+ ramdiskURL: localRamdisk,
|
||||||
|
+ ISOURL: localIso,
|
||||||
|
+ },
|
||||||
|
},
|
||||||
|
Driver: pxeDriver,
|
||||||
|
ExpectBuild: false,
|
||||||
|
@@ -1150,9 +1156,11 @@ func TestSetDeployImage(t *testing.T) {
|
||||||
|
Scenario: "iso no build",
|
||||||
|
Config: ironicConfig{
|
||||||
|
havePreprovImgBuilder: true,
|
||||||
|
- deployKernelURL: localKernel,
|
||||||
|
- deployRamdiskURL: localRamdisk,
|
||||||
|
- deployISOURL: localIso,
|
||||||
|
+ defaultDeployConfig: ironicDeployConfig{
|
||||||
|
+ kernelURL: localKernel,
|
||||||
|
+ ramdiskURL: localRamdisk,
|
||||||
|
+ ISOURL: localIso,
|
||||||
|
+ },
|
||||||
|
},
|
||||||
|
Driver: isoDriver,
|
||||||
|
ExpectISO: false,
|
||||||
|
@@ -1162,9 +1170,11 @@ func TestSetDeployImage(t *testing.T) {
|
||||||
|
Scenario: "iso build",
|
||||||
|
Config: ironicConfig{
|
||||||
|
havePreprovImgBuilder: true,
|
||||||
|
- deployKernelURL: localKernel,
|
||||||
|
- deployRamdiskURL: localRamdisk,
|
||||||
|
- deployISOURL: localIso,
|
||||||
|
+ defaultDeployConfig: ironicDeployConfig{
|
||||||
|
+ kernelURL: localKernel,
|
||||||
|
+ ramdiskURL: localRamdisk,
|
||||||
|
+ ISOURL: localIso,
|
||||||
|
+ },
|
||||||
|
},
|
||||||
|
Driver: isoDriver,
|
||||||
|
Image: &provisioner.PreprovisioningImage{
|
||||||
|
@@ -1181,9 +1191,11 @@ func TestSetDeployImage(t *testing.T) {
|
||||||
|
Scenario: "pxe build",
|
||||||
|
Config: ironicConfig{
|
||||||
|
havePreprovImgBuilder: true,
|
||||||
|
- deployKernelURL: localKernel,
|
||||||
|
- deployRamdiskURL: localRamdisk,
|
||||||
|
- deployISOURL: localIso,
|
||||||
|
+ defaultDeployConfig: ironicDeployConfig{
|
||||||
|
+ kernelURL: localKernel,
|
||||||
|
+ ramdiskURL: localRamdisk,
|
||||||
|
+ ISOURL: localIso,
|
||||||
|
+ },
|
||||||
|
},
|
||||||
|
Driver: pxeDriver,
|
||||||
|
Image: &provisioner.PreprovisioningImage{
|
||||||
|
@@ -1200,9 +1212,11 @@ func TestSetDeployImage(t *testing.T) {
|
||||||
|
Scenario: "pxe build with new kernel and kernel params",
|
||||||
|
Config: ironicConfig{
|
||||||
|
havePreprovImgBuilder: true,
|
||||||
|
- deployKernelURL: localKernel,
|
||||||
|
- deployRamdiskURL: localRamdisk,
|
||||||
|
- deployISOURL: localIso,
|
||||||
|
+ defaultDeployConfig: ironicDeployConfig{
|
||||||
|
+ kernelURL: localKernel,
|
||||||
|
+ ramdiskURL: localRamdisk,
|
||||||
|
+ ISOURL: localIso,
|
||||||
|
+ },
|
||||||
|
},
|
||||||
|
Driver: pxeDriver,
|
||||||
|
Image: &provisioner.PreprovisioningImage{
|
||||||
|
@@ -1223,9 +1237,11 @@ func TestSetDeployImage(t *testing.T) {
|
||||||
|
Scenario: "pxe iso build",
|
||||||
|
Config: ironicConfig{
|
||||||
|
havePreprovImgBuilder: true,
|
||||||
|
- deployKernelURL: localKernel,
|
||||||
|
- deployRamdiskURL: localRamdisk,
|
||||||
|
- deployISOURL: localIso,
|
||||||
|
+ defaultDeployConfig: ironicDeployConfig{
|
||||||
|
+ kernelURL: localKernel,
|
||||||
|
+ ramdiskURL: localRamdisk,
|
||||||
|
+ ISOURL: localIso,
|
||||||
|
+ },
|
||||||
|
},
|
||||||
|
Driver: pxeDriver,
|
||||||
|
Image: &provisioner.PreprovisioningImage{
|
||||||
|
@@ -1242,7 +1258,9 @@ func TestSetDeployImage(t *testing.T) {
|
||||||
|
Scenario: "pxe build no kernel",
|
||||||
|
Config: ironicConfig{
|
||||||
|
havePreprovImgBuilder: true,
|
||||||
|
- deployISOURL: localIso,
|
||||||
|
+ defaultDeployConfig: ironicDeployConfig{
|
||||||
|
+ ISOURL: localIso,
|
||||||
|
+ },
|
||||||
|
},
|
||||||
|
Driver: pxeDriver,
|
||||||
|
Image: &provisioner.PreprovisioningImage{
|
||||||
|
@@ -1273,7 +1291,9 @@ func TestSetDeployImage(t *testing.T) {
|
||||||
|
Scenario: "pxe iso build no initrd",
|
||||||
|
Config: ironicConfig{
|
||||||
|
havePreprovImgBuilder: true,
|
||||||
|
- deployKernelURL: localKernel,
|
||||||
|
+ defaultDeployConfig: ironicDeployConfig{
|
||||||
|
+ kernelURL: localKernel,
|
||||||
|
+ },
|
||||||
|
},
|
||||||
|
Driver: pxeDriver,
|
||||||
|
Image: &provisioner.PreprovisioningImage{
|
||||||
|
@@ -1289,7 +1309,9 @@ func TestSetDeployImage(t *testing.T) {
|
||||||
|
Scenario: "no build no initrd",
|
||||||
|
Config: ironicConfig{
|
||||||
|
havePreprovImgBuilder: true,
|
||||||
|
- deployKernelURL: localKernel,
|
||||||
|
+ defaultDeployConfig: ironicDeployConfig{
|
||||||
|
+ kernelURL: localKernel,
|
||||||
|
+ },
|
||||||
|
},
|
||||||
|
Driver: pxeDriver,
|
||||||
|
ExpectISO: false,
|
||||||
|
@@ -1299,7 +1321,9 @@ func TestSetDeployImage(t *testing.T) {
|
||||||
|
Scenario: "pxe no imgbuilder no pxe",
|
||||||
|
Config: ironicConfig{
|
||||||
|
havePreprovImgBuilder: false,
|
||||||
|
- deployISOURL: localIso,
|
||||||
|
+ defaultDeployConfig: ironicDeployConfig{
|
||||||
|
+ ISOURL: localIso,
|
||||||
|
+ },
|
||||||
|
},
|
||||||
|
Driver: pxeDriver,
|
||||||
|
ExpectISO: false,
|
||||||
|
@@ -1318,7 +1342,7 @@ func TestSetDeployImage(t *testing.T) {
|
||||||
|
|
||||||
|
for _, tc := range testCases {
|
||||||
|
t.Run(tc.Scenario, func(t *testing.T) {
|
||||||
|
- opts := setDeployImage(tc.Config, tc.Driver, tc.Image)
|
||||||
|
+ opts := setDeployImage(tc.Config, tc.Driver, tc.Image, "x86_64")
|
||||||
|
|
||||||
|
switch {
|
||||||
|
case tc.ExpectISO:
|
||||||
|
diff --git a/pkg/provisioner/provisioner.go b/pkg/provisioner/provisioner.go
|
||||||
|
index faddd0fd..f7f55c0d 100644
|
||||||
|
--- a/pkg/provisioner/provisioner.go
|
||||||
|
+++ b/pkg/provisioner/provisioner.go
|
||||||
|
@@ -82,6 +82,7 @@ type ManagementAccessData struct {
|
||||||
|
PreprovisioningNetworkData string
|
||||||
|
HasCustomDeploy bool
|
||||||
|
DisablePowerOff bool
|
||||||
|
+ CPUArchitecture string
|
||||||
|
}
|
||||||
|
|
||||||
|
type AdoptData struct {
|
||||||
|
--
|
||||||
|
2.50.0
|
||||||
|
|
@@ -2,7 +2,7 @@
|
|||||||
<service name="obs_scm">
|
<service name="obs_scm">
|
||||||
<param name="url">https://github.com/metal3-io/baremetal-operator</param>
|
<param name="url">https://github.com/metal3-io/baremetal-operator</param>
|
||||||
<param name="scm">git</param>
|
<param name="scm">git</param>
|
||||||
<param name="revision">v0.9.1</param>
|
<param name="revision">v0.10.2</param>
|
||||||
<param name="version">_auto_</param>
|
<param name="version">_auto_</param>
|
||||||
<param name="versionformat">@PARENT_TAG@</param>
|
<param name="versionformat">@PARENT_TAG@</param>
|
||||||
<param name="changesgenerate">enable</param>
|
<param name="changesgenerate">enable</param>
|
||||||
|
@@ -17,14 +17,15 @@
|
|||||||
|
|
||||||
|
|
||||||
Name: baremetal-operator
|
Name: baremetal-operator
|
||||||
Version: 0.9.1
|
Version: 0.10.2
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: Implements a Kubernetes API for managing bare metal hosts
|
Summary: Implements a Kubernetes API for managing bare metal hosts
|
||||||
License: Apache-2.0
|
License: Apache-2.0
|
||||||
URL: https://github.com/metal3-io/baremetal-operator
|
URL: https://github.com/metal3-io/baremetal-operator
|
||||||
|
Patch0: 0001-Allow-configuring-different-IPA-images-per-architect.patch
|
||||||
Source: baremetal-operator-%{version}.tar
|
Source: baremetal-operator-%{version}.tar
|
||||||
Source1: vendor.tar.gz
|
Source1: vendor.tar.gz
|
||||||
BuildRequires: golang(API) = 1.23
|
BuildRequires: golang(API) = 1.24
|
||||||
ExcludeArch: s390
|
ExcludeArch: s390
|
||||||
ExcludeArch: %{ix86}
|
ExcludeArch: %{ix86}
|
||||||
|
|
||||||
|
@@ -1,9 +1,9 @@
|
|||||||
#!BuildTag: %%CHART_PREFIX%%cdi:%%CHART_MAJOR%%.0.0_up0.4.0
|
#!BuildTag: %%CHART_PREFIX%%cdi:%%CHART_MAJOR%%.0.0_up0.5.0
|
||||||
#!BuildTag: %%CHART_PREFIX%%cdi:%%CHART_MAJOR%%.0.0_up0.4.0-%RELEASE%
|
#!BuildTag: %%CHART_PREFIX%%cdi:%%CHART_MAJOR%%.0.0_up0.5.0-%RELEASE%
|
||||||
apiVersion: v2
|
apiVersion: v2
|
||||||
appVersion: 1.60.1
|
appVersion: 1.61.0
|
||||||
description: A Helm chart for Containerized Data Importer (CDI)
|
description: A Helm chart for Containerized Data Importer (CDI)
|
||||||
icon: https://raw.githubusercontent.com/cncf/artwork/main/projects/kubevirt/icon/color/kubevirt-icon-color.svg
|
icon: https://raw.githubusercontent.com/cncf/artwork/main/projects/kubevirt/icon/color/kubevirt-icon-color.svg
|
||||||
name: cdi
|
name: cdi
|
||||||
type: application
|
type: application
|
||||||
version: "%%CHART_MAJOR%%.0.0+up0.4.0"
|
version: "%%CHART_MAJOR%%.0.0+up0.5.0"
|
||||||
|
@@ -606,17 +606,7 @@ spec:
|
|||||||
prometheus.cdi.kubevirt.io: "true"
|
prometheus.cdi.kubevirt.io: "true"
|
||||||
spec:
|
spec:
|
||||||
affinity:
|
affinity:
|
||||||
podAffinity:
|
{{- .Values.deployment.affinity | toYaml | nindent 8 }}
|
||||||
preferredDuringSchedulingIgnoredDuringExecution:
|
|
||||||
- podAffinityTerm:
|
|
||||||
labelSelector:
|
|
||||||
matchExpressions:
|
|
||||||
- key: cdi.kubevirt.io
|
|
||||||
operator: In
|
|
||||||
values:
|
|
||||||
- cdi-operator
|
|
||||||
topologyKey: kubernetes.io/hostname
|
|
||||||
weight: 1
|
|
||||||
containers:
|
containers:
|
||||||
- env:
|
- env:
|
||||||
- name: DEPLOY_CLUSTER_RESOURCES
|
- name: DEPLOY_CLUSTER_RESOURCES
|
||||||
@@ -650,9 +640,7 @@ spec:
|
|||||||
name: metrics
|
name: metrics
|
||||||
protocol: TCP
|
protocol: TCP
|
||||||
resources:
|
resources:
|
||||||
requests:
|
{{- .Values.deployment.resources | toYaml | nindent 12 }}
|
||||||
cpu: 100m
|
|
||||||
memory: 150Mi
|
|
||||||
securityContext:
|
securityContext:
|
||||||
allowPrivilegeEscalation: false
|
allowPrivilegeEscalation: false
|
||||||
capabilities:
|
capabilities:
|
||||||
@@ -661,6 +649,8 @@ spec:
|
|||||||
runAsNonRoot: true
|
runAsNonRoot: true
|
||||||
seccompProfile:
|
seccompProfile:
|
||||||
type: RuntimeDefault
|
type: RuntimeDefault
|
||||||
|
terminationMessagePath: /dev/termination-log
|
||||||
|
terminationMessagePolicy: File
|
||||||
nodeSelector:
|
nodeSelector:
|
||||||
kubernetes.io/os: linux
|
kubernetes.io/os: linux
|
||||||
securityContext:
|
securityContext:
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
deployment:
|
deployment:
|
||||||
version: 1.60.1-150600.3.9.1
|
version: 1.61.0-150600.3.12.1
|
||||||
operatorImage: registry.suse.com/suse/sles/15.6/cdi-operator
|
operatorImage: registry.suse.com/suse/sles/15.6/cdi-operator
|
||||||
controllerImage: registry.suse.com/suse/sles/15.6/cdi-controller
|
controllerImage: registry.suse.com/suse/sles/15.6/cdi-controller
|
||||||
importerImage: registry.suse.com/suse/sles/15.6/cdi-importer
|
importerImage: registry.suse.com/suse/sles/15.6/cdi-importer
|
||||||
@@ -8,6 +8,22 @@ deployment:
|
|||||||
uploadserverImage: registry.suse.com/suse/sles/15.6/cdi-uploadserver
|
uploadserverImage: registry.suse.com/suse/sles/15.6/cdi-uploadserver
|
||||||
uploadproxyImage: registry.suse.com/suse/sles/15.6/cdi-uploadproxy
|
uploadproxyImage: registry.suse.com/suse/sles/15.6/cdi-uploadproxy
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
|
affinity:
|
||||||
|
podAffinity:
|
||||||
|
preferredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
- podAffinityTerm:
|
||||||
|
labelSelector:
|
||||||
|
matchExpressions:
|
||||||
|
- key: cdi.kubevirt.io
|
||||||
|
operator: In
|
||||||
|
values:
|
||||||
|
- cdi-operator
|
||||||
|
topologyKey: kubernetes.io/hostname
|
||||||
|
weight: 1
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 150Mi
|
||||||
|
|
||||||
cdi:
|
cdi:
|
||||||
config:
|
config:
|
||||||
|
@@ -8,6 +8,7 @@ import pprint
|
|||||||
|
|
||||||
AUTHORIZED_REPOS = [
|
AUTHORIZED_REPOS = [
|
||||||
"registry.suse.com/suse/sles/",
|
"registry.suse.com/suse/sles/",
|
||||||
|
"registry.suse.com/rancher",
|
||||||
"registry.rancher.com",
|
"registry.rancher.com",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
#!BuildTag: %%IMG_PREFIX%%edge-image-builder:1.2.0-rc1
|
#!BuildTag: %%IMG_PREFIX%%edge-image-builder:1.2.1
|
||||||
#!BuildTag: %%IMG_PREFIX%%edge-image-builder:1.2.0-rc1-%RELEASE%
|
#!BuildTag: %%IMG_PREFIX%%edge-image-builder:1.2.1-%RELEASE%
|
||||||
#!BuildVersion: 15.6
|
#!BuildVersion: 15.6
|
||||||
ARG SLE_VERSION
|
ARG SLE_VERSION
|
||||||
FROM registry.suse.com/bci/bci-base:$SLE_VERSION
|
FROM registry.suse.com/bci/bci-base:$SLE_VERSION
|
||||||
@@ -15,11 +15,11 @@ RUN zypper --non-interactive install --no-recommends edge-image-builder qemu-x86
|
|||||||
LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)"
|
LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)"
|
||||||
LABEL org.opencontainers.image.title="SLE edge-image-builder Container Image"
|
LABEL org.opencontainers.image.title="SLE edge-image-builder Container Image"
|
||||||
LABEL org.opencontainers.image.description="edge-image-builder based on the SLE Base Container Image."
|
LABEL org.opencontainers.image.description="edge-image-builder based on the SLE Base Container Image."
|
||||||
LABEL org.opencontainers.image.version="1.2.0-rc1"
|
LABEL org.opencontainers.image.version="1.2.1"
|
||||||
LABEL org.opencontainers.image.url="https://www.suse.com/products/server/"
|
LABEL org.opencontainers.image.url="https://www.suse.com/products/server/"
|
||||||
LABEL org.opencontainers.image.created="%BUILDTIME%"
|
LABEL org.opencontainers.image.created="%BUILDTIME%"
|
||||||
LABEL org.opencontainers.image.vendor="SUSE LLC"
|
LABEL org.opencontainers.image.vendor="SUSE LLC"
|
||||||
LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%edge-image-builder:1.2.0-rc1-%RELEASE%"
|
LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%edge-image-builder:1.2.1-%RELEASE%"
|
||||||
LABEL org.openbuildservice.disturl="%DISTURL%"
|
LABEL org.openbuildservice.disturl="%DISTURL%"
|
||||||
LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%"
|
LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%"
|
||||||
LABEL com.suse.eula="SUSE Combined EULA February 2024"
|
LABEL com.suse.eula="SUSE Combined EULA February 2024"
|
||||||
|
@@ -5,7 +5,7 @@ metallb:
|
|||||||
endpoint-copier-operator:
|
endpoint-copier-operator:
|
||||||
chart: endpoint-copier-operator
|
chart: endpoint-copier-operator
|
||||||
repository: "%%CHART_REPO%%/%%CHART_PREFIX%%"
|
repository: "%%CHART_REPO%%/%%CHART_PREFIX%%"
|
||||||
version: "%%CHART_MAJOR%%.0.0+up0.2.1"
|
version: "%%CHART_MAJOR%%.0.1+up0.3.0"
|
||||||
kubernetes:
|
kubernetes:
|
||||||
k3s:
|
k3s:
|
||||||
selinuxPackage: k3s-selinux-1.6-1.slemicro.noarch
|
selinuxPackage: k3s-selinux-1.6-1.slemicro.noarch
|
||||||
|
@@ -3,11 +3,11 @@
|
|||||||
<param name="url">https://github.com/suse-edge/edge-image-builder.git</param>
|
<param name="url">https://github.com/suse-edge/edge-image-builder.git</param>
|
||||||
<param name="scm">git</param>
|
<param name="scm">git</param>
|
||||||
<param name="exclude">.git</param>
|
<param name="exclude">.git</param>
|
||||||
<param name="revision">v1.2.0-rc1</param>
|
<param name="revision">v1.2.1</param>
|
||||||
<!-- Uncomment and set this For Pre-Release Version -->
|
<!-- Uncomment and set this For Pre-Release Version -->
|
||||||
<param name="version">1.2.0~rc1</param>
|
<!-- <param name="version">1.2.0~rc1</param> -->
|
||||||
<!-- Uncomment and this for regular version -->
|
<!-- Uncomment and this for regular version -->
|
||||||
<!-- <param name="versionformat">@PARENT_TAG@</param> -->
|
<param name="versionformat">@PARENT_TAG@</param>
|
||||||
<param name="versionrewrite-pattern">v(\d+).(\d+).(\d+)</param>
|
<param name="versionrewrite-pattern">v(\d+).(\d+).(\d+)</param>
|
||||||
<param name="versionrewrite-replacement">\1.\2.\3</param>
|
<param name="versionrewrite-replacement">\1.\2.\3</param>
|
||||||
<param name="changesgenerate">enable</param>
|
<param name="changesgenerate">enable</param>
|
||||||
|
@@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
|
|
||||||
Name: edge-image-builder
|
Name: edge-image-builder
|
||||||
Version: 1.2.0~rc1
|
Version: 1.2.1
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: Edge Image Builder
|
Summary: Edge Image Builder
|
||||||
License: Apache-2.0
|
License: Apache-2.0
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
#!BuildTag: %%CHART_PREFIX%%endpoint-copier-operator:%%CHART_MAJOR%%.0.0_up0.2.1
|
#!BuildTag: %%CHART_PREFIX%%endpoint-copier-operator:%%CHART_MAJOR%%.0.1_up0.3.0
|
||||||
#!BuildTag: %%CHART_PREFIX%%endpoint-copier-operator:%%CHART_MAJOR%%.0.0_up0.2.1-%RELEASE%
|
#!BuildTag: %%CHART_PREFIX%%endpoint-copier-operator:%%CHART_MAJOR%%.0.1_up0.3.0-%RELEASE%
|
||||||
apiVersion: v2
|
apiVersion: v2
|
||||||
appVersion: v0.2.0
|
appVersion: v0.3.0
|
||||||
description: A Helm chart for Kubernetes
|
description: A Helm chart for Kubernetes
|
||||||
name: endpoint-copier-operator
|
name: endpoint-copier-operator
|
||||||
type: application
|
type: application
|
||||||
version: "%%CHART_MAJOR%%.0.0+up0.2.1"
|
version: "%%CHART_MAJOR%%.0.1+up0.3.0"
|
||||||
|
@@ -20,8 +20,23 @@ spec:
|
|||||||
labels:
|
labels:
|
||||||
{{- include "endpoint-copier-operator.selectorLabels" . | nindent 8 }}
|
{{- include "endpoint-copier-operator.selectorLabels" . | nindent 8 }}
|
||||||
spec:
|
spec:
|
||||||
|
{{- if .Values.priorityClassName }}
|
||||||
|
priorityClassName: {{ .Values.priorityClassName }}
|
||||||
|
{{- end }}
|
||||||
securityContext:
|
securityContext:
|
||||||
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||||
|
{{- with .Values.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
containers:
|
containers:
|
||||||
- command:
|
- command:
|
||||||
- /manager
|
- /manager
|
||||||
|
@@ -7,9 +7,9 @@ metadata:
|
|||||||
name: {{ include "endpoint-copier-operator.fullname" . }}
|
name: {{ include "endpoint-copier-operator.fullname" . }}
|
||||||
rules:
|
rules:
|
||||||
- apiGroups:
|
- apiGroups:
|
||||||
- ""
|
- "discovery.k8s.io"
|
||||||
resources:
|
resources:
|
||||||
- endpoints
|
- endpointslices
|
||||||
verbs:
|
verbs:
|
||||||
- create
|
- create
|
||||||
- delete
|
- delete
|
||||||
|
@@ -8,7 +8,7 @@ image:
|
|||||||
repository: %%IMG_REPO%%/%%IMG_PREFIX%%endpoint-copier-operator
|
repository: %%IMG_REPO%%/%%IMG_PREFIX%%endpoint-copier-operator
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
# Overrides the image tag whose default is the chart appVersion.
|
# Overrides the image tag whose default is the chart appVersion.
|
||||||
tag: "0.2.0"
|
tag: "0.3.0"
|
||||||
|
|
||||||
nameOverride: "endpoint-copier-operator"
|
nameOverride: "endpoint-copier-operator"
|
||||||
fullnameOverride: "endpoint-copier-operator"
|
fullnameOverride: "endpoint-copier-operator"
|
||||||
@@ -29,6 +29,8 @@ podSecurityContext:
|
|||||||
seccompProfile:
|
seccompProfile:
|
||||||
type: RuntimeDefault
|
type: RuntimeDefault
|
||||||
|
|
||||||
|
priorityClassName: "system-cluster-critical"
|
||||||
|
|
||||||
securityContext:
|
securityContext:
|
||||||
allowPrivilegeEscalation: false
|
allowPrivilegeEscalation: false
|
||||||
capabilities:
|
capabilities:
|
||||||
@@ -37,11 +39,11 @@ securityContext:
|
|||||||
|
|
||||||
resources:
|
resources:
|
||||||
limits:
|
limits:
|
||||||
cpu: 500m
|
cpu: 100m
|
||||||
memory: 128Mi
|
|
||||||
requests:
|
|
||||||
cpu: 10m
|
|
||||||
memory: 64Mi
|
memory: 64Mi
|
||||||
|
requests:
|
||||||
|
cpu: 5m
|
||||||
|
memory: 32Mi
|
||||||
|
|
||||||
autoscaling:
|
autoscaling:
|
||||||
enabled: false
|
enabled: false
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
<service name="obs_scm">
|
<service name="obs_scm">
|
||||||
<param name="url">https://github.com/suse-edge/endpoint-copier-operator</param>
|
<param name="url">https://github.com/suse-edge/endpoint-copier-operator</param>
|
||||||
<param name="scm">git</param>
|
<param name="scm">git</param>
|
||||||
<param name="revision">v0.2.0</param>
|
<param name="revision">v0.3.0</param>
|
||||||
<param name="version">_auto_</param>
|
<param name="version">_auto_</param>
|
||||||
<param name="versionformat">@PARENT_TAG@</param>
|
<param name="versionformat">@PARENT_TAG@</param>
|
||||||
<param name="changesgenerate">enable</param>
|
<param name="changesgenerate">enable</param>
|
||||||
|
@@ -17,14 +17,14 @@
|
|||||||
|
|
||||||
|
|
||||||
Name: endpoint-copier-operator
|
Name: endpoint-copier-operator
|
||||||
Version: 0.2.0
|
Version: 0.3.0
|
||||||
Release: 0.2.0
|
Release: 0.3.0
|
||||||
Summary: Implements a Kubernetes API for copying endpoint resources
|
Summary: Implements a Kubernetes API for copying endpoint resources
|
||||||
License: Apache-2.0
|
License: Apache-2.0
|
||||||
URL: https://github.com/suse-edge/endpoint-copier-operator
|
URL: https://github.com/suse-edge/endpoint-copier-operator
|
||||||
Source: endpoint-copier-operator-%{version}.tar
|
Source: endpoint-copier-operator-%{version}.tar
|
||||||
Source1: vendor.tar.gz
|
Source1: vendor.tar.gz
|
||||||
BuildRequires: golang(API) = 1.20
|
BuildRequires: golang(API) = 1.24
|
||||||
ExcludeArch: s390
|
ExcludeArch: s390
|
||||||
ExcludeArch: %{ix86}
|
ExcludeArch: %{ix86}
|
||||||
|
|
||||||
|
@@ -1,57 +0,0 @@
|
|||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
||||||
# not use this file except in compliance with the License. You may obtain
|
|
||||||
# a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
||||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
||||||
# License for the specific language governing permissions and limitations
|
|
||||||
# under the License.
|
|
||||||
|
|
||||||
|
|
||||||
{% if env.LISTEN_ALL_INTERFACES | lower == "true" %}
|
|
||||||
Listen {{ env.IRONIC_INSPECTOR_LISTEN_PORT }}
|
|
||||||
<VirtualHost *:{{ env.IRONIC_INSPECTOR_LISTEN_PORT }}>
|
|
||||||
{% else %}
|
|
||||||
Listen {{ env.IRONIC_URL_HOST }}:{{ env.IRONIC_INSPECTOR_LISTEN_PORT }}
|
|
||||||
<VirtualHost {{ env.IRONIC_URL_HOST }}:{{ env.IRONIC_INSPECTOR_LISTEN_PORT }}>
|
|
||||||
{% endif %}
|
|
||||||
{% if env.IRONIC_INSPECTOR_PRIVATE_PORT == "unix" %}
|
|
||||||
ProxyPass "/" "unix:/shared/inspector.sock|http://127.0.0.1/"
|
|
||||||
ProxyPassReverse "/" "unix:/shared/inspector.sock|http://127.0.0.1/"
|
|
||||||
{% else %}
|
|
||||||
ProxyPass "/" "http://127.0.0.1:{{ env.IRONIC_INSPECTOR_PRIVATE_PORT }}/"
|
|
||||||
ProxyPassReverse "/" "http://127.0.0.1:{{ env.IRONIC_INSPECTOR_PRIVATE_PORT }}/"
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
SetEnv APACHE_RUN_USER ironic-suse
|
|
||||||
SetEnv APACHE_RUN_GROUP ironic-suse
|
|
||||||
|
|
||||||
ErrorLog /dev/stdout
|
|
||||||
LogLevel debug
|
|
||||||
CustomLog /dev/stdout combined
|
|
||||||
|
|
||||||
SSLEngine On
|
|
||||||
SSLProtocol {{ env.IRONIC_SSL_PROTOCOL }}
|
|
||||||
SSLCertificateFile {{ env.IRONIC_INSPECTOR_CERT_FILE }}
|
|
||||||
SSLCertificateKeyFile {{ env.IRONIC_INSPECTOR_KEY_FILE }}
|
|
||||||
|
|
||||||
{% if "INSPECTOR_HTPASSWD" in env and env.INSPECTOR_HTPASSWD | length %}
|
|
||||||
<Location / >
|
|
||||||
AuthType Basic
|
|
||||||
AuthName "Restricted area"
|
|
||||||
AuthUserFile "/etc/ironic-inspector/htpasswd"
|
|
||||||
Require valid-user
|
|
||||||
</Location>
|
|
||||||
|
|
||||||
<Location ~ "^/(v1/?)?$" >
|
|
||||||
Require all granted
|
|
||||||
</Location>
|
|
||||||
|
|
||||||
<Location /v1/continue >
|
|
||||||
Require all granted
|
|
||||||
</Location>
|
|
||||||
{% endif %}
|
|
||||||
</VirtualHost>
|
|
@@ -1,68 +0,0 @@
|
|||||||
[DEFAULT]
|
|
||||||
auth_strategy = noauth
|
|
||||||
debug = true
|
|
||||||
transport_url = fake://
|
|
||||||
use_stderr = true
|
|
||||||
{% if env.INSPECTOR_REVERSE_PROXY_SETUP == "true" %}
|
|
||||||
{% if env.IRONIC_INSPECTOR_PRIVATE_PORT == "unix" %}
|
|
||||||
listen_unix_socket = /shared/inspector.sock
|
|
||||||
# NOTE(dtantsur): this is not ideal, but since the socket is accessed from
|
|
||||||
# another container, we need to make it world-writeable.
|
|
||||||
listen_unix_socket_mode = 0666
|
|
||||||
{% else %}
|
|
||||||
listen_port = {{ env.IRONIC_INSPECTOR_PRIVATE_PORT }}
|
|
||||||
listen_address = 127.0.0.1
|
|
||||||
{% endif %}
|
|
||||||
{% elif env.LISTEN_ALL_INTERFACES | lower == "true" %}
|
|
||||||
listen_port = {{ env.IRONIC_INSPECTOR_LISTEN_PORT }}
|
|
||||||
listen_address = ::
|
|
||||||
{% else %}
|
|
||||||
listen_port = {{ env.IRONIC_INSPECTOR_LISTEN_PORT }}
|
|
||||||
listen_address = {{ env.IRONIC_IP }}
|
|
||||||
{% endif %}
|
|
||||||
host = {{ env.IRONIC_IP }}
|
|
||||||
{% if env.IRONIC_INSPECTOR_TLS_SETUP == "true" and env.INSPECTOR_REVERSE_PROXY_SETUP == "false" %}
|
|
||||||
use_ssl = true
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
[database]
|
|
||||||
connection = sqlite:////var/lib/ironic-inspector/ironic-inspector.db
|
|
||||||
|
|
||||||
{% if env.IRONIC_INSPECTOR_ENABLE_DISCOVERY == "true" %}
|
|
||||||
[discovery]
|
|
||||||
enroll_node_driver = ipmi
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
[ironic]
|
|
||||||
auth_type = none
|
|
||||||
endpoint_override = {{ env.IRONIC_BASE_URL }}
|
|
||||||
{% if env.IRONIC_TLS_SETUP == "true" %}
|
|
||||||
cafile = {{ env.IRONIC_CACERT_FILE }}
|
|
||||||
insecure = {{ env.IRONIC_INSECURE }}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
[processing]
|
|
||||||
add_ports = all
|
|
||||||
always_store_ramdisk_logs = true
|
|
||||||
keep_ports = present
|
|
||||||
{% if env.IRONIC_INSPECTOR_ENABLE_DISCOVERY == "true" %}
|
|
||||||
node_not_found_hook = enroll
|
|
||||||
{% endif %}
|
|
||||||
permit_active_introspection = true
|
|
||||||
power_off = false
|
|
||||||
processing_hooks = $default_processing_hooks,lldp_basic
|
|
||||||
ramdisk_logs_dir = /shared/log/ironic-inspector/ramdisk
|
|
||||||
store_data = database
|
|
||||||
|
|
||||||
[pxe_filter]
|
|
||||||
driver = noop
|
|
||||||
|
|
||||||
[service_catalog]
|
|
||||||
auth_type = none
|
|
||||||
endpoint_override = {{ env.IRONIC_INSPECTOR_BASE_URL }}
|
|
||||||
|
|
||||||
{% if env.IRONIC_INSPECTOR_TLS_SETUP == "true" and env.INSPECTOR_REVERSE_PROXY_SETUP == "false" %}
|
|
||||||
[ssl]
|
|
||||||
cert_file = {{ env.IRONIC_INSPECTOR_CERT_FILE }}
|
|
||||||
key_file = {{ env.IRONIC_INSPECTOR_KEY_FILE }}
|
|
||||||
{% endif %}
|
|
@@ -1,13 +0,0 @@
|
|||||||
#!/usr/bin/bash
|
|
||||||
|
|
||||||
export IRONIC_DEPLOYMENT="API"
|
|
||||||
|
|
||||||
# shellcheck disable=SC1091
|
|
||||||
. /bin/configure-ironic.sh
|
|
||||||
|
|
||||||
export IRONIC_REVERSE_PROXY_SETUP=false
|
|
||||||
|
|
||||||
python3 -c 'import os; import sys; import jinja2; sys.stdout.write(jinja2.Template(sys.stdin.read()).render(env=os.environ))' < /tmp/httpd-ironic-api.conf.j2 > /etc/httpd/conf.d/ironic.conf
|
|
||||||
|
|
||||||
# shellcheck disable=SC1091
|
|
||||||
. /bin/runhttpd
|
|
@@ -1,20 +0,0 @@
|
|||||||
#!/usr/bin/bash
|
|
||||||
|
|
||||||
export IRONIC_DEPLOYMENT="Conductor"
|
|
||||||
|
|
||||||
# shellcheck disable=SC1091
|
|
||||||
. /bin/configure-ironic.sh
|
|
||||||
|
|
||||||
# Ramdisk logs
|
|
||||||
mkdir -p /shared/log/ironic/deploy
|
|
||||||
|
|
||||||
run_ironic_dbsync
|
|
||||||
|
|
||||||
if [[ "$IRONIC_TLS_SETUP" == "true" ]] && [[ "${RESTART_CONTAINER_CERTIFICATE_UPDATED}" == "true" ]]; then
|
|
||||||
# shellcheck disable=SC2034
|
|
||||||
inotifywait -m -e delete_self "${IRONIC_CERT_FILE}" | while read -r file event; do
|
|
||||||
kill $(pgrep ironic)
|
|
||||||
done &
|
|
||||||
fi
|
|
||||||
|
|
||||||
exec /usr/bin/ironic-conductor
|
|
@@ -1,62 +0,0 @@
|
|||||||
#!/usr/bin/bash
|
|
||||||
|
|
||||||
set -euxo pipefail
|
|
||||||
|
|
||||||
CONFIG=/etc/ironic-inspector/ironic-inspector.conf
|
|
||||||
|
|
||||||
export IRONIC_INSPECTOR_ENABLE_DISCOVERY=${IRONIC_INSPECTOR_ENABLE_DISCOVERY:-false}
|
|
||||||
export INSPECTOR_REVERSE_PROXY_SETUP=${INSPECTOR_REVERSE_PROXY_SETUP:-false}
|
|
||||||
|
|
||||||
# shellcheck disable=SC1091
|
|
||||||
. /bin/tls-common.sh
|
|
||||||
# shellcheck disable=SC1091
|
|
||||||
. /bin/ironic-common.sh
|
|
||||||
# shellcheck disable=SC1091
|
|
||||||
. /bin/auth-common.sh
|
|
||||||
|
|
||||||
if [[ "$USE_IRONIC_INSPECTOR" == "false" ]]; then
|
|
||||||
echo "FATAL: ironic-inspector is disabled via USE_IRONIC_INSPECTOR"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
wait_for_interface_or_ip
|
|
||||||
|
|
||||||
IRONIC_INSPECTOR_PORT=${IRONIC_INSPECTOR_ACCESS_PORT}
|
|
||||||
if [[ "$IRONIC_INSPECTOR_TLS_SETUP" == "true" ]]; then
|
|
||||||
if [[ "${INSPECTOR_REVERSE_PROXY_SETUP}" == "true" ]] && [[ "${IRONIC_INSPECTOR_PRIVATE_PORT}" != "unix" ]]; then
|
|
||||||
IRONIC_INSPECTOR_PORT=$IRONIC_INSPECTOR_PRIVATE_PORT
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
export INSPECTOR_REVERSE_PROXY_SETUP="false" # If TLS is not used, we have no reason to use the reverse proxy
|
|
||||||
fi
|
|
||||||
|
|
||||||
export IRONIC_INSPECTOR_BASE_URL="${IRONIC_INSPECTOR_SCHEME}://${IRONIC_URL_HOST}:${IRONIC_INSPECTOR_PORT}"
|
|
||||||
export IRONIC_BASE_URL="${IRONIC_SCHEME}://${IRONIC_URL_HOST}:${IRONIC_ACCESS_PORT}"
|
|
||||||
|
|
||||||
build_j2_config()
|
|
||||||
{
|
|
||||||
local CONFIG_FILE="$1"
|
|
||||||
python3 -c 'import os; import sys; import jinja2; sys.stdout.write(jinja2.Template(sys.stdin.read()).render(env=os.environ))' < "$CONFIG_FILE.j2"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Merge with the original configuration file from the package.
|
|
||||||
build_j2_config "$CONFIG" | crudini --merge "$CONFIG"
|
|
||||||
|
|
||||||
configure_inspector_auth
|
|
||||||
|
|
||||||
configure_client_basic_auth ironic "${CONFIG}"
|
|
||||||
|
|
||||||
ironic-inspector-dbsync --config-file "${CONFIG}" upgrade
|
|
||||||
|
|
||||||
if [[ "$INSPECTOR_REVERSE_PROXY_SETUP" == "false" ]] && [[ "${RESTART_CONTAINER_CERTIFICATE_UPDATED}" == "true" ]]; then
|
|
||||||
# shellcheck disable=SC2034
|
|
||||||
inotifywait -m -e delete_self "${IRONIC_INSPECTOR_CERT_FILE}" | while read -r file event; do
|
|
||||||
kill $(pgrep ironic)
|
|
||||||
done &
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Make sure ironic traffic bypasses any proxies
|
|
||||||
export NO_PROXY="${NO_PROXY:-},$IRONIC_IP"
|
|
||||||
|
|
||||||
# shellcheck disable=SC2086
|
|
||||||
exec /usr/bin/ironic-inspector
|
|
@@ -1,7 +1,6 @@
|
|||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
#!BuildTag: %%IMG_PREFIX%%ironic-ipa-downloader:3.0.3
|
#!BuildTag: %%IMG_PREFIX%%ironic-ipa-downloader:3.0.7
|
||||||
#!BuildTag: %%IMG_PREFIX%%ironic-ipa-downloader:3.0.3-%RELEASE%
|
#!BuildTag: %%IMG_PREFIX%%ironic-ipa-downloader:3.0.7-%RELEASE%
|
||||||
#!BuildVersion: 15.6
|
|
||||||
ARG SLE_VERSION
|
ARG SLE_VERSION
|
||||||
FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro
|
FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro
|
||||||
|
|
||||||
@@ -19,11 +18,11 @@ FROM micro AS final
|
|||||||
LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)"
|
LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)"
|
||||||
LABEL org.opencontainers.image.title="SLE Based Ironic IPA Downloader Container Image"
|
LABEL org.opencontainers.image.title="SLE Based Ironic IPA Downloader Container Image"
|
||||||
LABEL org.opencontainers.image.description="ironic-ipa-downloader based on the SLE Base Container Image."
|
LABEL org.opencontainers.image.description="ironic-ipa-downloader based on the SLE Base Container Image."
|
||||||
LABEL org.opencontainers.image.version="3.0.3"
|
LABEL org.opencontainers.image.version="3.0.6"
|
||||||
LABEL org.opencontainers.image.url="https://www.suse.com/solutions/edge-computing/"
|
LABEL org.opencontainers.image.url="https://www.suse.com/solutions/edge-computing/"
|
||||||
LABEL org.opencontainers.image.created="%BUILDTIME%"
|
LABEL org.opencontainers.image.created="%BUILDTIME%"
|
||||||
LABEL org.opencontainers.image.vendor="SUSE LLC"
|
LABEL org.opencontainers.image.vendor="SUSE LLC"
|
||||||
LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%ironic-ipa-downloader:3.0.3-%RELEASE%"
|
LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%ironic-ipa-downloader:3.0.7-%RELEASE%"
|
||||||
LABEL org.openbuildservice.disturl="%DISTURL%"
|
LABEL org.openbuildservice.disturl="%DISTURL%"
|
||||||
LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%"
|
LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%"
|
||||||
LABEL com.suse.eula="SUSE Combined EULA February 2024"
|
LABEL com.suse.eula="SUSE Combined EULA February 2024"
|
||||||
|
45
ironic-ipa-downloader-image/Dockerfile.aarch64
Normal file
45
ironic-ipa-downloader-image/Dockerfile.aarch64
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
#!BuildTag: %%IMG_PREFIX%%ironic-ipa-downloader-aarch64:3.0.7
|
||||||
|
#!BuildTag: %%IMG_PREFIX%%ironic-ipa-downloader-aarch64:3.0.7-%RELEASE%
|
||||||
|
ARG SLE_VERSION
|
||||||
|
FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro
|
||||||
|
|
||||||
|
FROM registry.suse.com/bci/bci-base:$SLE_VERSION AS base
|
||||||
|
COPY --from=micro / /installroot/
|
||||||
|
RUN sed -i -e 's%^# rpm.install.excludedocs = no.*%rpm.install.excludedocs = yes%g' /etc/zypp/zypp.conf
|
||||||
|
RUN zypper --installroot /installroot --non-interactive install --no-recommends ironic-ipa-ramdisk-aarch64 tar gawk curl xz zstd shadow cpio findutils
|
||||||
|
|
||||||
|
RUN cp /usr/bin/getopt /installroot/
|
||||||
|
|
||||||
|
FROM micro AS final
|
||||||
|
|
||||||
|
# Define labels according to https://en.opensuse.org/Building_derived_containers
|
||||||
|
# labelprefix=com.suse.application.ironic
|
||||||
|
LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)"
|
||||||
|
LABEL org.opencontainers.image.title="SLE Based Ironic IPA Downloader Container Image"
|
||||||
|
LABEL org.opencontainers.image.description="ironic-ipa-downloader based on the SLE Base Container Image."
|
||||||
|
LABEL org.opencontainers.image.version="3.0.6"
|
||||||
|
LABEL org.opencontainers.image.url="https://www.suse.com/solutions/edge-computing/"
|
||||||
|
LABEL org.opencontainers.image.created="%BUILDTIME%"
|
||||||
|
LABEL org.opencontainers.image.vendor="SUSE LLC"
|
||||||
|
LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%ironic-ipa-downloader:3.0.7-%RELEASE%"
|
||||||
|
LABEL org.openbuildservice.disturl="%DISTURL%"
|
||||||
|
LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%"
|
||||||
|
LABEL com.suse.eula="SUSE Combined EULA February 2024"
|
||||||
|
LABEL com.suse.lifecycle-url="https://www.suse.com/lifecycle"
|
||||||
|
LABEL com.suse.image-type="application"
|
||||||
|
LABEL com.suse.release-stage="released"
|
||||||
|
# endlabelprefix
|
||||||
|
|
||||||
|
COPY --from=base /installroot /
|
||||||
|
RUN cp /getopt /usr/bin/
|
||||||
|
RUN cp /srv/tftpboot/openstack-ironic-image/initrd*.zst /tmp
|
||||||
|
RUN cp /srv/tftpboot/openstack-ironic-image/openstack-ironic-image*.kernel /tmp
|
||||||
|
RUN sha256sum /srv/tftpboot/openstack-ironic-image/initrd*.zst /srv/tftpboot/openstack-ironic-image/openstack-ironic-image*.kernel > /tmp/images.sha256
|
||||||
|
# configure non-root user
|
||||||
|
COPY configure-nonroot.sh /bin/
|
||||||
|
RUN set -euo pipefail; chmod +x /bin/configure-nonroot.sh
|
||||||
|
RUN set -euo pipefail; /bin/configure-nonroot.sh && rm -f /bin/configure-nonroot.sh
|
||||||
|
COPY get-resource.sh /usr/local/bin/get-resource.sh
|
||||||
|
|
||||||
|
RUN set -euo pipefail; chmod +x /usr/local/bin/get-resource.sh
|
45
ironic-ipa-downloader-image/Dockerfile.x86_64
Normal file
45
ironic-ipa-downloader-image/Dockerfile.x86_64
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
#!BuildTag: %%IMG_PREFIX%%ironic-ipa-downloader-x86_64:3.0.7
|
||||||
|
#!BuildTag: %%IMG_PREFIX%%ironic-ipa-downloader-x86_64:3.0.7-%RELEASE%
|
||||||
|
ARG SLE_VERSION
|
||||||
|
FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro
|
||||||
|
|
||||||
|
FROM registry.suse.com/bci/bci-base:$SLE_VERSION AS base
|
||||||
|
COPY --from=micro / /installroot/
|
||||||
|
RUN sed -i -e 's%^# rpm.install.excludedocs = no.*%rpm.install.excludedocs = yes%g' /etc/zypp/zypp.conf
|
||||||
|
RUN zypper --installroot /installroot --non-interactive install --no-recommends ironic-ipa-ramdisk-x86_64 tar gawk curl xz zstd shadow cpio findutils
|
||||||
|
|
||||||
|
RUN cp /usr/bin/getopt /installroot/
|
||||||
|
|
||||||
|
FROM micro AS final
|
||||||
|
|
||||||
|
# Define labels according to https://en.opensuse.org/Building_derived_containers
|
||||||
|
# labelprefix=com.suse.application.ironic
|
||||||
|
LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)"
|
||||||
|
LABEL org.opencontainers.image.title="SLE Based Ironic IPA Downloader Container Image"
|
||||||
|
LABEL org.opencontainers.image.description="ironic-ipa-downloader based on the SLE Base Container Image."
|
||||||
|
LABEL org.opencontainers.image.version="3.0.6"
|
||||||
|
LABEL org.opencontainers.image.url="https://www.suse.com/solutions/edge-computing/"
|
||||||
|
LABEL org.opencontainers.image.created="%BUILDTIME%"
|
||||||
|
LABEL org.opencontainers.image.vendor="SUSE LLC"
|
||||||
|
LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%ironic-ipa-downloader:3.0.7-%RELEASE%"
|
||||||
|
LABEL org.openbuildservice.disturl="%DISTURL%"
|
||||||
|
LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%"
|
||||||
|
LABEL com.suse.eula="SUSE Combined EULA February 2024"
|
||||||
|
LABEL com.suse.lifecycle-url="https://www.suse.com/lifecycle"
|
||||||
|
LABEL com.suse.image-type="application"
|
||||||
|
LABEL com.suse.release-stage="released"
|
||||||
|
# endlabelprefix
|
||||||
|
|
||||||
|
COPY --from=base /installroot /
|
||||||
|
RUN cp /getopt /usr/bin/
|
||||||
|
RUN cp /srv/tftpboot/openstack-ironic-image/initrd*.zst /tmp
|
||||||
|
RUN cp /srv/tftpboot/openstack-ironic-image/openstack-ironic-image*.kernel /tmp
|
||||||
|
RUN sha256sum /srv/tftpboot/openstack-ironic-image/initrd*.zst /srv/tftpboot/openstack-ironic-image/openstack-ironic-image*.kernel > /tmp/images.sha256
|
||||||
|
# configure non-root user
|
||||||
|
COPY configure-nonroot.sh /bin/
|
||||||
|
RUN set -euo pipefail; chmod +x /bin/configure-nonroot.sh
|
||||||
|
RUN set -euo pipefail; /bin/configure-nonroot.sh && rm -f /bin/configure-nonroot.sh
|
||||||
|
COPY get-resource.sh /usr/local/bin/get-resource.sh
|
||||||
|
|
||||||
|
RUN set -euo pipefail; chmod +x /usr/local/bin/get-resource.sh
|
4
ironic-ipa-downloader-image/_multibuild
Normal file
4
ironic-ipa-downloader-image/_multibuild
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<multibuild>
|
||||||
|
<flavor>x86_64</flavor>
|
||||||
|
<flavor>aarch64</flavor>
|
||||||
|
</multibuild>
|
@@ -2,6 +2,8 @@
|
|||||||
<service mode="buildtime" name="kiwi_metainfo_helper"/>
|
<service mode="buildtime" name="kiwi_metainfo_helper"/>
|
||||||
<service mode="buildtime" name="docker_label_helper"/>
|
<service mode="buildtime" name="docker_label_helper"/>
|
||||||
<service name="replace_using_env" mode="buildtime">
|
<service name="replace_using_env" mode="buildtime">
|
||||||
|
<param name="file">Dockerfile.aarch64</param>
|
||||||
|
<param name="file">Dockerfile.x86_64</param>
|
||||||
<param name="file">Dockerfile</param>
|
<param name="file">Dockerfile</param>
|
||||||
<param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param>
|
<param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param>
|
||||||
<param name="var">IMG_PREFIX</param>
|
<param name="var">IMG_PREFIX</param>
|
||||||
|
@@ -26,11 +26,15 @@ if [ -z "${IPA_BASEURI}" ]; then
|
|||||||
IMAGE_CHANGED=1
|
IMAGE_CHANGED=1
|
||||||
# SLES BASED IPA - ironic-ipa-ramdisk-x86_64 and ironic-ipa-ramdisk-aarch64 packages
|
# SLES BASED IPA - ironic-ipa-ramdisk-x86_64 and ironic-ipa-ramdisk-aarch64 packages
|
||||||
mkdir -p /shared/html/images
|
mkdir -p /shared/html/images
|
||||||
cp /tmp/initrd-x86_64.zst /shared/html/images/ironic-python-agent-x86_64.initramfs
|
if [ -f /tmp/initrd-x86_64.zst ]; then
|
||||||
cp /tmp/openstack-ironic-image.x86_64*.kernel /shared/html/images/ironic-python-agent-x86_64.kernel
|
cp /tmp/initrd-x86_64.zst /shared/html/images/ironic-python-agent-x86_64.initramfs
|
||||||
|
cp /tmp/openstack-ironic-image.x86_64*.kernel /shared/html/images/ironic-python-agent-x86_64.kernel
|
||||||
|
fi
|
||||||
# Use arm64 as destination for iPXE compatibility
|
# Use arm64 as destination for iPXE compatibility
|
||||||
cp /tmp/initrd-aarch64.zst /shared/html/images/ironic-python-agent-arm64.initramfs
|
if [ -f /tmp/initrd-aarch64.zst ]; then
|
||||||
cp /tmp/openstack-ironic-image.aarch64*.kernel /shared/html/images/ironic-python-agent-arm64.kernel
|
cp /tmp/initrd-aarch64.zst /shared/html/images/ironic-python-agent-arm64.initramfs
|
||||||
|
cp /tmp/openstack-ironic-image.aarch64*.kernel /shared/html/images/ironic-python-agent-arm64.kernel
|
||||||
|
fi
|
||||||
|
|
||||||
cp /tmp/images.sha256 /shared/images.sha256
|
cp /tmp/images.sha256 /shared/images.sha256
|
||||||
else
|
else
|
||||||
|
@@ -13,11 +13,6 @@ echo "Configure image: [$kiwi_iname]..."
|
|||||||
#------------------------------------------
|
#------------------------------------------
|
||||||
baseSetupBuildDay
|
baseSetupBuildDay
|
||||||
|
|
||||||
#======================================
|
|
||||||
# Mount system filesystems
|
|
||||||
#--------------------------------------
|
|
||||||
#baseMount
|
|
||||||
|
|
||||||
#==========================================
|
#==========================================
|
||||||
# remove unneded kernel files
|
# remove unneded kernel files
|
||||||
#------------------------------------------
|
#------------------------------------------
|
||||||
@@ -39,12 +34,8 @@ suseImportBuildKey
|
|||||||
#--------------------------------------
|
#--------------------------------------
|
||||||
baseInsertService openstack-ironic-python-agent
|
baseInsertService openstack-ironic-python-agent
|
||||||
baseInsertService suse-ironic-image-setup
|
baseInsertService suse-ironic-image-setup
|
||||||
baseInsertService suse-network-setup
|
|
||||||
baseInsertService sshd
|
baseInsertService sshd
|
||||||
baseInsertService NetworkManager
|
baseInsertService NetworkManager
|
||||||
#suseInsertService sshd
|
|
||||||
#suseInsertService openstack-ironic-python-agent
|
|
||||||
#suseInsertService suse-ironic-image-setup
|
|
||||||
|
|
||||||
echo 'DEFAULT_TIMEZONE="UTC"' >> /etc/sysconfig/clock
|
echo 'DEFAULT_TIMEZONE="UTC"' >> /etc/sysconfig/clock
|
||||||
baseUpdateSysConfig /etc/sysconfig/clock HWCLOCK "-u"
|
baseUpdateSysConfig /etc/sysconfig/clock HWCLOCK "-u"
|
||||||
@@ -64,42 +55,7 @@ sed -E 's/^(ExecStart=.*\/agetty).*(--noclear.*)/\1 \2 --autologin root/' /usr/l
|
|||||||
#------------------------------------------
|
#------------------------------------------
|
||||||
echo 'tmpfs /tmp tmpfs size=3G 0 0' >> /etc/fstab
|
echo 'tmpfs /tmp tmpfs size=3G 0 0' >> /etc/fstab
|
||||||
|
|
||||||
#==========================================
|
|
||||||
# remove package docs and manuals
|
|
||||||
#------------------------------------------
|
|
||||||
#baseStripDocs
|
|
||||||
#baseStripMans
|
|
||||||
#baseStripInfos
|
|
||||||
|
|
||||||
#======================================
|
|
||||||
# only basic version of vim is
|
|
||||||
# installed; no syntax highlighting
|
|
||||||
#--------------------------------------
|
|
||||||
sed -i -e's/^syntax on/" syntax on/' /etc/vimrc
|
|
||||||
|
|
||||||
#======================================
|
|
||||||
# Remove yast if not in use
|
|
||||||
#--------------------------------------
|
|
||||||
#suseRemoveYaST
|
|
||||||
|
|
||||||
#======================================
|
|
||||||
# Remove package manager
|
|
||||||
#--------------------------------------
|
|
||||||
#suseStripPackager
|
|
||||||
|
|
||||||
#rm -f usr/lib/perl5/*/*/auto/Encode/??/??.so # 9MB
|
|
||||||
|
|
||||||
#======================================
|
|
||||||
# Umount kernel filesystems
|
|
||||||
#--------------------------------------
|
|
||||||
#baseCleanMount
|
|
||||||
|
|
||||||
ln -s /sbin/init /init
|
ln -s /sbin/init /init
|
||||||
|
|
||||||
#==========================================
|
|
||||||
# umount
|
|
||||||
#------------------------------------------
|
|
||||||
umount /proc >/dev/null 2>&1
|
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|
||||||
|
@@ -12,6 +12,7 @@
|
|||||||
<locale>en_US</locale>
|
<locale>en_US</locale>
|
||||||
<packagemanager>zypper</packagemanager>
|
<packagemanager>zypper</packagemanager>
|
||||||
<rpm-check-signatures>false</rpm-check-signatures>
|
<rpm-check-signatures>false</rpm-check-signatures>
|
||||||
|
<rpm-excludedocs>true</rpm-excludedocs>
|
||||||
<timezone>UTC</timezone>
|
<timezone>UTC</timezone>
|
||||||
<version>1.0.0</version>
|
<version>1.0.0</version>
|
||||||
</preferences>
|
</preferences>
|
||||||
@@ -102,62 +103,23 @@
|
|||||||
<package name="libxcb-render0"/>
|
<package name="libxcb-render0"/>
|
||||||
<package name="libxcb-shm0"/>
|
<package name="libxcb-shm0"/>
|
||||||
<package name="libxcb1"/>
|
<package name="libxcb1"/>
|
||||||
<package name="plymouth"/>
|
<package name="kernel-firmware-amdgpu"/>
|
||||||
<package name="plymouth-branding-SLE"/>
|
<package name="kernel-firmware-ath10k"/>
|
||||||
</packages>
|
<package name="kernel-firmware-ath11k"/>
|
||||||
|
<package name="kernel-firmware-ath12k"/>
|
||||||
<packages type="image">
|
<package name="kernel-firmware-atheros"/>
|
||||||
<package name="checkmedia"/>
|
<package name="kernel-firmware-bluetooth"/>
|
||||||
<package name="plymouth-branding-SLE"/>
|
<package name="kernel-firmware-brcm"/>
|
||||||
<package name="plymouth-dracut"/>
|
<package name="kernel-firmware-i915"/>
|
||||||
<package name="plymouth-theme-bgrt"/>
|
<package name="kernel-firmware-iwlwifi"/>
|
||||||
<package name="grub2-branding-SLE"/>
|
<package name="kernel-firmware-media"/>
|
||||||
<package name="iputils"/>
|
<package name="kernel-firmware-nvidia"/>
|
||||||
<package name="vim"/>
|
<package name="kernel-firmware-qcom"/>
|
||||||
<package name="grub2"/>
|
<package name="kernel-firmware-radeon"/>
|
||||||
<package name="grub2-x86_64-efi" arch="x86_64"/>
|
<package name="kernel-firmware-realtek"/>
|
||||||
<package name="grub2-arm64-efi" arch="aarch64"/>
|
<package name="kernel-firmware-sound"/>
|
||||||
<package name="grub2-i386-pc" arch="x86_64"/>
|
<package name="kernel-firmware-ti"/>
|
||||||
<package name="syslinux" arch="x86_64"/>
|
<package name="kernel-firmware-ueagle"/>
|
||||||
<package name="lvm2"/>
|
|
||||||
<package name="plymouth"/>
|
|
||||||
<package name="fontconfig"/>
|
|
||||||
<package name="fonts-config"/>
|
|
||||||
<package name="openssh"/>
|
|
||||||
<package name="iproute2"/>
|
|
||||||
<package name="which"/>
|
|
||||||
<package name="kernel-firmware"/>
|
|
||||||
<package name="kernel-default"/>
|
|
||||||
<package name="NetworkManager"/>
|
|
||||||
<package name="nm-configurator"/>
|
|
||||||
<package name="timezone"/>
|
|
||||||
<package name="haveged"/>
|
|
||||||
<!-- ironic-python-agent specific -->
|
|
||||||
<package name="openstack-ironic-python-agent"/>
|
|
||||||
<package name="hdparm"/>
|
|
||||||
<package name="qemu-tools"/>
|
|
||||||
<package name="python311-proliantutils"/>
|
|
||||||
<package name="lshw"/>
|
|
||||||
<package name="dmidecode"/>
|
|
||||||
<package name="efibootmgr"/>
|
|
||||||
<package name="gptfdisk"/>
|
|
||||||
<package name="open-iscsi"/>
|
|
||||||
<package name="hwinfo"/>
|
|
||||||
<package name="ipmitool"/>
|
|
||||||
<package name="iputils"/>
|
|
||||||
<package name="lvm2"/>
|
|
||||||
<package name="net-tools"/>
|
|
||||||
<package name="ntp"/>
|
|
||||||
<package name="parted"/>
|
|
||||||
<package name="psmisc"/>
|
|
||||||
<package name="timezone"/>
|
|
||||||
<package name="which"/>
|
|
||||||
<package name="kbd"/>
|
|
||||||
</packages>
|
|
||||||
|
|
||||||
<packages type="kis">
|
|
||||||
<package name="dracut-kiwi-oem-repart"/>
|
|
||||||
<package name="dracut-kiwi-oem-dump"/>
|
|
||||||
</packages>
|
</packages>
|
||||||
|
|
||||||
<packages type="bootstrap">
|
<packages type="bootstrap">
|
||||||
@@ -167,5 +129,50 @@
|
|||||||
<package name="cracklib-dict-full"/>
|
<package name="cracklib-dict-full"/>
|
||||||
<package name="ca-certificates"/>
|
<package name="ca-certificates"/>
|
||||||
<package name="sles-release"/>
|
<package name="sles-release"/>
|
||||||
|
|
||||||
|
<package name="checkmedia"/>
|
||||||
|
<package name="fontconfig"/>
|
||||||
|
<package name="fonts-config"/>
|
||||||
|
<package name="grub2-arm64-efi" arch="aarch64"/>
|
||||||
|
<package name="grub2-branding-SLE"/>
|
||||||
|
<package name="grub2-i386-pc" arch="x86_64"/>
|
||||||
|
<package name="grub2-x86_64-efi" arch="x86_64"/>
|
||||||
|
<package name="grub2"/>
|
||||||
|
<package name="iproute2"/>
|
||||||
|
<package name="iputils"/>
|
||||||
|
<package name="kernel-default"/>
|
||||||
|
<package name="kernel-firmware-all"/>
|
||||||
|
<package name="lvm2"/>
|
||||||
|
<package name="NetworkManager"/>
|
||||||
|
<package name="nm-configurator"/>
|
||||||
|
<package name="openssh"/>
|
||||||
|
<package name="timezone"/>
|
||||||
|
<package name="which"/>
|
||||||
|
<!-- ironic-python-agent specific -->
|
||||||
|
<package name="dmidecode"/>
|
||||||
|
<package name="efibootmgr"/>
|
||||||
|
<package name="gptfdisk"/>
|
||||||
|
<package name="hdparm"/>
|
||||||
|
<package name="hwinfo"/>
|
||||||
|
<package name="ipmitool"/>
|
||||||
|
<package name="iputils"/>
|
||||||
|
<package name="kbd"/>
|
||||||
|
<package name="lshw"/>
|
||||||
|
<package name="lvm2"/>
|
||||||
|
<package name="net-tools"/>
|
||||||
|
<package name="ntp"/>
|
||||||
|
<package name="open-iscsi"/>
|
||||||
|
<package name="openstack-ironic-python-agent"/>
|
||||||
|
<package name="parted"/>
|
||||||
|
<package name="psmisc"/>
|
||||||
|
<package name="python311-proliantutils"/>
|
||||||
|
<package name="qemu-tools"/>
|
||||||
|
<package name="timezone"/>
|
||||||
|
<package name="which"/>
|
||||||
|
</packages>
|
||||||
|
|
||||||
|
<packages type="kis">
|
||||||
|
<package name="dracut-kiwi-oem-repart"/>
|
||||||
|
<package name="dracut-kiwi-oem-dump"/>
|
||||||
</packages>
|
</packages>
|
||||||
</image>
|
</image>
|
||||||
|
@@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
|
|
||||||
Name: ironic-ipa-ramdisk
|
Name: ironic-ipa-ramdisk
|
||||||
Version: 3.0.3
|
Version: 3.0.7
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: Kernel and ramdisk image for OpenStack Ironic
|
Summary: Kernel and ramdisk image for OpenStack Ironic
|
||||||
License: SUSE-EULA
|
License: SUSE-EULA
|
||||||
@@ -27,7 +27,7 @@ Group: System/Management
|
|||||||
URL: https://github.com/SUSE-Cloud/
|
URL: https://github.com/SUSE-Cloud/
|
||||||
Source0: config.sh
|
Source0: config.sh
|
||||||
Source10: ironic-ipa-ramdisk.kiwi
|
Source10: ironic-ipa-ramdisk.kiwi
|
||||||
Source20: root.tar.bz2
|
Source20: root
|
||||||
|
|
||||||
BuildRequires: -post-build-checks
|
BuildRequires: -post-build-checks
|
||||||
BuildRequires: bash
|
BuildRequires: bash
|
||||||
@@ -38,7 +38,7 @@ BuildArch: noarch
|
|||||||
|
|
||||||
BuildRequires: checkmedia
|
BuildRequires: checkmedia
|
||||||
BuildRequires: acl
|
BuildRequires: acl
|
||||||
BuildRequires: ca-certificates
|
BuildRequires: ca-certificates-mozilla-prebuilt
|
||||||
BuildRequires: cracklib-dict-full
|
BuildRequires: cracklib-dict-full
|
||||||
BuildRequires: cron
|
BuildRequires: cron
|
||||||
BuildRequires: dbus-1
|
BuildRequires: dbus-1
|
||||||
@@ -62,7 +62,7 @@ BuildRequires: ipmitool
|
|||||||
BuildRequires: iproute2
|
BuildRequires: iproute2
|
||||||
BuildRequires: iputils
|
BuildRequires: iputils
|
||||||
BuildRequires: kernel-default
|
BuildRequires: kernel-default
|
||||||
BuildRequires: kernel-firmware
|
BuildRequires: kernel-firmware-all
|
||||||
BuildRequires: lvm2
|
BuildRequires: lvm2
|
||||||
BuildRequires: net-tools
|
BuildRequires: net-tools
|
||||||
BuildRequires: ntp
|
BuildRequires: ntp
|
||||||
@@ -123,13 +123,13 @@ Kernel and ramdisk image for use with Metal3
|
|||||||
For %{_arch}
|
For %{_arch}
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
mkdir -p /tmp/openstack-ironic-image/build /tmp/openstack-ironic-image/root /tmp/openstack-ironic-image/img
|
mkdir -p /tmp/openstack-ironic-image/build /tmp/openstack-ironic-image/img
|
||||||
|
|
||||||
cp -a %{SOURCE0} /tmp/openstack-ironic-image/config.sh
|
cp -a %{SOURCE0} /tmp/openstack-ironic-image/config.sh
|
||||||
|
|
||||||
cp -a %{SOURCE10} /tmp/openstack-ironic-image/config.kiwi
|
cp -a %{SOURCE10} /tmp/openstack-ironic-image/config.kiwi
|
||||||
|
|
||||||
tar -xC /tmp/openstack-ironic-image/root -f %{SOURCE20}
|
cp -ar %{SOURCE20} /tmp/openstack-ironic-image/root
|
||||||
|
|
||||||
%build
|
%build
|
||||||
if ! which kiwi; then
|
if ! which kiwi; then
|
||||||
|
BIN
ironic-ipa-ramdisk/root.tar.bz2
(Stored with Git LFS)
BIN
ironic-ipa-ramdisk/root.tar.bz2
(Stored with Git LFS)
Binary file not shown.
@@ -0,0 +1,24 @@
|
|||||||
|
# WARNING: This file has been modified by the diskimage-builder
|
||||||
|
# dhcp-all-interfaces element as this machine is likely running
|
||||||
|
# a ramdisk or needs to attempt auto-configuration on all interfaces.
|
||||||
|
[main]
|
||||||
|
# This makes sense even with dhcp on all interfaces in the event
|
||||||
|
# that the configuration has been or is being supplied via external means.
|
||||||
|
ignore-carrier=*
|
||||||
|
# Use dhclient as was done previously to the Centos8/RHEL8 RPM defaults.
|
||||||
|
# This is because dhclient shuts the interface down after a retry attempt
|
||||||
|
# which allows the link state to reset with some switches, which may be
|
||||||
|
# important for the ramdisk to recover networking.
|
||||||
|
dhcp=dhclient
|
||||||
|
|
||||||
|
[connection]
|
||||||
|
# Keep retrying, this is important for this important espescialy for
|
||||||
|
# ramdisks in environments where varying switch configurations may
|
||||||
|
# cause traffic to be blocked or intermittent connectivity failures
|
||||||
|
# such as those at an edge site may cause issues.
|
||||||
|
autoconnect-retries=-1
|
||||||
|
# Set the timeout. Diskimage-builder dhcp-all-interfaces has a 30
|
||||||
|
# second default. NetworkManager, by default, is 45 seconds.
|
||||||
|
# In some cases where ramdisks are in use, 60 seconds is advisable.
|
||||||
|
ipv4.dhcp-timeout=30
|
||||||
|
ipv6.dhcp-timeout=30
|
1
ironic-ipa-ramdisk/root/etc/ironic-python-agent.conf.d
Symbolic link
1
ironic-ipa-ramdisk/root/etc/ironic-python-agent.conf.d
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
ironic-python-agent/ironic-python-agent.conf.d
|
1
ironic-ipa-ramdisk/root/etc/issue
Normal file
1
ironic-ipa-ramdisk/root/etc/issue
Normal file
@@ -0,0 +1 @@
|
|||||||
|
SUSE Ironic Python Agent Ramdisk - terminal \l
|
2
ironic-ipa-ramdisk/root/etc/sysctl.d/98-rp_filter.conf
Normal file
2
ironic-ipa-ramdisk/root/etc/sysctl.d/98-rp_filter.conf
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# avoid problems with multiple network interfaces
|
||||||
|
net.ipv4.conf.all.rp_filter=0
|
@@ -0,0 +1,7 @@
|
|||||||
|
[Unit]
|
||||||
|
#WantsMountsFor=/mnt/ipa
|
||||||
|
After=mnt-ipa.mount
|
||||||
|
Wants=mnt-ipa.mount
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStartPre=-/usr/local/bin/suse-network-setup.sh
|
7
ironic-ipa-ramdisk/root/etc/systemd/system/mnt-ipa.mount
Normal file
7
ironic-ipa-ramdisk/root/etc/systemd/system/mnt-ipa.mount
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=config-2 rom consumed by IPA for networking configuration
|
||||||
|
|
||||||
|
[Mount]
|
||||||
|
What=/dev/ipa
|
||||||
|
Where=/mnt/ipa
|
||||||
|
TimeoutSec=30
|
@@ -0,0 +1,12 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Setup ironic-python-agent image
|
||||||
|
After=getty.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=/usr/local/bin/suse-ironic-image-setup.sh
|
||||||
|
StandardOutput=journal+console
|
||||||
|
RemainAfterExit=true
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
@@ -0,0 +1,3 @@
|
|||||||
|
[Unit]
|
||||||
|
Before=local-fs.target
|
||||||
|
WantedBy=local-fs.target
|
@@ -0,0 +1 @@
|
|||||||
|
ACTION=="add|change", SUBSYSTEM=="block", ENV{ID_FS_LABEL}=="config-2", ENV{ID_FS_PUBLISHER_ID}=="?*", PROGRAM="/usr/local/bin/suse-test-config-2.sh", SYMLINK+="ipa"
|
52
ironic-ipa-ramdisk/root/usr/local/bin/suse-ironic-image-setup.sh
Executable file
52
ironic-ipa-ramdisk/root/usr/local/bin/suse-ironic-image-setup.sh
Executable file
@@ -0,0 +1,52 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
PARAMS=$(</proc/cmdline)
|
||||||
|
# find vfloppy device (based on IPA code)
|
||||||
|
VMEDIA_DEVICE=$(find /dev/disk/by-label -iname ir-vfd-dev)
|
||||||
|
# read params from vmedia and prepend them to params from kernel cmdline
|
||||||
|
if [[ -b "$VMEDIA_DEVICE" ]]; then
|
||||||
|
VMEDIA_MOUNT=$(mktemp -d)
|
||||||
|
if mount -o loop $VMEDIA_DEVICE $VMEDIA_MOUNT; then
|
||||||
|
# parameters.txt has one param per line, reformat to match cmdline
|
||||||
|
VMEDIA_PARAMS=$(cat $VMEDIA_MOUNT/parameters.txt | tr '\n' ' ')
|
||||||
|
umount $VMEDIA_MOUNT
|
||||||
|
PARAMS="$VMEDIA_PARAMS $PARAMS"
|
||||||
|
fi
|
||||||
|
rmdir $VMEDIA_MOUNT
|
||||||
|
fi
|
||||||
|
|
||||||
|
# resize /tmp
|
||||||
|
if [[ $PARAMS =~ suse.tmpsize=([^ ]+) ]]; then
|
||||||
|
echo "Resizing /tmp to ${BASH_REMATCH[1]}..."
|
||||||
|
mount -o remount,size=${BASH_REMATCH[1]} /tmp
|
||||||
|
fi
|
||||||
|
# deploy authorized sshkey from kernel command line
|
||||||
|
if [[ $PARAMS =~ sshkey=\"([^\"]+)\" ]]; then
|
||||||
|
echo "Adding authorized SSH key..."
|
||||||
|
(umask 077 ; mkdir -p /root/.ssh)
|
||||||
|
echo "${BASH_REMATCH[1]}" >> /root/.ssh/authorized_keys
|
||||||
|
fi
|
||||||
|
# Inject certs
|
||||||
|
if [[ $PARAMS =~ tls.enabled=(true|True) ]]; then
|
||||||
|
cp /etc/ironic-python-agent.d/ca-certs/* /etc/pki/trust/anchors/
|
||||||
|
cp /etc/ironic-python-agent.d/ca-certs/* /usr/share/pki/trust/anchors/
|
||||||
|
update-ca-certificates
|
||||||
|
fi
|
||||||
|
# autologin root on given console (default tty1) if suse.autologin or coreos.autologin is enabled
|
||||||
|
if [[ $PARAMS =~ (suse|coreos)\.autologin=?([^ ]*) ]]; then
|
||||||
|
tty="${BASH_REMATCH[2]:-tty1}"
|
||||||
|
echo "Enabling autologin on $tty..."
|
||||||
|
systemctl stop getty@$tty
|
||||||
|
systemctl disable getty@$tty
|
||||||
|
systemctl start autologin@$tty
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Append to /etc/hosts
|
||||||
|
# hosts.append=1.2.3.4_foo,4.5.6.7_foo2
|
||||||
|
if [[ $PARAMS =~ hosts.append=([^ ]+) ]]; then
|
||||||
|
HOSTS=${BASH_REMATCH[1]}
|
||||||
|
echo "Appending to hosts ${HOSTS}..."
|
||||||
|
for h in ${HOSTS/,/ }; do
|
||||||
|
echo "${h/_/ }" >> /etc/hosts
|
||||||
|
done
|
||||||
|
cat /etc/hosts
|
||||||
|
fi
|
24
ironic-ipa-ramdisk/root/usr/local/bin/suse-network-setup.sh
Executable file
24
ironic-ipa-ramdisk/root/usr/local/bin/suse-network-setup.sh
Executable file
@@ -0,0 +1,24 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
# Inspired by/based on glean-early.sh
|
||||||
|
# https://opendev.org/opendev/glean/src/branch/master/glean/init/glean-early.sh
|
||||||
|
|
||||||
|
# NOTE(TheJulia): We care about iso images, and would expect lower case as a
|
||||||
|
# result. In the case of VFAT partitions, they would be upper case.
|
||||||
|
|
||||||
|
PATH=/bin:/usr/bin:/sbin:/usr/sbin
|
||||||
|
NETWORK_DATA_FILE="/mnt/ipa/openstack/latest/network_data.json"
|
||||||
|
|
||||||
|
|
||||||
|
if [ ! -f "${NETWORK_DATA_FILE}" ]; then
|
||||||
|
echo "No network_data.json found, skipping network configuration"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p /tmp/nmc/{desired,generated}
|
||||||
|
cp ${NETWORK_DATA_FILE} /tmp/nmc/desired/_all.yaml
|
||||||
|
|
||||||
|
nmc generate --config-dir /tmp/nmc/desired --output-dir /tmp/nmc/generated
|
||||||
|
nmc apply --config-dir /tmp/nmc/generated
|
23
ironic-ipa-ramdisk/root/usr/local/bin/suse-test-config-2.sh
Executable file
23
ironic-ipa-ramdisk/root/usr/local/bin/suse-test-config-2.sh
Executable file
@@ -0,0 +1,23 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
PATH=/bin:/usr/bin:/sbin:/usr/sbin
|
||||||
|
|
||||||
|
# Transform the ID from the drive being considered to lower case
|
||||||
|
device_publisher_id=$(echo ${ID_FS_PUBLISHER_ID} | tr '[A-Z]' '[a-z]')
|
||||||
|
|
||||||
|
# Retrieve the publisher ID from the command line and convert to lower case
|
||||||
|
cmdline_publisher_id=""
|
||||||
|
if grep -q "ir_pub_id" /proc/cmdline; then
|
||||||
|
cmdline_publisher_id=$(cat /proc/cmdline | sed -e 's/^.*ir_pub_id=//' -e 's/ .*$//')
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Is this the filesystem we are looking for?
|
||||||
|
if [[ "${cmdline_publisher_id}" == "${device_publisher_id}" ]]; then
|
||||||
|
# It is the device we are looking for, return success
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
# Not a match, return failure
|
||||||
|
exit 1
|
||||||
|
fi
|
@@ -1,6 +1,7 @@
|
|||||||
#!BuildTag: %%IMG_PREFIX%%kiwi-builder:%%kiwi_version%%.0-%RELEASE%
|
#!BuildTag: %%IMG_PREFIX%%kiwi-builder:10.2.12.0-%RELEASE%
|
||||||
#!BuildTag: %%IMG_PREFIX%%kiwi-builder:%%kiwi_version%%.0
|
#!BuildTag: %%IMG_PREFIX%%kiwi-builder:10.2.12.0
|
||||||
|
|
||||||
|
# Base image version, should match the tag above
|
||||||
ARG KIWIVERSION="10.2.12"
|
ARG KIWIVERSION="10.2.12"
|
||||||
FROM registry.suse.com/bci/kiwi:${KIWIVERSION}
|
FROM registry.suse.com/bci/kiwi:${KIWIVERSION}
|
||||||
ARG KIWIVERSION
|
ARG KIWIVERSION
|
||||||
@@ -10,11 +11,11 @@ ARG KIWIVERSION
|
|||||||
LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)"
|
LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)"
|
||||||
LABEL org.opencontainers.image.title="SLE Kiwi Builder Container Image"
|
LABEL org.opencontainers.image.title="SLE Kiwi Builder Container Image"
|
||||||
LABEL org.opencontainers.image.description="kiwi-builder based on the SLE Base Container Image."
|
LABEL org.opencontainers.image.description="kiwi-builder based on the SLE Base Container Image."
|
||||||
LABEL org.opencontainers.image.version="%%kiwi_version%%"
|
LABEL org.opencontainers.image.version="${KIWIVERSION}"
|
||||||
LABEL org.opencontainers.image.url="https://www.suse.com/solutions/edge-computing/"
|
LABEL org.opencontainers.image.url="https://www.suse.com/solutions/edge-computing/"
|
||||||
LABEL org.opencontainers.image.created="%BUILDTIME%"
|
LABEL org.opencontainers.image.created="%BUILDTIME%"
|
||||||
LABEL org.opencontainers.image.vendor="SUSE LLC"
|
LABEL org.opencontainers.image.vendor="SUSE LLC"
|
||||||
LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%kiwi-builder:%%kiwi_version%%.0-%RELEASE%"
|
LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%kiwi-builder:${KIWIVERSION}.0-%RELEASE%"
|
||||||
LABEL org.openbuildservice.disturl="%DISTURL%"
|
LABEL org.openbuildservice.disturl="%DISTURL%"
|
||||||
LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%"
|
LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%"
|
||||||
LABEL com.suse.eula="SUSE Combined EULA February 2024"
|
LABEL com.suse.eula="SUSE Combined EULA February 2024"
|
||||||
@@ -23,9 +24,6 @@ LABEL com.suse.image-type="application"
|
|||||||
LABEL com.suse.release-stage="released"
|
LABEL com.suse.release-stage="released"
|
||||||
# endlabelprefix
|
# endlabelprefix
|
||||||
|
|
||||||
# help the build service understand the need for python3-kiwi
|
|
||||||
RUN zypper -n install -d -D python3-kiwi; [ "%%kiwi_version%%" = "${KIWIVERSION}" ] || { echo "expected kiwi version ${KIWIVERSION}: version mismatch"; exit 1; }
|
|
||||||
|
|
||||||
# Copy build script into image and make it executable
|
# Copy build script into image and make it executable
|
||||||
ADD build-image.sh /usr/bin/build-image
|
ADD build-image.sh /usr/bin/build-image
|
||||||
RUN chmod a+x /usr/bin/build-image
|
RUN chmod a+x /usr/bin/build-image
|
||||||
|
@@ -1,15 +1,9 @@
|
|||||||
<services>
|
<services>
|
||||||
<service mode="buildtime" name="kiwi_metainfo_helper"/>
|
<service mode="buildtime" name="kiwi_metainfo_helper"/>
|
||||||
<service name="docker_label_helper" mode="buildtime"/>
|
<service name="docker_label_helper" mode="buildtime"/>
|
||||||
<service name="replace_using_env" mode="buildtime">
|
|
||||||
<param name="file">README</param>
|
|
||||||
<param name="eval">IMG_REPO=$(rpm --macros=/root/.rpmmacros -E %img_repo)</param>
|
|
||||||
<param name="var">IMG_REPO</param>
|
|
||||||
<param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param>
|
|
||||||
<param name="var">IMG_PREFIX</param>
|
|
||||||
</service>
|
|
||||||
<service name="replace_using_env" mode="buildtime">
|
<service name="replace_using_env" mode="buildtime">
|
||||||
<param name="file">Dockerfile</param>
|
<param name="file">Dockerfile</param>
|
||||||
|
<param name="file">README</param>
|
||||||
<param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param>
|
<param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param>
|
||||||
<param name="var">IMG_PREFIX</param>
|
<param name="var">IMG_PREFIX</param>
|
||||||
<param name="eval">IMG_REPO=$(rpm --macros=/root/.rpmmacros -E %img_repo)</param>
|
<param name="eval">IMG_REPO=$(rpm --macros=/root/.rpmmacros -E %img_repo)</param>
|
||||||
@@ -17,14 +11,4 @@
|
|||||||
<param name="eval">SUPPORT_LEVEL=$(rpm --macros=/root/.rpmmacros -E %support_level)</param>
|
<param name="eval">SUPPORT_LEVEL=$(rpm --macros=/root/.rpmmacros -E %support_level)</param>
|
||||||
<param name="var">SUPPORT_LEVEL</param>
|
<param name="var">SUPPORT_LEVEL</param>
|
||||||
</service>
|
</service>
|
||||||
<service mode="buildtime" name="replace_using_package_version">
|
|
||||||
<param name="file">Dockerfile</param>
|
|
||||||
<param name="regex">%%kiwi_version%%</param>
|
|
||||||
<param name="package">python3-kiwi</param>
|
|
||||||
</service>
|
|
||||||
<service mode="buildtime" name="replace_using_package_version">
|
|
||||||
<param name="file">README</param>
|
|
||||||
<param name="regex">%%kiwi_version%%</param>
|
|
||||||
<param name="package">python3-kiwi</param>
|
|
||||||
</service>
|
|
||||||
</services>
|
</services>
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
#!BuildTag: %%IMG_PREFIX%%kubectl:1.30.3
|
#!BuildTag: %%IMG_PREFIX%%kubectl:1.32.4
|
||||||
#!BuildTag: %%IMG_PREFIX%%kubectl:1.30.3-%RELEASE%
|
#!BuildTag: %%IMG_PREFIX%%kubectl:1.32.4-%RELEASE%
|
||||||
#!BuildVersion: 15.6
|
#!BuildVersion: 15.6
|
||||||
ARG SLE_VERSION
|
ARG SLE_VERSION
|
||||||
FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro
|
FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro
|
||||||
@@ -16,11 +16,11 @@ FROM micro AS final
|
|||||||
LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)"
|
LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)"
|
||||||
LABEL org.opencontainers.image.title="SLE kubectl image"
|
LABEL org.opencontainers.image.title="SLE kubectl image"
|
||||||
LABEL org.opencontainers.image.description="kubectl on the SLE Base Container Image."
|
LABEL org.opencontainers.image.description="kubectl on the SLE Base Container Image."
|
||||||
LABEL org.opencontainers.image.version="1.30.3"
|
LABEL org.opencontainers.image.version="1.32.4"
|
||||||
LABEL org.opencontainers.image.url="https://www.suse.com/solutions/edge-computing/"
|
LABEL org.opencontainers.image.url="https://www.suse.com/solutions/edge-computing/"
|
||||||
LABEL org.opencontainers.image.created="%BUILDTIME%"
|
LABEL org.opencontainers.image.created="%BUILDTIME%"
|
||||||
LABEL org.opencontainers.image.vendor="SUSE LLC"
|
LABEL org.opencontainers.image.vendor="SUSE LLC"
|
||||||
LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%kubectl:1.30.3-%RELEASE%"
|
LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%kubectl:1.32.4-%RELEASE%"
|
||||||
LABEL org.openbuildservice.disturl="%DISTURL%"
|
LABEL org.openbuildservice.disturl="%DISTURL%"
|
||||||
LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%"
|
LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%"
|
||||||
LABEL com.suse.eula="SUSE Combined EULA February 2024"
|
LABEL com.suse.eula="SUSE Combined EULA February 2024"
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
%global debug_package %{nil}
|
%global debug_package %{nil}
|
||||||
|
|
||||||
Name: kubectl
|
Name: kubectl
|
||||||
Version: 1.30.3
|
Version: 1.32.4
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: Command-line utility for interacting with a Kubernetes cluster
|
Summary: Command-line utility for interacting with a Kubernetes cluster
|
||||||
|
|
||||||
@@ -12,7 +12,7 @@ Group: admin
|
|||||||
Packager: Kubernetes Authors <dev@kubernetes.io>
|
Packager: Kubernetes Authors <dev@kubernetes.io>
|
||||||
License: Apache-2.0
|
License: Apache-2.0
|
||||||
URL: https://kubernetes.io
|
URL: https://kubernetes.io
|
||||||
Source0: kubectl_%{version}.orig.tar.gz
|
Source0: %{name}_%{version}.orig.tar.gz
|
||||||
|
|
||||||
%description
|
%description
|
||||||
%{summary}.
|
%{summary}.
|
||||||
|
BIN
kubectl/kubectl_1.30.3.orig.tar.gz
(Stored with Git LFS)
BIN
kubectl/kubectl_1.30.3.orig.tar.gz
(Stored with Git LFS)
Binary file not shown.
BIN
kubectl/kubectl_1.32.4.orig.tar.gz
(Stored with Git LFS)
Normal file
BIN
kubectl/kubectl_1.32.4.orig.tar.gz
(Stored with Git LFS)
Normal file
Binary file not shown.
@@ -1,6 +1,5 @@
|
|||||||
#!BuildTag: %%CHART_PREFIX%%kubevirt-dashboard-extension:%%CHART_MAJOR%%.0.1
|
#!BuildTag: %%CHART_PREFIX%%kubevirt-dashboard-extension:%%CHART_MAJOR%%.0.2_up1.3.2
|
||||||
#!BuildTag: %%CHART_PREFIX%%kubevirt-dashboard-extension:%%CHART_MAJOR%%.0.1_up1.3.1
|
#!BuildTag: %%CHART_PREFIX%%kubevirt-dashboard-extension:%%CHART_MAJOR%%.0.2_up1.3.2-%RELEASE%
|
||||||
#!BuildTag: %%CHART_PREFIX%%kubevirt-dashboard-extension:%%CHART_MAJOR%%.0.1_up1.3.1-%RELEASE%
|
|
||||||
annotations:
|
annotations:
|
||||||
catalog.cattle.io/certified: rancher
|
catalog.cattle.io/certified: rancher
|
||||||
catalog.cattle.io/namespace: cattle-ui-plugin-system
|
catalog.cattle.io/namespace: cattle-ui-plugin-system
|
||||||
@@ -10,13 +9,13 @@ annotations:
|
|||||||
catalog.cattle.io/ui-component: plugins
|
catalog.cattle.io/ui-component: plugins
|
||||||
catalog.cattle.io/display-name: KubeVirt
|
catalog.cattle.io/display-name: KubeVirt
|
||||||
catalog.cattle.io/rancher-version: '>= 2.11.0-0'
|
catalog.cattle.io/rancher-version: '>= 2.11.0-0'
|
||||||
catalog.cattle.io/ui-extensions-version: '>= 3.0.4 < 4.0.0'
|
catalog.cattle.io/ui-extensions-version: '>= 3.0.2 < 4.0.0'
|
||||||
catalog.cattle.io/kube-version: '>= v1.26.0-0'
|
catalog.cattle.io/kube-version: '>= v1.26.0-0'
|
||||||
apiVersion: v2
|
apiVersion: v2
|
||||||
appVersion: 303.0.1+up1.3.1
|
appVersion: 303.0.2+up1.3.2
|
||||||
description: 'SUSE Edge: KubeVirt extension for Rancher Dashboard'
|
description: 'SUSE Edge: KubeVirt extension for Rancher Dashboard'
|
||||||
name: kubevirt-dashboard-extension
|
name: kubevirt-dashboard-extension
|
||||||
type: application
|
type: application
|
||||||
version: "%%CHART_MAJOR%%.0.1+up1.3.1"
|
version: "%%CHART_MAJOR%%.0.2+up1.3.2"
|
||||||
icon: >-
|
icon: >-
|
||||||
https://raw.githubusercontent.com/cncf/artwork/master/projects/kubevirt/icon/color/kubevirt-icon-color.svg
|
https://raw.githubusercontent.com/cncf/artwork/master/projects/kubevirt/icon/color/kubevirt-icon-color.svg
|
||||||
|
@@ -8,7 +8,7 @@ spec:
|
|||||||
plugin:
|
plugin:
|
||||||
name: {{ include "extension-server.fullname" . }}
|
name: {{ include "extension-server.fullname" . }}
|
||||||
version: {{ (semver (default .Chart.AppVersion .Values.plugin.versionOverride)).Original }}
|
version: {{ (semver (default .Chart.AppVersion .Values.plugin.versionOverride)).Original }}
|
||||||
endpoint: https://raw.githubusercontent.com/suse-edge/dashboard-extensions/gh-pages/extensions/kubevirt-dashboard-extension/303.0.1+up1.3.1
|
endpoint: https://raw.githubusercontent.com/suse-edge/dashboard-extensions/gh-pages/extensions/kubevirt-dashboard-extension/303.0.2+up1.3.2
|
||||||
noCache: {{ .Values.plugin.noCache }}
|
noCache: {{ .Values.plugin.noCache }}
|
||||||
noAuth: {{ .Values.plugin.noAuth }}
|
noAuth: {{ .Values.plugin.noAuth }}
|
||||||
metadata: {{ include "extension-server.pluginMetadata" . | indent 6 }}
|
metadata: {{ include "extension-server.pluginMetadata" . | indent 6 }}
|
||||||
|
@@ -8,5 +8,5 @@ plugin:
|
|||||||
metadata:
|
metadata:
|
||||||
catalog.cattle.io/display-name: KubeVirt
|
catalog.cattle.io/display-name: KubeVirt
|
||||||
catalog.cattle.io/rancher-version: ">= 2.11.0-0"
|
catalog.cattle.io/rancher-version: ">= 2.11.0-0"
|
||||||
catalog.cattle.io/ui-extensions-version: ">= 3.0.4 < 4.0.0"
|
catalog.cattle.io/ui-extensions-version: ">= 3.0.2 < 4.0.0"
|
||||||
catalog.cattle.io/kube-version: ">= v1.26.0-0"
|
catalog.cattle.io/kube-version: ">= v1.26.0-0"
|
||||||
|
@@ -1,28 +1,28 @@
|
|||||||
#!BuildTag: %%CHART_PREFIX%%metal3:%%CHART_MAJOR%%.0.2_up0.11.0
|
#!BuildTag: %%CHART_PREFIX%%metal3:%%CHART_MAJOR%%.0.8_up0.11.6
|
||||||
#!BuildTag: %%CHART_PREFIX%%metal3:%%CHART_MAJOR%%.0.2_up0.11.0-%RELEASE%
|
#!BuildTag: %%CHART_PREFIX%%metal3:%%CHART_MAJOR%%.0.8_up0.11.6-%RELEASE%
|
||||||
apiVersion: v2
|
apiVersion: v2
|
||||||
appVersion: 0.11.0
|
appVersion: 0.11.6
|
||||||
dependencies:
|
dependencies:
|
||||||
- alias: metal3-baremetal-operator
|
- alias: metal3-baremetal-operator
|
||||||
name: baremetal-operator
|
name: baremetal-operator
|
||||||
repository: file://./charts/baremetal-operator
|
repository: file://./charts/baremetal-operator
|
||||||
version: 0.9.1
|
version: 0.9.2
|
||||||
- alias: metal3-ironic
|
- alias: metal3-ironic
|
||||||
name: ironic
|
name: ironic
|
||||||
repository: file://./charts/ironic
|
repository: file://./charts/ironic
|
||||||
version: 0.10.0
|
version: 0.10.5
|
||||||
- alias: metal3-mariadb
|
- alias: metal3-mariadb
|
||||||
condition: global.enable_mariadb
|
condition: global.enable_mariadb
|
||||||
name: mariadb
|
name: mariadb
|
||||||
repository: file://./charts/mariadb
|
repository: file://./charts/mariadb
|
||||||
version: 0.5.4
|
version: 0.6.0
|
||||||
- alias: metal3-media
|
- alias: metal3-media
|
||||||
condition: global.enable_metal3_media_server
|
condition: global.enable_metal3_media_server
|
||||||
name: media
|
name: media
|
||||||
repository: file://./charts/media
|
repository: file://./charts/media
|
||||||
version: 0.6.1
|
version: 0.6.2
|
||||||
description: A Helm chart that installs all of the dependencies needed for Metal3
|
description: A Helm chart that installs all of the dependencies needed for Metal3
|
||||||
icon: https://github.com/cncf/artwork/raw/master/projects/metal3/icon/color/metal3-icon-color.svg
|
icon: https://github.com/cncf/artwork/raw/master/projects/metal3/icon/color/metal3-icon-color.svg
|
||||||
name: metal3
|
name: metal3
|
||||||
type: application
|
type: application
|
||||||
version: "%%CHART_MAJOR%%.0.2+up0.11.0"
|
version: "%%CHART_MAJOR%%.0.8+up0.11.6"
|
||||||
|
@@ -3,4 +3,4 @@ appVersion: 0.9.1
|
|||||||
description: A Helm chart for baremetal-operator, used by Metal3
|
description: A Helm chart for baremetal-operator, used by Metal3
|
||||||
name: baremetal-operator
|
name: baremetal-operator
|
||||||
type: application
|
type: application
|
||||||
version: 0.9.1
|
version: 0.9.2
|
||||||
|
@@ -10,18 +10,25 @@
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
data:
|
data:
|
||||||
IRONIC_ENDPOINT: "{{ $protocol }}://{{ $ironicApiHost }}/v1/"
|
IRONIC_ENDPOINT: "{{ $protocol }}://{{ $ironicApiHost }}/v1/"
|
||||||
RESTART_CONTAINER_CERTIFICATE_UPDATED: "false"
|
|
||||||
# Switch VMedia to HTTP if enable_vmedia_tls is false
|
# Switch VMedia to HTTP if enable_vmedia_tls is false
|
||||||
{{- if and $enableTLS $enableVMediaTLS }}
|
{{- if and $enableTLS $enableVMediaTLS }}
|
||||||
{{- $ironicBootHost = print $ironicIP ":" .Values.global.vmediaTLSPort }}
|
{{- $ironicBootHost = print $ironicIP ":" .Values.global.vmediaTLSPort }}
|
||||||
{{- $ironicCacheHost = print $ironicIP ":" .Values.global.vmediaTLSPort }}
|
{{- $ironicCacheHost = print $ironicIP ":" .Values.global.vmediaTLSPort }}
|
||||||
{{- $protocol = "https" }}
|
{{- $protocol = "https" }}
|
||||||
|
RESTART_CONTAINER_CERTIFICATE_UPDATED: "true"
|
||||||
{{- else }}
|
{{- else }}
|
||||||
{{- $protocol = "http" }}
|
{{- $protocol = "http" }}
|
||||||
|
RESTART_CONTAINER_CERTIFICATE_UPDATED: "false"
|
||||||
{{- end }}
|
{{- end }}
|
||||||
CACHEURL: "{{ $protocol }}://{{ $ironicCacheHost }}/images"
|
CACHEURL: "{{ $protocol }}://{{ $ironicCacheHost }}/images"
|
||||||
DEPLOY_KERNEL_URL: "{{ $protocol }}://{{ $ironicBootHost }}/images/ironic-python-agent-{{ $deployArch }}.kernel"
|
DEPLOY_KERNEL_URL: "{{ $protocol }}://{{ $ironicBootHost }}/images/ironic-python-agent-{{ $deployArch }}.kernel"
|
||||||
DEPLOY_RAMDISK_URL: "{{ $protocol }}://{{ $ironicBootHost }}/images/ironic-python-agent-{{ $deployArch }}.initramfs"
|
DEPLOY_RAMDISK_URL: "{{ $protocol }}://{{ $ironicBootHost }}/images/ironic-python-agent-{{ $deployArch }}.initramfs"
|
||||||
|
DEPLOY_KERNEL_URL_X86_64: "{{ $protocol }}://{{ $ironicBootHost }}/images/ironic-python-agent-x86_64.kernel"
|
||||||
|
DEPLOY_RAMDISK_URL_X86_64: "{{ $protocol }}://{{ $ironicBootHost }}/images/ironic-python-agent-x86_64.initramfs"
|
||||||
|
DEPLOY_BOOTLOADER_URL_X86_64: "{{ $protocol }}://{{ $ironicBootHost }}/uefi_esp-x86_64.img"
|
||||||
|
DEPLOY_KERNEL_URL_AARCH64: "{{ $protocol }}://{{ $ironicBootHost }}/images/ironic-python-agent-arm64.kernel"
|
||||||
|
DEPLOY_RAMDISK_URL_AARCH64: "{{ $protocol }}://{{ $ironicBootHost }}/images/ironic-python-agent-arm64.initramfs"
|
||||||
|
DEPLOY_BOOTLOADER_URL_AARCH64: "{{ $protocol }}://{{ $ironicBootHost }}/uefi_esp-arm64.img"
|
||||||
DEPLOY_ARCHITECTURE: "{{ $deployArch }}"
|
DEPLOY_ARCHITECTURE: "{{ $deployArch }}"
|
||||||
kind: ConfigMap
|
kind: ConfigMap
|
||||||
metadata:
|
metadata:
|
||||||
|
@@ -1,19 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
data:
|
|
||||||
controller_manager_config.yaml: |
|
|
||||||
apiVersion: controller-runtime.sigs.k8s.io/v1alpha1
|
|
||||||
kind: ControllerManagerConfig
|
|
||||||
health:
|
|
||||||
healthProbeBindAddress: :9440
|
|
||||||
metrics:
|
|
||||||
bindAddress: 127.0.0.1:8085
|
|
||||||
webhook:
|
|
||||||
port: 9443
|
|
||||||
leaderElection:
|
|
||||||
leaderElect: true
|
|
||||||
resourceName: a9498140.metal3.io
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
name: baremetal-operator-manager-config
|
|
||||||
labels:
|
|
||||||
{{- include "baremetal-operator.labels" . | nindent 4 }}
|
|
@@ -17,6 +17,8 @@ spec:
|
|||||||
control-plane: controller-manager
|
control-plane: controller-manager
|
||||||
template:
|
template:
|
||||||
metadata:
|
metadata:
|
||||||
|
annotations:
|
||||||
|
checksum/config-env: {{ include (print $.Template.BasePath "/configmap-ironic.yaml") . | sha256sum }}
|
||||||
labels:
|
labels:
|
||||||
{{- include "baremetal-operator.selectorLabels" . | nindent 8 }}
|
{{- include "baremetal-operator.selectorLabels" . | nindent 8 }}
|
||||||
control-plane: controller-manager
|
control-plane: controller-manager
|
||||||
|
@@ -22,15 +22,13 @@ global:
|
|||||||
# Comment this out when pinning the baremetal-operator container to a specfic host.
|
# Comment this out when pinning the baremetal-operator container to a specfic host.
|
||||||
nodeSelector: {}
|
nodeSelector: {}
|
||||||
|
|
||||||
enable_tls: false
|
|
||||||
|
|
||||||
replicaCount: 1
|
replicaCount: 1
|
||||||
|
|
||||||
images:
|
images:
|
||||||
baremetalOperator:
|
baremetalOperator:
|
||||||
repository: registry.opensuse.org/isv/suse/edge/metal3/containers/images/baremetal-operator
|
repository: registry.opensuse.org/isv/suse/edge/metal3/containers/images/baremetal-operator
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
tag: "0.9.1"
|
tag: "0.10.2.0"
|
||||||
|
|
||||||
imagePullSecrets: []
|
imagePullSecrets: []
|
||||||
nameOverride: "manger"
|
nameOverride: "manger"
|
||||||
|
@@ -3,4 +3,4 @@ appVersion: 26.1.2
|
|||||||
description: A Helm chart for Ironic, used by Metal3
|
description: A Helm chart for Ironic, used by Metal3
|
||||||
name: ironic
|
name: ironic
|
||||||
type: application
|
type: application
|
||||||
version: 0.10.0
|
version: 0.10.5
|
||||||
|
@@ -14,10 +14,11 @@ spec:
|
|||||||
type: Recreate
|
type: Recreate
|
||||||
template:
|
template:
|
||||||
metadata:
|
metadata:
|
||||||
{{- with .Values.podAnnotations }}
|
|
||||||
annotations:
|
annotations:
|
||||||
{{- toYaml . | nindent 8 }}
|
checksum/config-env: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
|
||||||
{{- end }}
|
{{- with .Values.podAnnotations }}
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
labels:
|
labels:
|
||||||
{{- include "ironic.selectorLabels" . | nindent 8 }}
|
{{- include "ironic.selectorLabels" . | nindent 8 }}
|
||||||
spec:
|
spec:
|
||||||
|
@@ -50,8 +50,6 @@ global:
|
|||||||
# Comment this out when pinning the pdns containers to a specfic host.
|
# Comment this out when pinning the pdns containers to a specfic host.
|
||||||
nodeSelector: {}
|
nodeSelector: {}
|
||||||
|
|
||||||
enable_tls: false
|
|
||||||
|
|
||||||
replicaCount: 1
|
replicaCount: 1
|
||||||
|
|
||||||
images:
|
images:
|
||||||
@@ -62,7 +60,7 @@ images:
|
|||||||
ironicIPADownloader:
|
ironicIPADownloader:
|
||||||
repository: registry.opensuse.org/isv/suse/edge/metal3/containers/images/ironic-ipa-downloader
|
repository: registry.opensuse.org/isv/suse/edge/metal3/containers/images/ironic-ipa-downloader
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
tag: 3.0.3
|
tag: 3.0.7
|
||||||
|
|
||||||
nameOverride: ""
|
nameOverride: ""
|
||||||
fullnameOverride: ""
|
fullnameOverride: ""
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
apiVersion: v2
|
apiVersion: v2
|
||||||
appVersion: 10.6.7
|
appVersion: "10.11"
|
||||||
description: A Helm chart for MariaDB, used by Metal3
|
description: A Helm chart for MariaDB, used by Metal3
|
||||||
name: mariadb
|
name: mariadb
|
||||||
type: application
|
type: application
|
||||||
version: 0.5.4
|
version: 0.6.0
|
||||||
|
13
metal3-chart/charts/mariadb/templates/configmap-mariadb.yaml
Normal file
13
metal3-chart/charts/mariadb/templates/configmap-mariadb.yaml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: mariadb-config
|
||||||
|
labels:
|
||||||
|
{{- include "mariadb.labels" . | nindent 4 }}
|
||||||
|
data:
|
||||||
|
ironic.conf: |
|
||||||
|
[mariadb]
|
||||||
|
max_connections 64
|
||||||
|
max_heap_table_size 1M
|
||||||
|
innodb_buffer_pool_size 5M
|
||||||
|
innodb_log_buffer_size 512K
|
@@ -5,4 +5,7 @@ metadata:
|
|||||||
labels:
|
labels:
|
||||||
{{- include "mariadb.labels" . | nindent 4 }}
|
{{- include "mariadb.labels" . | nindent 4 }}
|
||||||
data:
|
data:
|
||||||
RESTART_CONTAINER_CERTIFICATE_UPDATED: "false"
|
MARIADB_USER: ironic
|
||||||
|
MARIADB_RANDOM_ROOT_PASSWORD: "yes"
|
||||||
|
MARIADB_DATABASE: ironic
|
||||||
|
MARIADB_AUTO_UPGRADE: "yes"
|
@@ -25,23 +25,50 @@ spec:
|
|||||||
serviceAccountName: {{ include "mariadb.serviceAccountName" . }}
|
serviceAccountName: {{ include "mariadb.serviceAccountName" . }}
|
||||||
securityContext:
|
securityContext:
|
||||||
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||||
|
initContainers:
|
||||||
|
# This would run during entrypoint if run as root
|
||||||
|
- name: set-volume-owners
|
||||||
|
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
||||||
|
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||||
|
securityContext:
|
||||||
|
runAsUser: 0
|
||||||
|
allowPrivilegeEscalation: true
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- ALL
|
||||||
|
add:
|
||||||
|
- CHOWN
|
||||||
|
- FOWNER
|
||||||
|
- DAC_OVERRIDE
|
||||||
|
seccompProfile:
|
||||||
|
type: RuntimeDefault
|
||||||
|
volumeMounts:
|
||||||
|
- name: mariadb-conf
|
||||||
|
mountPath: /etc/mysql/conf.d
|
||||||
|
- name: mariadb-run
|
||||||
|
mountPath: /run/mysql
|
||||||
|
{{- $volmounts }}
|
||||||
|
command: ['bash', '-c', 'source /usr/local/bin/docker-entrypoint.sh && docker_create_db_directories']
|
||||||
|
env:
|
||||||
|
- name: DATADIR
|
||||||
|
value: /var/lib/mysql
|
||||||
|
- name: SOCKET
|
||||||
|
value: /run/mysql/mysql.sock
|
||||||
containers:
|
containers:
|
||||||
- name: mariadb
|
- name: mariadb
|
||||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
||||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||||
securityContext:
|
securityContext:
|
||||||
{{- toYaml .Values.securityContext | nindent 12 }}
|
{{- toYaml .Values.securityContext | nindent 12 }}
|
||||||
|
envFrom:
|
||||||
|
- configMapRef:
|
||||||
|
name: mariadb-cm
|
||||||
env:
|
env:
|
||||||
- name: MARIADB_PASSWORD
|
- name: MARIADB_PASSWORD
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
key: password
|
key: password
|
||||||
name: ironic-mariadb
|
name: ironic-mariadb
|
||||||
- name: RESTART_CONTAINER_CERTIFICATE_UPDATED
|
|
||||||
valueFrom:
|
|
||||||
configMapKeyRef:
|
|
||||||
name: mariadb-cm
|
|
||||||
key: RESTART_CONTAINER_CERTIFICATE_UPDATED
|
|
||||||
lifecycle:
|
lifecycle:
|
||||||
preStop:
|
preStop:
|
||||||
exec:
|
exec:
|
||||||
@@ -52,9 +79,9 @@ spec:
|
|||||||
livenessProbe:
|
livenessProbe:
|
||||||
exec:
|
exec:
|
||||||
command:
|
command:
|
||||||
- sh
|
- healthcheck.sh
|
||||||
- -c
|
- --connect
|
||||||
- mysqladmin status -uironic -p$(printenv MARIADB_PASSWORD)
|
- --innodb_initialized
|
||||||
failureThreshold: 10
|
failureThreshold: 10
|
||||||
initialDelaySeconds: 30
|
initialDelaySeconds: 30
|
||||||
periodSeconds: 30
|
periodSeconds: 30
|
||||||
@@ -67,19 +94,29 @@ spec:
|
|||||||
readinessProbe:
|
readinessProbe:
|
||||||
exec:
|
exec:
|
||||||
command:
|
command:
|
||||||
- sh
|
- healthcheck.sh
|
||||||
- -c
|
- --connect
|
||||||
- mysqladmin status -uironic -p$(printenv MARIADB_PASSWORD)
|
- --innodb_initialized
|
||||||
failureThreshold: 10
|
failureThreshold: 10
|
||||||
initialDelaySeconds: 30
|
initialDelaySeconds: 30
|
||||||
periodSeconds: 30
|
periodSeconds: 30
|
||||||
successThreshold: 1
|
successThreshold: 1
|
||||||
timeoutSeconds: 10
|
timeoutSeconds: 10
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
|
- name: mariadb-conf
|
||||||
|
mountPath: /etc/mysql/conf.d
|
||||||
|
- name: mariadb-run
|
||||||
|
mountPath: /run/mysql
|
||||||
{{- $volmounts }}
|
{{- $volmounts }}
|
||||||
{{- with .Values.global.nodeSelector }}
|
{{- with .Values.global.nodeSelector }}
|
||||||
nodeSelector:
|
nodeSelector:
|
||||||
{{- toYaml . | nindent 8 }}
|
{{- toYaml . | nindent 8 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
volumes:
|
volumes:
|
||||||
|
- name: mariadb-conf
|
||||||
|
configMap:
|
||||||
|
name: mariadb-config
|
||||||
|
- name: mariadb-run
|
||||||
|
emptyDir:
|
||||||
|
sizeLimit: 20Mi
|
||||||
{{- $volumes }}
|
{{- $volumes }}
|
||||||
|
@@ -12,9 +12,9 @@ service:
|
|||||||
targetPort: 3306
|
targetPort: 3306
|
||||||
|
|
||||||
image:
|
image:
|
||||||
repository: registry.opensuse.org/isv/suse/edge/metal3/containers/images/suse/mariadb
|
repository: registry.suse.com/suse/mariadb
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
tag: 10.6.15.1
|
tag: 10.11
|
||||||
|
|
||||||
nameOverride: ""
|
nameOverride: ""
|
||||||
fullnameOverride: ""
|
fullnameOverride: ""
|
||||||
@@ -31,8 +31,8 @@ serviceAccount:
|
|||||||
podAnnotations: {}
|
podAnnotations: {}
|
||||||
|
|
||||||
podSecurityContext:
|
podSecurityContext:
|
||||||
runAsUser: 10060
|
runAsUser: 60
|
||||||
fsGroup: 10060
|
fsGroup: 60
|
||||||
|
|
||||||
securityContext:
|
securityContext:
|
||||||
allowPrivilegeEscalation: false
|
allowPrivilegeEscalation: false
|
||||||
@@ -60,6 +60,7 @@ persistence:
|
|||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: mariadb-data-volume
|
- name: mariadb-data-volume
|
||||||
mountPath: /var/lib/mysql
|
mountPath: /var/lib/mysql
|
||||||
|
subPath: data
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
- name: mariadb-data-volume
|
- name: mariadb-data-volume
|
||||||
|
@@ -3,4 +3,4 @@ appVersion: 1.16.0
|
|||||||
description: A Helm chart for Media, used by Metal3
|
description: A Helm chart for Media, used by Metal3
|
||||||
name: media
|
name: media
|
||||||
type: application
|
type: application
|
||||||
version: 0.6.1
|
version: 0.6.2
|
||||||
|
@@ -24,7 +24,7 @@ replicaCount: 1
|
|||||||
image:
|
image:
|
||||||
repository: registry.opensuse.org/isv/suse/edge/metal3/containers/images/ironic
|
repository: registry.opensuse.org/isv/suse/edge/metal3/containers/images/ironic
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
tag: 26.1.2.2
|
tag: 26.1.2.4
|
||||||
|
|
||||||
imagePullSecrets: []
|
imagePullSecrets: []
|
||||||
nameOverride: ""
|
nameOverride: ""
|
||||||
|
@@ -115,8 +115,8 @@ metal3-mariadb:
|
|||||||
persistence:
|
persistence:
|
||||||
storageClass: ""
|
storageClass: ""
|
||||||
image:
|
image:
|
||||||
repository: "registry.suse.com/edge/mariadb"
|
repository: "registry.suse.com/suse/mariadb"
|
||||||
tag: "10.6.15.1"
|
tag: "10.11"
|
||||||
|
|
||||||
#
|
#
|
||||||
# Baremetal Operator
|
# Baremetal Operator
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
<param name="url">https://github.com/suse-edge/nm-configurator.git</param>
|
<param name="url">https://github.com/suse-edge/nm-configurator.git</param>
|
||||||
<param name="versionformat">@PARENT_TAG@</param>
|
<param name="versionformat">@PARENT_TAG@</param>
|
||||||
<param name="scm">git</param>
|
<param name="scm">git</param>
|
||||||
<param name="revision">v0.3.2</param>
|
<param name="revision">v0.3.3</param>
|
||||||
<param name="match-tag">*</param>
|
<param name="match-tag">*</param>
|
||||||
<param name="versionrewrite-pattern">v(\d+\.\d+\.\d+)</param>
|
<param name="versionrewrite-pattern">v(\d+\.\d+\.\d+)</param>
|
||||||
<param name="versionrewrite-replacement">\1</param>
|
<param name="versionrewrite-replacement">\1</param>
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
<servicedata>
|
<servicedata>
|
||||||
<service name="tar_scm">
|
<service name="tar_scm">
|
||||||
<param name="url">https://github.com/suse-edge/nm-configurator.git</param>
|
<param name="url">https://github.com/suse-edge/nm-configurator.git</param>
|
||||||
<param name="changesrevision">747301ba15a28e758d1f06070dc7ff29a5e80242</param></service></servicedata>
|
<param name="changesrevision">4563857d761c6d83e4013721f68ec4ac5828a1a7</param></service></servicedata>
|
BIN
nm-configurator/nm-configurator-0.3.2.obscpio
(Stored with Git LFS)
BIN
nm-configurator/nm-configurator-0.3.2.obscpio
(Stored with Git LFS)
Binary file not shown.
BIN
nm-configurator/nm-configurator-0.3.3.obscpio
(Stored with Git LFS)
Normal file
BIN
nm-configurator/nm-configurator-0.3.3.obscpio
(Stored with Git LFS)
Normal file
Binary file not shown.
@@ -1,4 +1,4 @@
|
|||||||
name: nm-configurator
|
name: nm-configurator
|
||||||
version: 0.3.2
|
version: 0.3.3
|
||||||
mtime: 1744218621
|
mtime: 1748341626
|
||||||
commit: 747301ba15a28e758d1f06070dc7ff29a5e80242
|
commit: 4563857d761c6d83e4013721f68ec4ac5828a1a7
|
||||||
|
BIN
nm-configurator/vendor.tar.xz
(Stored with Git LFS)
BIN
nm-configurator/vendor.tar.xz
(Stored with Git LFS)
Binary file not shown.
@@ -1,10 +1,10 @@
|
|||||||
#!BuildTag: %%CHART_PREFIX%%rancher-turtles-airgap-resources:%%CHART_MAJOR%%.0.0_up0.17.0
|
#!BuildTag: %%CHART_PREFIX%%rancher-turtles-airgap-resources:%%CHART_MAJOR%%.0.4_up0.20.0
|
||||||
#!BuildTag: %%CHART_PREFIX%%rancher-turtles-airgap-resources:%%CHART_MAJOR%%.0.0_up0.17.0-%RELEASE%
|
#!BuildTag: %%CHART_PREFIX%%rancher-turtles-airgap-resources:%%CHART_MAJOR%%.0.4_up0.20.0-%RELEASE%
|
||||||
apiVersion: v2
|
apiVersion: v2
|
||||||
appVersion: 0.17.0
|
appVersion: 0.20.0
|
||||||
description: Rancher Turtles utility chart for airgap scenarios
|
description: Rancher Turtles utility chart for airgap scenarios
|
||||||
home: https://github.com/rancher/turtles/
|
home: https://github.com/rancher/turtles/
|
||||||
icon: https://raw.githubusercontent.com/rancher/turtles/main/logos/capi.svg
|
icon: https://raw.githubusercontent.com/rancher/turtles/main/logos/capi.svg
|
||||||
name: rancher-turtles-airgap-resources
|
name: rancher-turtles-airgap-resources
|
||||||
type: application
|
type: application
|
||||||
version: "%%CHART_MAJOR%%.0.0+up0.17.0"
|
version: "%%CHART_MAJOR%%.0.4+up0.20.0"
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
<service mode="buildtime" name="kiwi_metainfo_helper"/>
|
<service mode="buildtime" name="kiwi_metainfo_helper"/>
|
||||||
<service name="replace_using_env" mode="buildtime">
|
<service name="replace_using_env" mode="buildtime">
|
||||||
<param name="file">Chart.yaml</param>
|
<param name="file">Chart.yaml</param>
|
||||||
<param name="eval">CHART_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param>
|
<param name="eval">CHART_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?chart_prefix})</param>
|
||||||
<param name="var">CHART_PREFIX</param>
|
<param name="var">CHART_PREFIX</param>
|
||||||
<param name="eval">CHART_MAJOR=$(rpm --macros=/root/.rpmmacros -E %{?chart_major})</param>
|
<param name="eval">CHART_MAJOR=$(rpm --macros=/root/.rpmmacros -E %{?chart_major})</param>
|
||||||
<param name="var">CHART_MAJOR</param>
|
<param name="var">CHART_MAJOR</param>
|
||||||
|
File diff suppressed because one or more lines are too long
@@ -1,11 +1,900 @@
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
data:
|
data:
|
||||||
components: Not Found
|
components: |
|
||||||
metadata: Not Found
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
cluster.x-k8s.io/provider: fleet
|
||||||
|
control-plane: controller-manager
|
||||||
|
name: caapf-system
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
cluster.x-k8s.io/provider: fleet
|
||||||
|
name: fleetaddonconfigs.addons.cluster.x-k8s.io
|
||||||
|
spec:
|
||||||
|
group: addons.cluster.x-k8s.io
|
||||||
|
names:
|
||||||
|
categories: []
|
||||||
|
kind: FleetAddonConfig
|
||||||
|
plural: fleetaddonconfigs
|
||||||
|
shortNames: []
|
||||||
|
singular: fleetaddonconfig
|
||||||
|
scope: Cluster
|
||||||
|
versions:
|
||||||
|
- additionalPrinterColumns: []
|
||||||
|
name: v1alpha1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: Auto-generated derived type for FleetAddonConfigSpec via `CustomResource`
|
||||||
|
properties:
|
||||||
|
spec:
|
||||||
|
description: This provides a config for fleet addon functionality
|
||||||
|
properties:
|
||||||
|
cluster:
|
||||||
|
description: |-
|
||||||
|
Enable Cluster config funtionality.
|
||||||
|
|
||||||
|
This will create Fleet Cluster for each Cluster with the same name. In case the cluster specifies topology.class, the name of the `ClusterClass` will be added to the Fleet Cluster labels.
|
||||||
|
nullable: true
|
||||||
|
properties:
|
||||||
|
agentEnvVars:
|
||||||
|
description: '`AgentEnvVars` are extra environment variables to
|
||||||
|
be added to the agent deployment.'
|
||||||
|
items:
|
||||||
|
description: EnvVar represents an environment variable present
|
||||||
|
in a Container.
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
description: Name of the environment variable. Must be a
|
||||||
|
C_IDENTIFIER.
|
||||||
|
type: string
|
||||||
|
value:
|
||||||
|
description: 'Variable references $(VAR_NAME) are expanded
|
||||||
|
using the previously defined environment variables in
|
||||||
|
the container and any service environment variables. If
|
||||||
|
a variable cannot be resolved, the reference in the input
|
||||||
|
string will be unchanged. Double $$ are reduced to a single
|
||||||
|
$, which allows for escaping the $(VAR_NAME) syntax: i.e.
|
||||||
|
"$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
|
||||||
|
Escaped references will never be expanded, regardless
|
||||||
|
of whether the variable exists or not. Defaults to "".'
|
||||||
|
nullable: true
|
||||||
|
type: string
|
||||||
|
valueFrom:
|
||||||
|
description: Source for the environment variable's value.
|
||||||
|
Cannot be used if value is not empty.
|
||||||
|
nullable: true
|
||||||
|
properties:
|
||||||
|
configMapKeyRef:
|
||||||
|
description: Selects a key of a ConfigMap.
|
||||||
|
nullable: true
|
||||||
|
properties:
|
||||||
|
key:
|
||||||
|
description: The key to select.
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: 'Name of the referent. This field is
|
||||||
|
effectively required, but due to backwards compatibility
|
||||||
|
is allowed to be empty. Instances of this type
|
||||||
|
with an empty value here are almost certainly
|
||||||
|
wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
|
||||||
|
nullable: true
|
||||||
|
type: string
|
||||||
|
optional:
|
||||||
|
description: Specify whether the ConfigMap or its
|
||||||
|
key must be defined
|
||||||
|
nullable: true
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
type: object
|
||||||
|
fieldRef:
|
||||||
|
description: 'Selects a field of the pod: supports metadata.name,
|
||||||
|
metadata.namespace, `metadata.labels[''<KEY>'']`,
|
||||||
|
`metadata.annotations[''<KEY>'']`, spec.nodeName,
|
||||||
|
spec.serviceAccountName, status.hostIP, status.podIP,
|
||||||
|
status.podIPs.'
|
||||||
|
nullable: true
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: Version of the schema the FieldPath
|
||||||
|
is written in terms of, defaults to "v1".
|
||||||
|
nullable: true
|
||||||
|
type: string
|
||||||
|
fieldPath:
|
||||||
|
description: Path of the field to select in the
|
||||||
|
specified API version.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- fieldPath
|
||||||
|
type: object
|
||||||
|
resourceFieldRef:
|
||||||
|
description: 'Selects a resource of the container: only
|
||||||
|
resources limits and requests (limits.cpu, limits.memory,
|
||||||
|
limits.ephemeral-storage, requests.cpu, requests.memory
|
||||||
|
and requests.ephemeral-storage) are currently supported.'
|
||||||
|
nullable: true
|
||||||
|
properties:
|
||||||
|
containerName:
|
||||||
|
description: 'Container name: required for volumes,
|
||||||
|
optional for env vars'
|
||||||
|
nullable: true
|
||||||
|
type: string
|
||||||
|
divisor:
|
||||||
|
description: Specifies the output format of the
|
||||||
|
exposed resources, defaults to "1"
|
||||||
|
nullable: true
|
||||||
|
x-kubernetes-int-or-string: true
|
||||||
|
resource:
|
||||||
|
description: 'Required: resource to select'
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- resource
|
||||||
|
type: object
|
||||||
|
secretKeyRef:
|
||||||
|
description: Selects a key of a secret in the pod's
|
||||||
|
namespace
|
||||||
|
nullable: true
|
||||||
|
properties:
|
||||||
|
key:
|
||||||
|
description: The key of the secret to select from. Must
|
||||||
|
be a valid secret key.
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: 'Name of the referent. This field is
|
||||||
|
effectively required, but due to backwards compatibility
|
||||||
|
is allowed to be empty. Instances of this type
|
||||||
|
with an empty value here are almost certainly
|
||||||
|
wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
|
||||||
|
nullable: true
|
||||||
|
type: string
|
||||||
|
optional:
|
||||||
|
description: Specify whether the Secret or its key
|
||||||
|
must be defined
|
||||||
|
nullable: true
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
type: object
|
||||||
|
nullable: true
|
||||||
|
type: array
|
||||||
|
agentNamespace:
|
||||||
|
description: Namespace selection for the fleet agent
|
||||||
|
nullable: true
|
||||||
|
type: string
|
||||||
|
agentTolerations:
|
||||||
|
description: Agent taint toleration settings for every cluster
|
||||||
|
items:
|
||||||
|
description: The pod this Toleration is attached to tolerates
|
||||||
|
any taint that matches the triple <key,value,effect> using
|
||||||
|
the matching operator <operator>.
|
||||||
|
properties:
|
||||||
|
effect:
|
||||||
|
description: Effect indicates the taint effect to match.
|
||||||
|
Empty means match all taint effects. When specified, allowed
|
||||||
|
values are NoSchedule, PreferNoSchedule and NoExecute.
|
||||||
|
nullable: true
|
||||||
|
type: string
|
||||||
|
key:
|
||||||
|
description: Key is the taint key that the toleration applies
|
||||||
|
to. Empty means match all taint keys. If the key is empty,
|
||||||
|
operator must be Exists; this combination means to match
|
||||||
|
all values and all keys.
|
||||||
|
nullable: true
|
||||||
|
type: string
|
||||||
|
operator:
|
||||||
|
description: Operator represents a key's relationship to
|
||||||
|
the value. Valid operators are Exists and Equal. Defaults
|
||||||
|
to Equal. Exists is equivalent to wildcard for value,
|
||||||
|
so that a pod can tolerate all taints of a particular
|
||||||
|
category.
|
||||||
|
nullable: true
|
||||||
|
type: string
|
||||||
|
tolerationSeconds:
|
||||||
|
description: TolerationSeconds represents the period of
|
||||||
|
time the toleration (which must be of effect NoExecute,
|
||||||
|
otherwise this field is ignored) tolerates the taint.
|
||||||
|
By default, it is not set, which means tolerate the taint
|
||||||
|
forever (do not evict). Zero and negative values will
|
||||||
|
be treated as 0 (evict immediately) by the system.
|
||||||
|
format: int64
|
||||||
|
nullable: true
|
||||||
|
type: integer
|
||||||
|
value:
|
||||||
|
description: Value is the taint value the toleration matches
|
||||||
|
to. If the operator is Exists, the value should be empty,
|
||||||
|
otherwise just a regular string.
|
||||||
|
nullable: true
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
nullable: true
|
||||||
|
type: array
|
||||||
|
applyClassGroup:
|
||||||
|
description: Apply a `ClusterGroup` for a `ClusterClass` referenced
|
||||||
|
from a different namespace.
|
||||||
|
nullable: true
|
||||||
|
type: boolean
|
||||||
|
hostNetwork:
|
||||||
|
description: 'Host network allows to deploy agent configuration
|
||||||
|
using hostNetwork: true setting which eludes dependency on the
|
||||||
|
CNI configuration for the cluster.'
|
||||||
|
nullable: true
|
||||||
|
type: boolean
|
||||||
|
namespaceSelector:
|
||||||
|
description: Namespace label selector. If set, only clusters in
|
||||||
|
the namespace matching label selector will be imported.
|
||||||
|
properties:
|
||||||
|
matchExpressions:
|
||||||
|
description: matchExpressions is a list of label selector
|
||||||
|
requirements. The requirements are ANDed.
|
||||||
|
items:
|
||||||
|
description: A label selector requirement is a selector
|
||||||
|
that contains values, a key, and an operator that relates
|
||||||
|
the key and values.
|
||||||
|
properties:
|
||||||
|
key:
|
||||||
|
description: key is the label key that the selector
|
||||||
|
applies to.
|
||||||
|
type: string
|
||||||
|
operator:
|
||||||
|
description: operator represents a key's relationship
|
||||||
|
to a set of values. Valid operators are In, NotIn,
|
||||||
|
Exists and DoesNotExist.
|
||||||
|
type: string
|
||||||
|
values:
|
||||||
|
description: values is an array of string values. If
|
||||||
|
the operator is In or NotIn, the values array must
|
||||||
|
be non-empty. If the operator is Exists or DoesNotExist,
|
||||||
|
the values array must be empty. This array is replaced
|
||||||
|
during a strategic merge patch.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
- operator
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
matchLabels:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
description: matchLabels is a map of {key,value} pairs. A
|
||||||
|
single {key,value} in the matchLabels map is equivalent
|
||||||
|
to an element of matchExpressions, whose key field is "key",
|
||||||
|
the operator is "In", and the values array contains only
|
||||||
|
"value". The requirements are ANDed.
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
naming:
|
||||||
|
description: Naming settings for the fleet cluster
|
||||||
|
nullable: true
|
||||||
|
properties:
|
||||||
|
prefix:
|
||||||
|
description: Specify a prefix for the Cluster name, applied
|
||||||
|
to created Fleet cluster
|
||||||
|
nullable: true
|
||||||
|
type: string
|
||||||
|
suffix:
|
||||||
|
description: Specify a suffix for the Cluster name, applied
|
||||||
|
to created Fleet cluster
|
||||||
|
nullable: true
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
patchResource:
|
||||||
|
description: Allow to patch resources, maintaining the desired
|
||||||
|
state. If is not set, resources will only be re-created in case
|
||||||
|
of removal.
|
||||||
|
nullable: true
|
||||||
|
type: boolean
|
||||||
|
selector:
|
||||||
|
description: Cluster label selector. If set, only clusters matching
|
||||||
|
label selector will be imported.
|
||||||
|
properties:
|
||||||
|
matchExpressions:
|
||||||
|
description: matchExpressions is a list of label selector
|
||||||
|
requirements. The requirements are ANDed.
|
||||||
|
items:
|
||||||
|
description: A label selector requirement is a selector
|
||||||
|
that contains values, a key, and an operator that relates
|
||||||
|
the key and values.
|
||||||
|
properties:
|
||||||
|
key:
|
||||||
|
description: key is the label key that the selector
|
||||||
|
applies to.
|
||||||
|
type: string
|
||||||
|
operator:
|
||||||
|
description: operator represents a key's relationship
|
||||||
|
to a set of values. Valid operators are In, NotIn,
|
||||||
|
Exists and DoesNotExist.
|
||||||
|
type: string
|
||||||
|
values:
|
||||||
|
description: values is an array of string values. If
|
||||||
|
the operator is In or NotIn, the values array must
|
||||||
|
be non-empty. If the operator is Exists or DoesNotExist,
|
||||||
|
the values array must be empty. This array is replaced
|
||||||
|
during a strategic merge patch.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
- operator
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
matchLabels:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
description: matchLabels is a map of {key,value} pairs. A
|
||||||
|
single {key,value} in the matchLabels map is equivalent
|
||||||
|
to an element of matchExpressions, whose key field is "key",
|
||||||
|
the operator is "In", and the values array contains only
|
||||||
|
"value". The requirements are ANDed.
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
setOwnerReferences:
|
||||||
|
description: Setting to disable setting owner references on the
|
||||||
|
created resources
|
||||||
|
nullable: true
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- namespaceSelector
|
||||||
|
- selector
|
||||||
|
type: object
|
||||||
|
clusterClass:
|
||||||
|
description: |-
|
||||||
|
Enable clusterClass controller functionality.
|
||||||
|
|
||||||
|
This will create Fleet `ClusterGroups` for each `ClusterClaster` with the same name.
|
||||||
|
nullable: true
|
||||||
|
properties:
|
||||||
|
patchResource:
|
||||||
|
description: Allow to patch resources, maintaining the desired
|
||||||
|
state. If is not set, resources will only be re-created in case
|
||||||
|
of removal.
|
||||||
|
nullable: true
|
||||||
|
type: boolean
|
||||||
|
setOwnerReferences:
|
||||||
|
description: Setting to disable setting owner references on the
|
||||||
|
created resources
|
||||||
|
nullable: true
|
||||||
|
type: boolean
|
||||||
|
type: object
|
||||||
|
config:
|
||||||
|
nullable: true
|
||||||
|
properties:
|
||||||
|
bootstrapLocalCluster:
|
||||||
|
description: Enable auto-installation of a fleet agent in the
|
||||||
|
local cluster.
|
||||||
|
nullable: true
|
||||||
|
type: boolean
|
||||||
|
featureGates:
|
||||||
|
description: feature gates controlling experimental features
|
||||||
|
nullable: true
|
||||||
|
properties:
|
||||||
|
configMap:
|
||||||
|
description: '`FeaturesConfigMap` references a `ConfigMap`
|
||||||
|
where to apply feature flags. If a `ConfigMap` is referenced,
|
||||||
|
the controller will update it instead of upgrading the Fleet
|
||||||
|
chart.'
|
||||||
|
nullable: true
|
||||||
|
properties:
|
||||||
|
ref:
|
||||||
|
description: ObjectReference contains enough information
|
||||||
|
to let you inspect or modify the referred object.
|
||||||
|
nullable: true
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: API version of the referent.
|
||||||
|
type: string
|
||||||
|
fieldPath:
|
||||||
|
description: 'If referring to a piece of an object
|
||||||
|
instead of an entire object, this string should
|
||||||
|
contain a valid JSON/Go field access statement,
|
||||||
|
such as desiredState.manifest.containers[2]. For
|
||||||
|
example, if the object reference is to a container
|
||||||
|
within a pod, this would take on a value like: "spec.containers{name}"
|
||||||
|
(where "name" refers to the name of the container
|
||||||
|
that triggered the event) or if no container name
|
||||||
|
is specified "spec.containers[2]" (container with
|
||||||
|
index 2 in this pod). This syntax is chosen only
|
||||||
|
to have some well-defined way of referencing a part
|
||||||
|
of an object.'
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
|
||||||
|
type: string
|
||||||
|
namespace:
|
||||||
|
description: 'Namespace of the referent. More info:
|
||||||
|
https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
|
||||||
|
type: string
|
||||||
|
resourceVersion:
|
||||||
|
description: 'Specific resourceVersion to which this
|
||||||
|
reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
|
||||||
|
type: string
|
||||||
|
uid:
|
||||||
|
description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
experimentalHelmOps:
|
||||||
|
description: Enables experimental Helm operations support.
|
||||||
|
type: boolean
|
||||||
|
experimentalOciStorage:
|
||||||
|
description: Enables experimental OCI storage support.
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- experimentalHelmOps
|
||||||
|
- experimentalOciStorage
|
||||||
|
type: object
|
||||||
|
server:
|
||||||
|
description: fleet server url configuration options
|
||||||
|
nullable: true
|
||||||
|
oneOf:
|
||||||
|
- required:
|
||||||
|
- inferLocal
|
||||||
|
- required:
|
||||||
|
- custom
|
||||||
|
properties:
|
||||||
|
custom:
|
||||||
|
properties:
|
||||||
|
apiServerCaConfigRef:
|
||||||
|
description: ObjectReference contains enough information
|
||||||
|
to let you inspect or modify the referred object.
|
||||||
|
nullable: true
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: API version of the referent.
|
||||||
|
type: string
|
||||||
|
fieldPath:
|
||||||
|
description: 'If referring to a piece of an object
|
||||||
|
instead of an entire object, this string should
|
||||||
|
contain a valid JSON/Go field access statement,
|
||||||
|
such as desiredState.manifest.containers[2]. For
|
||||||
|
example, if the object reference is to a container
|
||||||
|
within a pod, this would take on a value like: "spec.containers{name}"
|
||||||
|
(where "name" refers to the name of the container
|
||||||
|
that triggered the event) or if no container name
|
||||||
|
is specified "spec.containers[2]" (container with
|
||||||
|
index 2 in this pod). This syntax is chosen only
|
||||||
|
to have some well-defined way of referencing a part
|
||||||
|
of an object.'
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
|
||||||
|
type: string
|
||||||
|
namespace:
|
||||||
|
description: 'Namespace of the referent. More info:
|
||||||
|
https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
|
||||||
|
type: string
|
||||||
|
resourceVersion:
|
||||||
|
description: 'Specific resourceVersion to which this
|
||||||
|
reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
|
||||||
|
type: string
|
||||||
|
uid:
|
||||||
|
description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
apiServerUrl:
|
||||||
|
nullable: true
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
inferLocal:
|
||||||
|
type: boolean
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
install:
|
||||||
|
nullable: true
|
||||||
|
oneOf:
|
||||||
|
- required:
|
||||||
|
- followLatest
|
||||||
|
- required:
|
||||||
|
- version
|
||||||
|
properties:
|
||||||
|
followLatest:
|
||||||
|
description: Follow the latest version of the chart on install
|
||||||
|
type: boolean
|
||||||
|
version:
|
||||||
|
description: Use specific version to install
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
nullable: true
|
||||||
|
properties:
|
||||||
|
conditions:
|
||||||
|
description: conditions represents the observations of a Fleet addon
|
||||||
|
current state.
|
||||||
|
items:
|
||||||
|
description: Condition contains details for one aspect of the current
|
||||||
|
state of this API Resource.
|
||||||
|
properties:
|
||||||
|
lastTransitionTime:
|
||||||
|
description: lastTransitionTime is the last time the condition
|
||||||
|
transitioned from one status to another. This should be when
|
||||||
|
the underlying condition changed. If that is not known, then
|
||||||
|
using the time when the API field changed is acceptable.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
message:
|
||||||
|
description: message is a human readable message indicating
|
||||||
|
details about the transition. This may be an empty string.
|
||||||
|
type: string
|
||||||
|
observedGeneration:
|
||||||
|
description: observedGeneration represents the .metadata.generation
|
||||||
|
that the condition was set based upon. For instance, if .metadata.generation
|
||||||
|
is currently 12, but the .status.conditions[x].observedGeneration
|
||||||
|
is 9, the condition is out of date with respect to the current
|
||||||
|
state of the instance.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
reason:
|
||||||
|
description: reason contains a programmatic identifier indicating
|
||||||
|
the reason for the condition's last transition. Producers
|
||||||
|
of specific condition types may define expected values and
|
||||||
|
meanings for this field, and whether the values are considered
|
||||||
|
a guaranteed API. The value should be a CamelCase string.
|
||||||
|
This field may not be empty.
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
description: status of the condition, one of True, False, Unknown.
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
description: type of condition in CamelCase or in foo.example.com/CamelCase.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- lastTransitionTime
|
||||||
|
- message
|
||||||
|
- reason
|
||||||
|
- status
|
||||||
|
- type
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
installedVersion:
|
||||||
|
nullable: true
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- spec
|
||||||
|
title: FleetAddonConfigValidated
|
||||||
|
type: object
|
||||||
|
x-kubernetes-validations:
|
||||||
|
- rule: self.metadata.name == 'fleet-addon-config'
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
cluster.x-k8s.io/provider: fleet
|
||||||
|
name: caapf-controller-manager
|
||||||
|
namespace: caapf-system
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
cluster.x-k8s.io/provider: fleet
|
||||||
|
name: caapf-helm-manager
|
||||||
|
namespace: caapf-system
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: Role
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
cluster.x-k8s.io/provider: fleet
|
||||||
|
name: caapf-leader-election-role
|
||||||
|
namespace: caapf-system
|
||||||
|
rules:
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- configmaps
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- create
|
||||||
|
- update
|
||||||
|
- patch
|
||||||
|
- delete
|
||||||
|
- apiGroups:
|
||||||
|
- coordination.k8s.io
|
||||||
|
resources:
|
||||||
|
- leases
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- create
|
||||||
|
- update
|
||||||
|
- patch
|
||||||
|
- delete
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- events
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
- patch
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
cluster.x-k8s.io/provider: fleet
|
||||||
|
name: caapf-manager-role
|
||||||
|
rules:
|
||||||
|
- apiGroups:
|
||||||
|
- addons.cluster.x-k8s.io
|
||||||
|
resources:
|
||||||
|
- fleetaddonconfigs
|
||||||
|
- fleetaddonconfigs/status
|
||||||
|
verbs:
|
||||||
|
- '*'
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- namespaces
|
||||||
|
verbs:
|
||||||
|
- list
|
||||||
|
- get
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- namespaces
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
- apiGroups:
|
||||||
|
- events.k8s.io
|
||||||
|
resources:
|
||||||
|
- events
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- secrets
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- configmaps
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- patch
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- endpoints
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- apiGroups:
|
||||||
|
- apiextensions.k8s.io
|
||||||
|
resources:
|
||||||
|
- customresourcedefinitions
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- authentication.k8s.io
|
||||||
|
resources:
|
||||||
|
- tokenreviews
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
- apiGroups:
|
||||||
|
- authorization.k8s.io
|
||||||
|
resources:
|
||||||
|
- subjectaccessreviews
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
- apiGroups:
|
||||||
|
- bootstrap.cluster.x-k8s.io
|
||||||
|
- clusterctl.cluster.x-k8s.io
|
||||||
|
- controlplane.cluster.x-k8s.io
|
||||||
|
- infrastructure.cluster.x-k8s.io
|
||||||
|
resources:
|
||||||
|
- '*'
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- cluster.x-k8s.io
|
||||||
|
resources:
|
||||||
|
- clusters
|
||||||
|
- clusterclasses
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- patch
|
||||||
|
- apiGroups:
|
||||||
|
- fleet.cattle.io
|
||||||
|
resources:
|
||||||
|
- clusters
|
||||||
|
- clustergroups
|
||||||
|
- clusterregistrationtokens
|
||||||
|
- bundlenamespacemappings
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- patch
|
||||||
|
- update
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- fleet.cattle.io
|
||||||
|
resources:
|
||||||
|
- bundlenamespacemappings
|
||||||
|
verbs:
|
||||||
|
- delete
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
cluster.x-k8s.io/provider: fleet
|
||||||
|
name: caapf-helm-manager-rolebinding
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: cluster-admin
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: caapf-helm-manager
|
||||||
|
namespace: caapf-system
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
cluster.x-k8s.io/provider: fleet
|
||||||
|
name: caapf-manager-rolebinding
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: caapf-manager-role
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: caapf-controller-manager
|
||||||
|
namespace: caapf-system
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/service-account.name: caapf-helm-manager
|
||||||
|
labels:
|
||||||
|
cluster.x-k8s.io/fleet-addon-registration: "true"
|
||||||
|
cluster.x-k8s.io/provider: fleet
|
||||||
|
name: caapf-helm-manager
|
||||||
|
namespace: caapf-system
|
||||||
|
type: kubernetes.io/service-account-token
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
cluster.x-k8s.io/provider: fleet
|
||||||
|
control-plane: controller-manager
|
||||||
|
name: caapf-controller-manager
|
||||||
|
namespace: caapf-system
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
cluster.x-k8s.io/provider: fleet
|
||||||
|
control-plane: controller-manager
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
kubectl.kubernetes.io/default-container: manager
|
||||||
|
labels:
|
||||||
|
cluster.x-k8s.io/provider: fleet
|
||||||
|
control-plane: controller-manager
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- image: ghcr.io/rancher-sandbox/cluster-api-addon-provider-fleet:v0.10.0
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
name: manager
|
||||||
|
ports:
|
||||||
|
- containerPort: 8443
|
||||||
|
name: http
|
||||||
|
protocol: TCP
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /health
|
||||||
|
port: http
|
||||||
|
initialDelaySeconds: 5
|
||||||
|
periodSeconds: 5
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 150Mi
|
||||||
|
requests:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 100Mi
|
||||||
|
- args:
|
||||||
|
- --helm-install
|
||||||
|
image: ghcr.io/rancher-sandbox/cluster-api-addon-provider-fleet:v0.10.0
|
||||||
|
name: helm-manager
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 150Mi
|
||||||
|
requests:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 100Mi
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /var/run/secrets/kubernetes.io/serviceaccount
|
||||||
|
name: helm-kubeconfig
|
||||||
|
readOnly: true
|
||||||
|
serviceAccountName: caapf-controller-manager
|
||||||
|
terminationGracePeriodSeconds: 10
|
||||||
|
volumes:
|
||||||
|
- name: helm-kubeconfig
|
||||||
|
secret:
|
||||||
|
secretName: caapf-helm-manager
|
||||||
|
metadata: |
|
||||||
|
apiVersion: clusterctl.cluster.x-k8s.io/v1alpha3
|
||||||
|
releaseSeries:
|
||||||
|
- major: 0
|
||||||
|
minor: 1
|
||||||
|
contract: v1beta1
|
||||||
|
- major: 0
|
||||||
|
minor: 2
|
||||||
|
contract: v1beta1
|
||||||
|
- major: 0
|
||||||
|
minor: 3
|
||||||
|
contract: v1beta1
|
||||||
|
- major: 0
|
||||||
|
minor: 4
|
||||||
|
contract: v1beta1
|
||||||
|
- major: 0
|
||||||
|
minor: 5
|
||||||
|
contract: v1beta1
|
||||||
|
- major: 0
|
||||||
|
minor: 6
|
||||||
|
contract: v1beta1
|
||||||
|
- major: 0
|
||||||
|
minor: 7
|
||||||
|
contract: v1beta1
|
||||||
|
- major: 0
|
||||||
|
minor: 8
|
||||||
|
contract: v1beta1
|
||||||
|
- major: 0
|
||||||
|
minor: 9
|
||||||
|
contract: v1beta1
|
||||||
|
- major: 0
|
||||||
|
minor: 10
|
||||||
|
contract: v1beta1
|
||||||
kind: ConfigMap
|
kind: ConfigMap
|
||||||
metadata:
|
metadata:
|
||||||
creationTimestamp: null
|
creationTimestamp: null
|
||||||
name: v0.6.0
|
name: v0.10.0
|
||||||
namespace: rancher-turtles-system
|
namespace: rancher-turtles-system
|
||||||
labels:
|
labels:
|
||||||
provider-components: fleet
|
provider-components: fleet
|
||||||
|
@@ -22,7 +22,7 @@ data:
|
|||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
cert-manager.io/inject-ca-from: rke2-bootstrap-system/rke2-bootstrap-serving-cert
|
cert-manager.io/inject-ca-from: rke2-bootstrap-system/rke2-bootstrap-serving-cert
|
||||||
controller-gen.kubebuilder.io/version: v0.16.1
|
controller-gen.kubebuilder.io/version: v0.17.3
|
||||||
labels:
|
labels:
|
||||||
cluster.x-k8s.io/provider: bootstrap-rke2
|
cluster.x-k8s.io/provider: bootstrap-rke2
|
||||||
cluster.x-k8s.io/v1beta1: v1alpha1_v1beta1
|
cluster.x-k8s.io/v1beta1: v1alpha1_v1beta1
|
||||||
@@ -1218,7 +1218,7 @@ data:
|
|||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
cert-manager.io/inject-ca-from: rke2-bootstrap-system/rke2-bootstrap-serving-cert
|
cert-manager.io/inject-ca-from: rke2-bootstrap-system/rke2-bootstrap-serving-cert
|
||||||
controller-gen.kubebuilder.io/version: v0.16.1
|
controller-gen.kubebuilder.io/version: v0.17.3
|
||||||
labels:
|
labels:
|
||||||
cluster.x-k8s.io/provider: bootstrap-rke2
|
cluster.x-k8s.io/provider: bootstrap-rke2
|
||||||
cluster.x-k8s.io/v1beta1: v1alpha1_v1beta1
|
cluster.x-k8s.io/v1beta1: v1alpha1_v1beta1
|
||||||
@@ -2525,9 +2525,11 @@ data:
|
|||||||
- --leader-elect
|
- --leader-elect
|
||||||
- --diagnostics-address=${CAPRKE2_DIAGNOSTICS_ADDRESS:=:8443}
|
- --diagnostics-address=${CAPRKE2_DIAGNOSTICS_ADDRESS:=:8443}
|
||||||
- --insecure-diagnostics=${CAPRKE2_INSECURE_DIAGNOSTICS:=false}
|
- --insecure-diagnostics=${CAPRKE2_INSECURE_DIAGNOSTICS:=false}
|
||||||
|
- --feature-gates=MachinePool=${EXP_MACHINE_POOL:=true}
|
||||||
|
- --v=${CAPRKE2_DEBUG_LEVEL:=0}
|
||||||
command:
|
command:
|
||||||
- /manager
|
- /manager
|
||||||
image: ghcr.io/rancher/cluster-api-provider-rke2-bootstrap:v0.12.0
|
image: ghcr.io/rancher/cluster-api-provider-rke2-bootstrap:v0.16.1
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
livenessProbe:
|
livenessProbe:
|
||||||
httpGet:
|
httpGet:
|
||||||
@@ -2750,10 +2752,22 @@ data:
|
|||||||
- major: 0
|
- major: 0
|
||||||
minor: 12
|
minor: 12
|
||||||
contract: v1beta1
|
contract: v1beta1
|
||||||
|
- major: 0
|
||||||
|
minor: 13
|
||||||
|
contract: v1beta1
|
||||||
|
- major: 0
|
||||||
|
minor: 14
|
||||||
|
contract: v1beta1
|
||||||
|
- major: 0
|
||||||
|
minor: 15
|
||||||
|
contract: v1beta1
|
||||||
|
- major: 0
|
||||||
|
minor: 16
|
||||||
|
contract: v1beta1
|
||||||
kind: ConfigMap
|
kind: ConfigMap
|
||||||
metadata:
|
metadata:
|
||||||
creationTimestamp: null
|
creationTimestamp: null
|
||||||
name: v0.12.0
|
name: v0.16.1
|
||||||
namespace: rke2-bootstrap-system
|
namespace: rke2-bootstrap-system
|
||||||
labels:
|
labels:
|
||||||
provider-components: rke2-bootstrap
|
provider-components: rke2-bootstrap
|
||||||
|
@@ -22,7 +22,7 @@ data:
|
|||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
cert-manager.io/inject-ca-from: rke2-control-plane-system/rke2-control-plane-serving-cert
|
cert-manager.io/inject-ca-from: rke2-control-plane-system/rke2-control-plane-serving-cert
|
||||||
controller-gen.kubebuilder.io/version: v0.16.1
|
controller-gen.kubebuilder.io/version: v0.17.3
|
||||||
labels:
|
labels:
|
||||||
cluster.x-k8s.io/provider: control-plane-rke2
|
cluster.x-k8s.io/provider: control-plane-rke2
|
||||||
cluster.x-k8s.io/v1beta1: v1alpha1_v1beta1
|
cluster.x-k8s.io/v1beta1: v1alpha1_v1beta1
|
||||||
@@ -1744,12 +1744,23 @@ data:
|
|||||||
More info: http://kubernetes.io/docs/user-guide/labels
|
More info: http://kubernetes.io/docs/user-guide/labels
|
||||||
type: object
|
type: object
|
||||||
type: object
|
type: object
|
||||||
|
nodeDeletionTimeout:
|
||||||
|
description: |-
|
||||||
|
nodeDeletionTimeout defines how long the machine controller will attempt to delete the Node that the Machine
|
||||||
|
hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.
|
||||||
|
If no value is provided, the default value for this property of the Machine resource will be used.
|
||||||
|
type: string
|
||||||
nodeDrainTimeout:
|
nodeDrainTimeout:
|
||||||
description: |-
|
description: |-
|
||||||
NodeDrainTimeout is the total amount of time that the controller will spend on draining a controlplane node
|
NodeDrainTimeout is the total amount of time that the controller will spend on draining a controlplane node
|
||||||
The default value is 0, meaning that the node can be drained without any time limitations.
|
The default value is 0, meaning that the node can be drained without any time limitations.
|
||||||
NOTE: NodeDrainTimeout is different from `kubectl drain --timeout`
|
NOTE: NodeDrainTimeout is different from `kubectl drain --timeout`
|
||||||
type: string
|
type: string
|
||||||
|
nodeVolumeDetachTimeout:
|
||||||
|
description: |-
|
||||||
|
nodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes
|
||||||
|
to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations.
|
||||||
|
type: string
|
||||||
required:
|
required:
|
||||||
- infrastructureRef
|
- infrastructureRef
|
||||||
type: object
|
type: object
|
||||||
@@ -1974,6 +1985,54 @@ data:
|
|||||||
- control-plane-endpoint
|
- control-plane-endpoint
|
||||||
- ""
|
- ""
|
||||||
type: string
|
type: string
|
||||||
|
remediationStrategy:
|
||||||
|
description: remediationStrategy is the RemediationStrategy that controls
|
||||||
|
how control plane machine remediation happens.
|
||||||
|
properties:
|
||||||
|
maxRetry:
|
||||||
|
description: "maxRetry is the Max number of retries while attempting
|
||||||
|
to remediate an unhealthy machine.\nA retry happens when a machine
|
||||||
|
that was created as a replacement for an unhealthy machine also
|
||||||
|
fails.\nFor example, given a control plane with three machines
|
||||||
|
M1, M2, M3:\n\n\tM1 become unhealthy; remediation happens, and
|
||||||
|
M1-1 is created as a replacement.\n\tIf M1-1 (replacement of
|
||||||
|
M1) has problems while bootstrapping it will become unhealthy,
|
||||||
|
and then be\n\tremediated; such operation is considered a retry,
|
||||||
|
remediation-retry #1.\n\tIf M1-2 (replacement of M1-1) becomes
|
||||||
|
unhealthy, remediation-retry #2 will happen, etc.\n\nA retry
|
||||||
|
could happen only after RetryPeriod from the previous retry.\nIf
|
||||||
|
a machine is marked as unhealthy after MinHealthyPeriod from
|
||||||
|
the previous remediation expired,\nthis is not considered a
|
||||||
|
retry anymore because the new issue is assumed unrelated from
|
||||||
|
the previous one.\n\nIf not set, the remedation will be retried
|
||||||
|
infinitely."
|
||||||
|
format: int32
|
||||||
|
type: integer
|
||||||
|
minHealthyPeriod:
|
||||||
|
description: "minHealthyPeriod defines the duration after which
|
||||||
|
RKE2ControlPlane will consider any failure to a machine unrelated\nfrom
|
||||||
|
the previous one. In this case the remediation is not considered
|
||||||
|
a retry anymore, and thus the retry\ncounter restarts from 0.
|
||||||
|
For example, assuming MinHealthyPeriod is set to 1h (default)\n\n\tM1
|
||||||
|
become unhealthy; remediation happens, and M1-1 is created as
|
||||||
|
a replacement.\n\tIf M1-1 (replacement of M1) has problems within
|
||||||
|
the 1hr after the creation, also\n\tthis machine will be remediated
|
||||||
|
and this operation is considered a retry - a problem related\n\tto
|
||||||
|
the original issue happened to M1 -.\n\n\tIf instead the problem
|
||||||
|
on M1-1 is happening after MinHealthyPeriod expired, e.g. four
|
||||||
|
days after\n\tm1-1 has been created as a remediation of M1,
|
||||||
|
the problem on M1-1 is considered unrelated to\n\tthe original
|
||||||
|
issue happened to M1.\n\nIf not set, this value is defaulted
|
||||||
|
to 1h."
|
||||||
|
type: string
|
||||||
|
retryPeriod:
|
||||||
|
description: |-
|
||||||
|
retryPeriod is the duration that RKE2ControlPlane should wait before remediating a machine being created as a replacement
|
||||||
|
for an unhealthy machine (a retry).
|
||||||
|
|
||||||
|
If not set, a retry will happen immediately.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
replicas:
|
replicas:
|
||||||
description: Replicas is the number of replicas for the Control Plane.
|
description: Replicas is the number of replicas for the Control Plane.
|
||||||
format: int32
|
format: int32
|
||||||
@@ -2185,9 +2244,15 @@ data:
|
|||||||
- rke2-coredns
|
- rke2-coredns
|
||||||
- rke2-ingress-nginx
|
- rke2-ingress-nginx
|
||||||
- rke2-metrics-server
|
- rke2-metrics-server
|
||||||
|
- rke2-snapshot-controller
|
||||||
|
- rke2-snapshot-controller-crd
|
||||||
|
- rke2-snapshot-validation-webhook
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
type: object
|
type: object
|
||||||
|
embeddedRegistry:
|
||||||
|
description: EmbeddedRegistry enables the embedded registry.
|
||||||
|
type: boolean
|
||||||
etcd:
|
etcd:
|
||||||
description: Etcd defines optional custom configuration of ETCD.
|
description: Etcd defines optional custom configuration of ETCD.
|
||||||
properties:
|
properties:
|
||||||
@@ -2541,14 +2606,42 @@ data:
|
|||||||
description: Initialized indicates the target cluster has completed
|
description: Initialized indicates the target cluster has completed
|
||||||
initialization.
|
initialization.
|
||||||
type: boolean
|
type: boolean
|
||||||
|
lastRemediation:
|
||||||
|
description: lastRemediation stores info about last remediation performed.
|
||||||
|
properties:
|
||||||
|
machine:
|
||||||
|
description: machine is the machine name of the latest machine
|
||||||
|
being remediated.
|
||||||
|
maxLength: 253
|
||||||
|
minLength: 1
|
||||||
|
type: string
|
||||||
|
retryCount:
|
||||||
|
description: |-
|
||||||
|
retryCount used to keep track of remediation retry for the last remediated machine.
|
||||||
|
A retry happens when a machine that was created as a replacement for an unhealthy machine also fails.
|
||||||
|
type: integer
|
||||||
|
timestamp:
|
||||||
|
description: timestamp is when last remediation happened. It is
|
||||||
|
represented in RFC3339 form and is in UTC.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- machine
|
||||||
|
- retryCount
|
||||||
|
- timestamp
|
||||||
|
type: object
|
||||||
observedGeneration:
|
observedGeneration:
|
||||||
description: ObservedGeneration is the latest generation observed
|
description: ObservedGeneration is the latest generation observed
|
||||||
by the controller.
|
by the controller.
|
||||||
format: int64
|
format: int64
|
||||||
type: integer
|
type: integer
|
||||||
ready:
|
ready:
|
||||||
description: Ready indicates the BootstrapData field is ready to be
|
description: |-
|
||||||
consumed.
|
Ready denotes that the RKE2ControlPlane API Server became ready during initial provisioning
|
||||||
|
to receive requests.
|
||||||
|
NOTE: this field is part of the Cluster API contract and it is used to orchestrate provisioning.
|
||||||
|
The value of this field is never updated after provisioning is completed. Please use conditions
|
||||||
|
to check the operational state of the control plane.
|
||||||
type: boolean
|
type: boolean
|
||||||
readyReplicas:
|
readyReplicas:
|
||||||
description: ReadyReplicas is the number of replicas current attached
|
description: ReadyReplicas is the number of replicas current attached
|
||||||
@@ -2589,7 +2682,7 @@ data:
|
|||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
cert-manager.io/inject-ca-from: rke2-control-plane-system/rke2-control-plane-serving-cert
|
cert-manager.io/inject-ca-from: rke2-control-plane-system/rke2-control-plane-serving-cert
|
||||||
controller-gen.kubebuilder.io/version: v0.16.1
|
controller-gen.kubebuilder.io/version: v0.17.3
|
||||||
labels:
|
labels:
|
||||||
cluster.x-k8s.io/provider: control-plane-rke2
|
cluster.x-k8s.io/provider: control-plane-rke2
|
||||||
cluster.x-k8s.io/v1beta1: v1alpha1_v1beta1
|
cluster.x-k8s.io/v1beta1: v1alpha1_v1beta1
|
||||||
@@ -3152,12 +3245,23 @@ data:
|
|||||||
More info: http://kubernetes.io/docs/user-guide/labels
|
More info: http://kubernetes.io/docs/user-guide/labels
|
||||||
type: object
|
type: object
|
||||||
type: object
|
type: object
|
||||||
|
nodeDeletionTimeout:
|
||||||
|
description: |-
|
||||||
|
nodeDeletionTimeout defines how long the machine controller will attempt to delete the Node that the Machine
|
||||||
|
hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.
|
||||||
|
If no value is provided, the default value for this property of the Machine resource will be used.
|
||||||
|
type: string
|
||||||
nodeDrainTimeout:
|
nodeDrainTimeout:
|
||||||
description: |-
|
description: |-
|
||||||
NodeDrainTimeout is the total amount of time that the controller will spend on draining a controlplane node
|
NodeDrainTimeout is the total amount of time that the controller will spend on draining a controlplane node
|
||||||
The default value is 0, meaning that the node can be drained without any time limitations.
|
The default value is 0, meaning that the node can be drained without any time limitations.
|
||||||
NOTE: NodeDrainTimeout is different from `kubectl drain --timeout`
|
NOTE: NodeDrainTimeout is different from `kubectl drain --timeout`
|
||||||
type: string
|
type: string
|
||||||
|
nodeVolumeDetachTimeout:
|
||||||
|
description: |-
|
||||||
|
nodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes
|
||||||
|
to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations.
|
||||||
|
type: string
|
||||||
required:
|
required:
|
||||||
- infrastructureRef
|
- infrastructureRef
|
||||||
type: object
|
type: object
|
||||||
@@ -3384,6 +3488,57 @@ data:
|
|||||||
- control-plane-endpoint
|
- control-plane-endpoint
|
||||||
- ""
|
- ""
|
||||||
type: string
|
type: string
|
||||||
|
remediationStrategy:
|
||||||
|
description: remediationStrategy is the RemediationStrategy
|
||||||
|
that controls how control plane machine remediation happens.
|
||||||
|
properties:
|
||||||
|
maxRetry:
|
||||||
|
description: "maxRetry is the Max number of retries while
|
||||||
|
attempting to remediate an unhealthy machine.\nA retry
|
||||||
|
happens when a machine that was created as a replacement
|
||||||
|
for an unhealthy machine also fails.\nFor example, given
|
||||||
|
a control plane with three machines M1, M2, M3:\n\n\tM1
|
||||||
|
become unhealthy; remediation happens, and M1-1 is created
|
||||||
|
as a replacement.\n\tIf M1-1 (replacement of M1) has
|
||||||
|
problems while bootstrapping it will become unhealthy,
|
||||||
|
and then be\n\tremediated; such operation is considered
|
||||||
|
a retry, remediation-retry #1.\n\tIf M1-2 (replacement
|
||||||
|
of M1-1) becomes unhealthy, remediation-retry #2 will
|
||||||
|
happen, etc.\n\nA retry could happen only after RetryPeriod
|
||||||
|
from the previous retry.\nIf a machine is marked as
|
||||||
|
unhealthy after MinHealthyPeriod from the previous remediation
|
||||||
|
expired,\nthis is not considered a retry anymore because
|
||||||
|
the new issue is assumed unrelated from the previous
|
||||||
|
one.\n\nIf not set, the remedation will be retried infinitely."
|
||||||
|
format: int32
|
||||||
|
type: integer
|
||||||
|
minHealthyPeriod:
|
||||||
|
description: "minHealthyPeriod defines the duration after
|
||||||
|
which RKE2ControlPlane will consider any failure to
|
||||||
|
a machine unrelated\nfrom the previous one. In this
|
||||||
|
case the remediation is not considered a retry anymore,
|
||||||
|
and thus the retry\ncounter restarts from 0. For example,
|
||||||
|
assuming MinHealthyPeriod is set to 1h (default)\n\n\tM1
|
||||||
|
become unhealthy; remediation happens, and M1-1 is created
|
||||||
|
as a replacement.\n\tIf M1-1 (replacement of M1) has
|
||||||
|
problems within the 1hr after the creation, also\n\tthis
|
||||||
|
machine will be remediated and this operation is considered
|
||||||
|
a retry - a problem related\n\tto the original issue
|
||||||
|
happened to M1 -.\n\n\tIf instead the problem on M1-1
|
||||||
|
is happening after MinHealthyPeriod expired, e.g. four
|
||||||
|
days after\n\tm1-1 has been created as a remediation
|
||||||
|
of M1, the problem on M1-1 is considered unrelated to\n\tthe
|
||||||
|
original issue happened to M1.\n\nIf not set, this value
|
||||||
|
is defaulted to 1h."
|
||||||
|
type: string
|
||||||
|
retryPeriod:
|
||||||
|
description: |-
|
||||||
|
retryPeriod is the duration that RKE2ControlPlane should wait before remediating a machine being created as a replacement
|
||||||
|
for an unhealthy machine (a retry).
|
||||||
|
|
||||||
|
If not set, a retry will happen immediately.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
replicas:
|
replicas:
|
||||||
description: Replicas is the number of replicas for the Control
|
description: Replicas is the number of replicas for the Control
|
||||||
Plane.
|
Plane.
|
||||||
@@ -3601,9 +3756,15 @@ data:
|
|||||||
- rke2-coredns
|
- rke2-coredns
|
||||||
- rke2-ingress-nginx
|
- rke2-ingress-nginx
|
||||||
- rke2-metrics-server
|
- rke2-metrics-server
|
||||||
|
- rke2-snapshot-controller
|
||||||
|
- rke2-snapshot-controller-crd
|
||||||
|
- rke2-snapshot-validation-webhook
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
type: object
|
type: object
|
||||||
|
embeddedRegistry:
|
||||||
|
description: EmbeddedRegistry enables the embedded registry.
|
||||||
|
type: boolean
|
||||||
etcd:
|
etcd:
|
||||||
description: Etcd defines optional custom configuration
|
description: Etcd defines optional custom configuration
|
||||||
of ETCD.
|
of ETCD.
|
||||||
@@ -3974,14 +4135,42 @@ data:
|
|||||||
description: Initialized indicates the target cluster has completed
|
description: Initialized indicates the target cluster has completed
|
||||||
initialization.
|
initialization.
|
||||||
type: boolean
|
type: boolean
|
||||||
|
lastRemediation:
|
||||||
|
description: lastRemediation stores info about last remediation performed.
|
||||||
|
properties:
|
||||||
|
machine:
|
||||||
|
description: machine is the machine name of the latest machine
|
||||||
|
being remediated.
|
||||||
|
maxLength: 253
|
||||||
|
minLength: 1
|
||||||
|
type: string
|
||||||
|
retryCount:
|
||||||
|
description: |-
|
||||||
|
retryCount used to keep track of remediation retry for the last remediated machine.
|
||||||
|
A retry happens when a machine that was created as a replacement for an unhealthy machine also fails.
|
||||||
|
type: integer
|
||||||
|
timestamp:
|
||||||
|
description: timestamp is when last remediation happened. It is
|
||||||
|
represented in RFC3339 form and is in UTC.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- machine
|
||||||
|
- retryCount
|
||||||
|
- timestamp
|
||||||
|
type: object
|
||||||
observedGeneration:
|
observedGeneration:
|
||||||
description: ObservedGeneration is the latest generation observed
|
description: ObservedGeneration is the latest generation observed
|
||||||
by the controller.
|
by the controller.
|
||||||
format: int64
|
format: int64
|
||||||
type: integer
|
type: integer
|
||||||
ready:
|
ready:
|
||||||
description: Ready indicates the BootstrapData field is ready to be
|
description: |-
|
||||||
consumed.
|
Ready denotes that the RKE2ControlPlane API Server became ready during initial provisioning
|
||||||
|
to receive requests.
|
||||||
|
NOTE: this field is part of the Cluster API contract and it is used to orchestrate provisioning.
|
||||||
|
The value of this field is never updated after provisioning is completed. Please use conditions
|
||||||
|
to check the operational state of the control plane.
|
||||||
type: boolean
|
type: boolean
|
||||||
readyReplicas:
|
readyReplicas:
|
||||||
description: ReadyReplicas is the number of replicas current attached
|
description: ReadyReplicas is the number of replicas current attached
|
||||||
@@ -4097,6 +4286,14 @@ data:
|
|||||||
- patch
|
- patch
|
||||||
- update
|
- update
|
||||||
- watch
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- apiextensions.k8s.io
|
||||||
|
resources:
|
||||||
|
- customresourcedefinitions
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
- apiGroups:
|
- apiGroups:
|
||||||
- authentication.k8s.io
|
- authentication.k8s.io
|
||||||
resources:
|
resources:
|
||||||
@@ -4248,6 +4445,7 @@ data:
|
|||||||
- --leader-elect
|
- --leader-elect
|
||||||
- --diagnostics-address=${CAPRKE2_DIAGNOSTICS_ADDRESS:=:8443}
|
- --diagnostics-address=${CAPRKE2_DIAGNOSTICS_ADDRESS:=:8443}
|
||||||
- --insecure-diagnostics=${CAPRKE2_INSECURE_DIAGNOSTICS:=false}
|
- --insecure-diagnostics=${CAPRKE2_INSECURE_DIAGNOSTICS:=false}
|
||||||
|
- --v=${CAPRKE2_DEBUG_LEVEL:=0}
|
||||||
command:
|
command:
|
||||||
- /manager
|
- /manager
|
||||||
env:
|
env:
|
||||||
@@ -4263,7 +4461,7 @@ data:
|
|||||||
valueFrom:
|
valueFrom:
|
||||||
fieldRef:
|
fieldRef:
|
||||||
fieldPath: metadata.uid
|
fieldPath: metadata.uid
|
||||||
image: ghcr.io/rancher/cluster-api-provider-rke2-controlplane:v0.12.0
|
image: ghcr.io/rancher/cluster-api-provider-rke2-controlplane:v0.16.1
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
livenessProbe:
|
livenessProbe:
|
||||||
httpGet:
|
httpGet:
|
||||||
@@ -4493,10 +4691,22 @@ data:
|
|||||||
- major: 0
|
- major: 0
|
||||||
minor: 12
|
minor: 12
|
||||||
contract: v1beta1
|
contract: v1beta1
|
||||||
|
- major: 0
|
||||||
|
minor: 13
|
||||||
|
contract: v1beta1
|
||||||
|
- major: 0
|
||||||
|
minor: 14
|
||||||
|
contract: v1beta1
|
||||||
|
- major: 0
|
||||||
|
minor: 15
|
||||||
|
contract: v1beta1
|
||||||
|
- major: 0
|
||||||
|
minor: 16
|
||||||
|
contract: v1beta1
|
||||||
kind: ConfigMap
|
kind: ConfigMap
|
||||||
metadata:
|
metadata:
|
||||||
creationTimestamp: null
|
creationTimestamp: null
|
||||||
name: v0.12.0
|
name: v0.16.1
|
||||||
namespace: rke2-control-plane-system
|
namespace: rke2-control-plane-system
|
||||||
labels:
|
labels:
|
||||||
provider-components: rke2-control-plane
|
provider-components: rke2-control-plane
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
- name: cluster-api-operator
|
- name: cluster-api-operator
|
||||||
repository: https://kubernetes-sigs.github.io/cluster-api-operator
|
repository: https://kubernetes-sigs.github.io/cluster-api-operator
|
||||||
version: 0.17.0
|
version: 0.18.1
|
||||||
digest: sha256:c564dd1edce5e74cf5747adfa2477b3f0b9bae2b17a21b4c7312b2c1adbda64e
|
digest: sha256:7ad59ce8888c32723b4ef1ae5f334fdff00a8aba87e6f1de76d605f134bff354
|
||||||
generated: "2025-02-27T10:39:03.203623466Z"
|
generated: "2025-05-29T09:13:16.863770955Z"
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
#!BuildTag: %%CHART_PREFIX%%rancher-turtles:%%CHART_MAJOR%%.0.0_up0.17.0
|
#!BuildTag: %%CHART_PREFIX%%rancher-turtles:%%CHART_MAJOR%%.0.4_up0.20.0
|
||||||
#!BuildTag: %%CHART_PREFIX%%rancher-turtles:%%CHART_MAJOR%%.0.0_up0.17.0-%RELEASE%
|
#!BuildTag: %%CHART_PREFIX%%rancher-turtles:%%CHART_MAJOR%%.0.4_up0.20.0-%RELEASE%
|
||||||
annotations:
|
annotations:
|
||||||
catalog.cattle.io/certified: rancher
|
catalog.cattle.io/certified: rancher
|
||||||
catalog.cattle.io/display-name: Rancher Turtles - the Cluster API Extension
|
catalog.cattle.io/display-name: Rancher Turtles - the Cluster API Extension
|
||||||
@@ -7,12 +7,12 @@ annotations:
|
|||||||
catalog.cattle.io/namespace: rancher-turtles-system
|
catalog.cattle.io/namespace: rancher-turtles-system
|
||||||
catalog.cattle.io/os: linux
|
catalog.cattle.io/os: linux
|
||||||
catalog.cattle.io/permits-os: linux
|
catalog.cattle.io/permits-os: linux
|
||||||
catalog.cattle.io/rancher-version: '>= 2.10.0-1'
|
catalog.cattle.io/rancher-version: '>= 2.11.0-1'
|
||||||
catalog.cattle.io/release-name: rancher-turtles
|
catalog.cattle.io/release-name: rancher-turtles
|
||||||
catalog.cattle.io/scope: management
|
catalog.cattle.io/scope: management
|
||||||
catalog.cattle.io/type: cluster-tool
|
catalog.cattle.io/type: cluster-tool
|
||||||
apiVersion: v2
|
apiVersion: v2
|
||||||
appVersion: 0.17.0
|
appVersion: 0.20.0
|
||||||
dependencies:
|
dependencies:
|
||||||
- condition: cluster-api-operator.enabled
|
- condition: cluster-api-operator.enabled
|
||||||
name: cluster-api-operator
|
name: cluster-api-operator
|
||||||
@@ -29,4 +29,4 @@ keywords:
|
|||||||
- provisioning
|
- provisioning
|
||||||
name: rancher-turtles
|
name: rancher-turtles
|
||||||
type: application
|
type: application
|
||||||
version: "%%CHART_MAJOR%%.0.0+up0.17.0"
|
version: "%%CHART_MAJOR%%.0.4+up0.20.0"
|
||||||
|
@@ -1,4 +1,6 @@
|
|||||||
gh: To use GitHub CLI in a GitHub Actions workflow, set the GH_TOKEN environment variable. Example:
|
## Changes since v0.20.0-rc.0
|
||||||
env:
|
---
|
||||||
GH_TOKEN: ${{ github.token }}
|
## :chart_with_upwards_trend: Overview
|
||||||
: exit status 4
|
|
||||||
|
|
||||||
|
_Thanks to all our contributors!_ 😊
|
||||||
|
@@ -29,12 +29,6 @@ questions:
|
|||||||
description: "Flag to enable or disable installation of the RKE2 provider for Cluster API. By default this is enabled."
|
description: "Flag to enable or disable installation of the RKE2 provider for Cluster API. By default this is enabled."
|
||||||
label: "Enable RKE2 Provider"
|
label: "Enable RKE2 Provider"
|
||||||
type: boolean
|
type: boolean
|
||||||
- variable: rancherTurtles.features.addon-provider-fleet.enabled
|
|
||||||
default: true
|
|
||||||
description: "[BETA] Enable Fleet Addon Provider functionality in Rancher Turtles."
|
|
||||||
type: boolean
|
|
||||||
label: Seamless integration with Fleet and CAPI
|
|
||||||
group: "Rancher Turtles Features Settings"
|
|
||||||
- variable: rancherTurtles.features.agent-tls-mode.enabled
|
- variable: rancherTurtles.features.agent-tls-mode.enabled
|
||||||
default: false
|
default: false
|
||||||
description: "[ALPHA] If enabled Turtles will use the agent-tls-mode setting to determine CA cert trust mode for importing clusters."
|
description: "[ALPHA] If enabled Turtles will use the agent-tls-mode setting to determine CA cert trust mode for importing clusters."
|
||||||
@@ -42,7 +36,7 @@ questions:
|
|||||||
label: Enable Agent TLS Mode
|
label: Enable Agent TLS Mode
|
||||||
group: "Rancher Turtles Features Settings"
|
group: "Rancher Turtles Features Settings"
|
||||||
- variable: rancherTurtles.kubectlImage
|
- variable: rancherTurtles.kubectlImage
|
||||||
default: "registry.suse.com/edge/3.2/kubectl:1.30.3"
|
default: "registry.suse.com/edge/3.2/kubectl:1.32.4"
|
||||||
description: "Specify the image to use when running kubectl in jobs."
|
description: "Specify the image to use when running kubectl in jobs."
|
||||||
type: string
|
type: string
|
||||||
label: Kubectl Image
|
label: Kubectl Image
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
{{- if index .Values "rancherTurtles" "features" "addon-provider-fleet" "enabled" }}
|
|
||||||
---
|
|
||||||
apiVersion: turtles-capi.cattle.io/v1alpha1
|
apiVersion: turtles-capi.cattle.io/v1alpha1
|
||||||
kind: CAPIProvider
|
kind: CAPIProvider
|
||||||
metadata:
|
metadata:
|
||||||
@@ -10,12 +8,6 @@ metadata:
|
|||||||
"helm.sh/hook-weight": "2"
|
"helm.sh/hook-weight": "2"
|
||||||
spec:
|
spec:
|
||||||
type: addon
|
type: addon
|
||||||
deployment:
|
|
||||||
containers:
|
|
||||||
- name: manager
|
|
||||||
imageUrl: registry.rancher.com/rancher/cluster-api-fleet-controller:v0.6.0
|
|
||||||
- name: helm-manager
|
|
||||||
imageUrl: registry.rancher.com/rancher/cluster-api-fleet-controller:v0.6.0
|
|
||||||
additionalManifests:
|
additionalManifests:
|
||||||
name: fleet-addon-config
|
name: fleet-addon-config
|
||||||
namespace: '{{ .Values.rancherTurtles.namespace }}'
|
namespace: '{{ .Values.rancherTurtles.namespace }}'
|
||||||
@@ -35,10 +27,22 @@ data:
|
|||||||
metadata:
|
metadata:
|
||||||
name: fleet-addon-config
|
name: fleet-addon-config
|
||||||
spec:
|
spec:
|
||||||
|
config:
|
||||||
|
featureGates:
|
||||||
|
configMap:
|
||||||
|
ref:
|
||||||
|
kind: ConfigMap
|
||||||
|
apiVersion: v1
|
||||||
|
name: rancher-config
|
||||||
|
namespace: cattle-system
|
||||||
|
experimentalOciStorage: true
|
||||||
|
experimentalHelmOps: true
|
||||||
clusterClass:
|
clusterClass:
|
||||||
patchResource: true
|
patchResource: true
|
||||||
setOwnerReferences: true
|
setOwnerReferences: true
|
||||||
cluster:
|
cluster:
|
||||||
|
agentNamespace: cattle-fleet-system
|
||||||
|
applyClassGroup: true
|
||||||
patchResource: true
|
patchResource: true
|
||||||
setOwnerReferences: true
|
setOwnerReferences: true
|
||||||
hostNetwork: true
|
hostNetwork: true
|
||||||
@@ -54,4 +58,3 @@ data:
|
|||||||
matchExpressions:
|
matchExpressions:
|
||||||
- key: cluster-api.cattle.io/disable-fleet-auto-import
|
- key: cluster-api.cattle.io/disable-fleet-auto-import
|
||||||
operator: DoesNotExist
|
operator: DoesNotExist
|
||||||
{{- end }}
|
|
||||||
|
@@ -26,7 +26,7 @@ spec:
|
|||||||
containers:
|
containers:
|
||||||
- args:
|
- args:
|
||||||
- --leader-elect
|
- --leader-elect
|
||||||
- --feature-gates=addon-provider-fleet={{ index .Values "rancherTurtles" "features" "addon-provider-fleet" "enabled"}},agent-tls-mode={{ index .Values "rancherTurtles" "features" "agent-tls-mode" "enabled"}},ui-plugin={{ index .Values "turtlesUI" "enabled"}}
|
- --feature-gates=agent-tls-mode={{ index .Values "rancherTurtles" "features" "agent-tls-mode" "enabled"}},ui-plugin={{ index .Values "turtlesUI" "enabled"}}
|
||||||
{{- range .Values.rancherTurtles.managerArguments }}
|
{{- range .Values.rancherTurtles.managerArguments }}
|
||||||
- {{ . }}
|
- {{ . }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
@@ -3103,9 +3103,9 @@ spec:
|
|||||||
- message: Config secret namespace is always equal to the resource namespace
|
- message: Config secret namespace is always equal to the resource namespace
|
||||||
and should not be set.
|
and should not be set.
|
||||||
rule: '!has(self.configSecret) || !has(self.configSecret.__namespace__)'
|
rule: '!has(self.configSecret) || !has(self.configSecret.__namespace__)'
|
||||||
- message: One of fetchConfig url or selector should be set.
|
- message: One of fetchConfig oci, url or selector should be set.
|
||||||
rule: '!has(self.fetchConfig) || [has(self.fetchConfig.url), has(self.fetchConfig.selector)].exists_one(e,
|
rule: '!has(self.fetchConfig) || [has(self.fetchConfig.oci), has(self.fetchConfig.url),
|
||||||
e)'
|
has(self.fetchConfig.selector)].exists_one(e, e)'
|
||||||
status:
|
status:
|
||||||
default: {}
|
default: {}
|
||||||
description: CAPIProviderStatus defines the observed state of CAPIProvider.
|
description: CAPIProviderStatus defines the observed state of CAPIProvider.
|
||||||
|
403
rancher-turtles-chart/values.schema.json
Normal file
403
rancher-turtles-chart/values.schema.json
Normal file
@@ -0,0 +1,403 @@
|
|||||||
|
{
|
||||||
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||||
|
"title": "Helm Chart Values Schema",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"turtlesUI": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Manages the UI component.",
|
||||||
|
"properties": {
|
||||||
|
"enabled": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false,
|
||||||
|
"description": "Turn UI on or off."
|
||||||
|
},
|
||||||
|
"version": {
|
||||||
|
"type": "string",
|
||||||
|
"default": "0.8.2",
|
||||||
|
"description": "UI version to use."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rancherTurtles": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Sets up the cluster management controller.",
|
||||||
|
"properties": {
|
||||||
|
"image": {
|
||||||
|
"type": "string",
|
||||||
|
"default": "controller",
|
||||||
|
"description": "Controller container image."
|
||||||
|
},
|
||||||
|
"imageVersion": {
|
||||||
|
"type": "string",
|
||||||
|
"default": "v0.0.0",
|
||||||
|
"description": "Image tag."
|
||||||
|
},
|
||||||
|
"imagePullPolicy": {
|
||||||
|
"type": "string",
|
||||||
|
"default": "IfNotPresent",
|
||||||
|
"description": "Specify image pull policy."
|
||||||
|
},
|
||||||
|
"namespace": {
|
||||||
|
"type": "string",
|
||||||
|
"default": "rancher-turtles-system",
|
||||||
|
"description": "Namespace for Turtles to run."
|
||||||
|
},
|
||||||
|
"managerArguments": {
|
||||||
|
"type": "array",
|
||||||
|
"default": [],
|
||||||
|
"description": "Extra args for the controller.",
|
||||||
|
"items": { "type": "string" }
|
||||||
|
},
|
||||||
|
"imagePullSecrets": {
|
||||||
|
"type": "array",
|
||||||
|
"default": [],
|
||||||
|
"description": "Secrets for private registries.",
|
||||||
|
"items": { "type": "string" }
|
||||||
|
},
|
||||||
|
"rancherInstalled": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": true,
|
||||||
|
"description": "True if Rancher is already installed in the cluster."
|
||||||
|
},
|
||||||
|
"kubectlImage": {
|
||||||
|
"type": "string",
|
||||||
|
"default": "registry.k8s.io/kubernetes/kubectl:v1.30.0",
|
||||||
|
"description": "Image for kubectl tasks."
|
||||||
|
},
|
||||||
|
"features": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Optional and experimental features.",
|
||||||
|
"properties": {
|
||||||
|
"day2operations": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Alpha feature.",
|
||||||
|
"properties": {
|
||||||
|
"enabled": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false,
|
||||||
|
"description": "Turn on or off."
|
||||||
|
},
|
||||||
|
"image": {
|
||||||
|
"type": "string",
|
||||||
|
"default": "controller",
|
||||||
|
"description": "Image for day-2 ops."
|
||||||
|
},
|
||||||
|
"imageVersion": {
|
||||||
|
"type": "string",
|
||||||
|
"default": "v0.0.0",
|
||||||
|
"description": "Image tag."
|
||||||
|
},
|
||||||
|
"imagePullPolicy": {
|
||||||
|
"type": "string",
|
||||||
|
"default": "IfNotPresent",
|
||||||
|
"description": "Specify image pull policy."
|
||||||
|
},
|
||||||
|
"etcdBackupRestore": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Manages etcd backup/restore.",
|
||||||
|
"properties": {
|
||||||
|
"enabled": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false,
|
||||||
|
"description": "Turn on (true) or off (false)."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"addon-provider-fleet": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Beta feature for fleet addons.",
|
||||||
|
"properties": {
|
||||||
|
"enabled": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": true,
|
||||||
|
"description": "Turn on or off."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"agent-tls-mode": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Alpha feature for agent TLS.",
|
||||||
|
"properties": {
|
||||||
|
"enabled": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false,
|
||||||
|
"description": "Turn on or off."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"clusterclass-operations": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Alpha feature. Not ready for testing yet.",
|
||||||
|
"properties": {
|
||||||
|
"enabled": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false,
|
||||||
|
"description": "Turn on or off."
|
||||||
|
},
|
||||||
|
"image": {
|
||||||
|
"type": "string",
|
||||||
|
"default": "controller",
|
||||||
|
"description": "Image for cluster class ops."
|
||||||
|
},
|
||||||
|
"imageVersion": {
|
||||||
|
"type": "string",
|
||||||
|
"default": "v0.0.0",
|
||||||
|
"description": "Image tag."
|
||||||
|
},
|
||||||
|
"imagePullPolicy": {
|
||||||
|
"type": "string",
|
||||||
|
"default": "IfNotPresent",
|
||||||
|
"description": "Pull policy."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cluster-api-operator": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Manages Cluster API components.",
|
||||||
|
"properties": {
|
||||||
|
"enabled": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": true,
|
||||||
|
"description": "Turn on or off."
|
||||||
|
},
|
||||||
|
"cert-manager": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"enabled": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false,
|
||||||
|
"description": "Turn on or off."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"volumes": {
|
||||||
|
"type": "array",
|
||||||
|
"description": "Volumes for operator pods (certs, config).",
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"oneOf": [
|
||||||
|
{
|
||||||
|
"required": ["name", "secret"],
|
||||||
|
"properties": {
|
||||||
|
"name": { "type": "string" },
|
||||||
|
"secret": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"defaultMode": {
|
||||||
|
"type": "integer",
|
||||||
|
"default": 420,
|
||||||
|
"description": "File permissions."
|
||||||
|
},
|
||||||
|
"secretName": {
|
||||||
|
"type": "string",
|
||||||
|
"default": "capi-operator-webhook-service-cert",
|
||||||
|
"description": "Secret for webhook certs."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"required": ["name", "configMap"],
|
||||||
|
"properties": {
|
||||||
|
"name": { "type": "string" },
|
||||||
|
"configMap": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"name": {
|
||||||
|
"type": "string",
|
||||||
|
"default": "clusterctl-config",
|
||||||
|
"description": "ConfigMap for clusterctl."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"image": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"manager": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"repository": {
|
||||||
|
"type": "string",
|
||||||
|
"default": "registry.rancher.com/rancher/cluster-api-operator",
|
||||||
|
"description": "Image repo."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"volumeMounts": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"manager": {
|
||||||
|
"type": "array",
|
||||||
|
"description": "Mount volumes to pods.",
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"mountPath": { "type": "string" },
|
||||||
|
"name": { "type": "string" },
|
||||||
|
"readOnly": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": true,
|
||||||
|
"description": "Mount as read-only."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"resources": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"manager": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"limits": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"cpu": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "CPU limit."
|
||||||
|
},
|
||||||
|
"memory": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Memory limit."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requests": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"cpu": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "CPU request."
|
||||||
|
},
|
||||||
|
"memory": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Memory request."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cleanup": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": true,
|
||||||
|
"description": "Enable cleanup tasks."
|
||||||
|
},
|
||||||
|
"cluster-api": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Cluster API component settings.",
|
||||||
|
"properties": {
|
||||||
|
"enabled": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": true,
|
||||||
|
"description": "Turn on or off."
|
||||||
|
},
|
||||||
|
"configSecret": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"name": {
|
||||||
|
"type": "string",
|
||||||
|
"default": "",
|
||||||
|
"description": "Custom secret name (if overriding)."
|
||||||
|
},
|
||||||
|
"defaultName": {
|
||||||
|
"type": "string",
|
||||||
|
"default": "capi-env-variables",
|
||||||
|
"description": "Default secret name."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"core": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"namespace": {
|
||||||
|
"type": "string",
|
||||||
|
"default": "capi-system",
|
||||||
|
"description": "Core component namespace."
|
||||||
|
},
|
||||||
|
"imageUrl": {
|
||||||
|
"type": "string",
|
||||||
|
"default": "",
|
||||||
|
"description": "Custom image URL."
|
||||||
|
},
|
||||||
|
"fetchConfig": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"url": { "type": "string", "default": "" },
|
||||||
|
"selector": { "type": "string", "default": "" }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rke2": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"enabled": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": true,
|
||||||
|
"description": "Turn on or off."
|
||||||
|
},
|
||||||
|
"version": {
|
||||||
|
"type": "string",
|
||||||
|
"default": "",
|
||||||
|
"description": "RKE2 version."
|
||||||
|
},
|
||||||
|
"bootstrap": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"namespace": {
|
||||||
|
"type": "string",
|
||||||
|
"default": "rke2-bootstrap-system"
|
||||||
|
},
|
||||||
|
"imageUrl": { "type": "string", "default": "" },
|
||||||
|
"fetchConfig": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"url": { "type": "string", "default": "" },
|
||||||
|
"selector": { "type": "string", "default": "" }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"controlPlane": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"namespace": {
|
||||||
|
"type": "string",
|
||||||
|
"default": "rke2-control-plane-system"
|
||||||
|
},
|
||||||
|
"imageUrl": { "type": "string", "default": "" },
|
||||||
|
"fetchConfig": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"url": { "type": "string", "default": "" },
|
||||||
|
"selector": { "type": "string", "default": "" }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user