forked from suse-edge/Factory
Compare commits
44 Commits
Author | SHA256 | Date | |
---|---|---|---|
1d8d3b3924 | |||
019c3da9db | |||
6029137fb3 | |||
51b4330cab | |||
8596d9328b | |||
7649db04b8 | |||
47ad45bfab | |||
4fdcb0ecb7 | |||
7723e20aa0 | |||
4434e36b70 | |||
2f235ceb1a | |||
8816f3b054 | |||
453f3564aa | |||
421b511d19 | |||
1f1e6eae55 | |||
d32507597f | |||
eaa7dad6f6 | |||
9b502acd83 | |||
49894ba16d | |||
43d5ffa2bd | |||
13b4cd50e2 | |||
93f5662ace | |||
a7284b5d35 | |||
312688449c | |||
cfc89b579d | |||
a089bf30e4
|
|||
6dc2406148
|
|||
1928a4cc98
|
|||
5c48860dcd
|
|||
2f6c9b294c | |||
cfad38ccb4 | |||
1872e09bdf | |||
d15eb56f43 | |||
c97db6d3a3 | |||
fbdab3228e | |||
e6f27f3ecc | |||
4fab8da5d5 | |||
1583758ffa | |||
9cf01c4934 | |||
5c9ab033b3 | |||
8138909378 | |||
e55661d20b | |||
7ba1026bf5 | |||
5b6a86f405 |
@@ -17,7 +17,7 @@ jobs:
|
||||
object-format: 'sha256'
|
||||
- name: Setup dependencies
|
||||
run: |
|
||||
zypper in -y python3-PyYAML
|
||||
zypper in -y python3-ruamel.yaml
|
||||
- name: Check release manifest
|
||||
run: |
|
||||
python3 .obs/manifest-check.py
|
||||
python3 .obs/manifest-check.py --check
|
||||
|
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,4 +1,3 @@
|
||||
*/.osc
|
||||
*/__pycache__
|
||||
.venv/
|
||||
.idea/
|
||||
.venv/
|
@@ -1,3 +1,3 @@
|
||||
PROJECT = "isv:SUSE:Edge:Factory"
|
||||
PROJECT = "isv:SUSE:Edge:3.3"
|
||||
REPOSITORY = "https://src.opensuse.org/suse-edge/Factory"
|
||||
BRANCH = "main"
|
||||
BRANCH = "3.3"
|
||||
|
51
.obs/manifest-check.py
Normal file → Executable file
51
.obs/manifest-check.py
Normal file → Executable file
@@ -1,11 +1,15 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
import yaml
|
||||
import ruamel.yaml
|
||||
import pathlib
|
||||
import argparse
|
||||
import sys
|
||||
|
||||
yaml = ruamel.yaml.YAML()
|
||||
|
||||
def get_chart_version(chart_name: str) -> str:
|
||||
with open(f"./{chart_name}-chart/Chart.yaml") as f:
|
||||
chart = yaml.safe_load(f)
|
||||
chart = yaml.load(f)
|
||||
return chart["version"]
|
||||
|
||||
def get_charts(chart):
|
||||
@@ -21,22 +25,57 @@ def get_charts(chart):
|
||||
|
||||
def get_charts_list():
|
||||
with open("./release-manifest-image/release_manifest.yaml") as f:
|
||||
manifest = yaml.safe_load(f)
|
||||
manifest = yaml.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")
|
||||
def check_charts(fix: bool) -> bool:
|
||||
success = True
|
||||
charts = get_charts_list()
|
||||
to_fix = {}
|
||||
for chart in charts:
|
||||
expected_version = get_chart_version(chart)
|
||||
if expected_version != charts[chart]:
|
||||
success = False
|
||||
to_fix[f'%%CHART_REPO%%/%%CHART_PREFIX%%{chart}'] = expected_version
|
||||
print(f"{chart}: Expected: {expected_version}, Got: {charts[chart]}")
|
||||
if not success:
|
||||
if fix and not success:
|
||||
fix_charts(to_fix)
|
||||
return True
|
||||
return success
|
||||
|
||||
def fix_charts(to_fix):
|
||||
manifest_path = pathlib.Path("./release-manifest-image/release_manifest.yaml")
|
||||
manifest = yaml.load(manifest_path)
|
||||
yaml.indent(mapping=2, sequence=4, offset=2)
|
||||
yaml.width = 4096
|
||||
for chart_index, chart in enumerate(manifest["spec"]["components"]["workloads"]["helm"]):
|
||||
changed = False
|
||||
if chart["chart"] in to_fix.keys():
|
||||
changed = True
|
||||
chart["version"] = to_fix[chart["chart"]]
|
||||
for subchart_index, subchart in enumerate(chart.get("addonCharts", [])):
|
||||
if subchart["chart"] in to_fix.keys():
|
||||
changed = True
|
||||
subchart["version"] = to_fix[subchart["chart"]]
|
||||
chart["addonCharts"][subchart_index] = subchart
|
||||
for subchart_index, subchart in enumerate(chart.get("dependencyCharts", [])):
|
||||
if subchart["chart"] in to_fix.keys():
|
||||
changed = True
|
||||
subchart["version"] = to_fix[subchart["chart"]]
|
||||
chart["dependencyCharts"][subchart_index] = subchart
|
||||
if changed:
|
||||
manifest["spec"]["components"]["workloads"]["helm"][chart_index] = chart
|
||||
yaml.dump(manifest, manifest_path)
|
||||
|
||||
def main():
|
||||
print("Checking charts versions in release manifest")
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('-c', '--check', action='store_true')
|
||||
args = parser.parse_args()
|
||||
if not check_charts(not args.check):
|
||||
sys.exit(1)
|
||||
else:
|
||||
print("All local charts in release manifest are using the right version")
|
||||
|
10
.pre-commit-config.yaml
Normal file
10
.pre-commit-config.yaml
Normal file
@@ -0,0 +1,10 @@
|
||||
repos:
|
||||
- repo: local
|
||||
hooks:
|
||||
- id: check-manifest
|
||||
name: "Check release-manifest"
|
||||
entry: python3 .obs/manifest-check.py
|
||||
language: python
|
||||
additional_dependencies: ['ruamel.yaml']
|
||||
pass_filenames: false
|
||||
always_run: true
|
5
_config
5
_config
@@ -60,7 +60,6 @@ BuildFlags: onlybuild:release-manifest-image
|
||||
BuildFlags: excludebuild:endpoint-copier-operator-image
|
||||
BuildFlags: excludebuild:ironic-image
|
||||
BuildFlags: excludebuild:ironic-ipa-downloader-image
|
||||
BuildFlags: excludebuild:kiwi-builder-image
|
||||
BuildFlags: excludebuild:kubectl-image
|
||||
BuildFlags: excludebuild:kube-rbac-proxy-image
|
||||
BuildFlags: excludebuild:metallb-controller-image
|
||||
@@ -150,10 +149,6 @@ BuildFlags: onlybuild:release-manifest-image
|
||||
%else
|
||||
%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
|
||||
|
||||
|
@@ -1,3 +1,4 @@
|
||||
#!BuildTag: %%CHART_PREFIX%%akri-dashboard-extension:%%CHART_MAJOR%%.0.2
|
||||
#!BuildTag: %%CHART_PREFIX%%akri-dashboard-extension:%%CHART_MAJOR%%.0.2_up1.3.1
|
||||
#!BuildTag: %%CHART_PREFIX%%akri-dashboard-extension:%%CHART_MAJOR%%.0.2_up1.3.1-%RELEASE%
|
||||
annotations:
|
||||
|
@@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#!BuildTag: %%IMG_PREFIX%%baremetal-operator:%%baremetal-operator_version%%.0
|
||||
#!BuildTag: %%IMG_PREFIX%%baremetal-operator:%%baremetal-operator_version%%.0-%RELEASE%
|
||||
#!BuildTag: %%IMG_PREFIX%%baremetal-operator:%%baremetal-operator_version%%.1
|
||||
#!BuildTag: %%IMG_PREFIX%%baremetal-operator:%%baremetal-operator_version%%.1-%RELEASE%
|
||||
#!BuildVersion: 15.6
|
||||
ARG SLE_VERSION
|
||||
FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro
|
||||
|
@@ -1,529 +0,0 @@
|
||||
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">
|
||||
<param name="url">https://github.com/metal3-io/baremetal-operator</param>
|
||||
<param name="scm">git</param>
|
||||
<param name="revision">v0.10.2</param>
|
||||
<param name="revision">v0.9.1</param>
|
||||
<param name="version">_auto_</param>
|
||||
<param name="versionformat">@PARENT_TAG@</param>
|
||||
<param name="changesgenerate">enable</param>
|
||||
|
@@ -17,15 +17,14 @@
|
||||
|
||||
|
||||
Name: baremetal-operator
|
||||
Version: 0.10.2
|
||||
Version: 0.9.1
|
||||
Release: 0
|
||||
Summary: Implements a Kubernetes API for managing bare metal hosts
|
||||
License: Apache-2.0
|
||||
URL: https://github.com/metal3-io/baremetal-operator
|
||||
Patch0: 0001-Allow-configuring-different-IPA-images-per-architect.patch
|
||||
Source: baremetal-operator-%{version}.tar
|
||||
Source1: vendor.tar.gz
|
||||
BuildRequires: golang(API) = 1.24
|
||||
BuildRequires: golang(API) = 1.23
|
||||
ExcludeArch: s390
|
||||
ExcludeArch: %{ix86}
|
||||
|
||||
|
@@ -5,7 +5,7 @@ metallb:
|
||||
endpoint-copier-operator:
|
||||
chart: endpoint-copier-operator
|
||||
repository: "%%CHART_REPO%%/%%CHART_PREFIX%%"
|
||||
version: "%%CHART_MAJOR%%.0.1+up0.3.0"
|
||||
version: "%%CHART_MAJOR%%.0.0+up0.2.1"
|
||||
kubernetes:
|
||||
k3s:
|
||||
selinuxPackage: k3s-selinux-1.6-1.slemicro.noarch
|
||||
|
@@ -1,8 +1,8 @@
|
||||
#!BuildTag: %%CHART_PREFIX%%endpoint-copier-operator:%%CHART_MAJOR%%.0.1_up0.3.0
|
||||
#!BuildTag: %%CHART_PREFIX%%endpoint-copier-operator:%%CHART_MAJOR%%.0.1_up0.3.0-%RELEASE%
|
||||
#!BuildTag: %%CHART_PREFIX%%endpoint-copier-operator:%%CHART_MAJOR%%.0.0_up0.2.1
|
||||
#!BuildTag: %%CHART_PREFIX%%endpoint-copier-operator:%%CHART_MAJOR%%.0.0_up0.2.1-%RELEASE%
|
||||
apiVersion: v2
|
||||
appVersion: v0.3.0
|
||||
appVersion: v0.2.0
|
||||
description: A Helm chart for Kubernetes
|
||||
name: endpoint-copier-operator
|
||||
type: application
|
||||
version: "%%CHART_MAJOR%%.0.1+up0.3.0"
|
||||
version: "%%CHART_MAJOR%%.0.0+up0.2.1"
|
||||
|
@@ -20,23 +20,8 @@ spec:
|
||||
labels:
|
||||
{{- include "endpoint-copier-operator.selectorLabels" . | nindent 8 }}
|
||||
spec:
|
||||
{{- if .Values.priorityClassName }}
|
||||
priorityClassName: {{ .Values.priorityClassName }}
|
||||
{{- end }}
|
||||
securityContext:
|
||||
{{- 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:
|
||||
- command:
|
||||
- /manager
|
||||
|
@@ -7,9 +7,9 @@ metadata:
|
||||
name: {{ include "endpoint-copier-operator.fullname" . }}
|
||||
rules:
|
||||
- apiGroups:
|
||||
- "discovery.k8s.io"
|
||||
- ""
|
||||
resources:
|
||||
- endpointslices
|
||||
- endpoints
|
||||
verbs:
|
||||
- create
|
||||
- delete
|
||||
|
@@ -8,7 +8,7 @@ image:
|
||||
repository: %%IMG_REPO%%/%%IMG_PREFIX%%endpoint-copier-operator
|
||||
pullPolicy: IfNotPresent
|
||||
# Overrides the image tag whose default is the chart appVersion.
|
||||
tag: "0.3.0"
|
||||
tag: "0.2.0"
|
||||
|
||||
nameOverride: "endpoint-copier-operator"
|
||||
fullnameOverride: "endpoint-copier-operator"
|
||||
@@ -29,8 +29,6 @@ podSecurityContext:
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
|
||||
priorityClassName: "system-cluster-critical"
|
||||
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
@@ -39,11 +37,11 @@ securityContext:
|
||||
|
||||
resources:
|
||||
limits:
|
||||
cpu: 100m
|
||||
memory: 64Mi
|
||||
cpu: 500m
|
||||
memory: 128Mi
|
||||
requests:
|
||||
cpu: 5m
|
||||
memory: 32Mi
|
||||
cpu: 10m
|
||||
memory: 64Mi
|
||||
|
||||
autoscaling:
|
||||
enabled: false
|
||||
|
@@ -2,7 +2,7 @@
|
||||
<service name="obs_scm">
|
||||
<param name="url">https://github.com/suse-edge/endpoint-copier-operator</param>
|
||||
<param name="scm">git</param>
|
||||
<param name="revision">v0.3.0</param>
|
||||
<param name="revision">v0.2.0</param>
|
||||
<param name="version">_auto_</param>
|
||||
<param name="versionformat">@PARENT_TAG@</param>
|
||||
<param name="changesgenerate">enable</param>
|
||||
|
@@ -17,14 +17,14 @@
|
||||
|
||||
|
||||
Name: endpoint-copier-operator
|
||||
Version: 0.3.0
|
||||
Release: 0.3.0
|
||||
Version: 0.2.0
|
||||
Release: 0.2.0
|
||||
Summary: Implements a Kubernetes API for copying endpoint resources
|
||||
License: Apache-2.0
|
||||
URL: https://github.com/suse-edge/endpoint-copier-operator
|
||||
Source: endpoint-copier-operator-%{version}.tar
|
||||
Source1: vendor.tar.gz
|
||||
BuildRequires: golang(API) = 1.24
|
||||
BuildRequires: golang(API) = 1.20
|
||||
ExcludeArch: s390
|
||||
ExcludeArch: %{ix86}
|
||||
|
||||
|
57
ironic-image/inspector-apache.conf.j2
Normal file
57
ironic-image/inspector-apache.conf.j2
Normal file
@@ -0,0 +1,57 @@
|
||||
# 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>
|
68
ironic-image/ironic-inspector.conf.j2
Normal file
68
ironic-image/ironic-inspector.conf.j2
Normal file
@@ -0,0 +1,68 @@
|
||||
[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 %}
|
13
ironic-image/runironic-api
Normal file
13
ironic-image/runironic-api
Normal file
@@ -0,0 +1,13 @@
|
||||
#!/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
|
20
ironic-image/runironic-conductor
Normal file
20
ironic-image/runironic-conductor
Normal file
@@ -0,0 +1,20 @@
|
||||
#!/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
|
62
ironic-image/runironic-inspector
Normal file
62
ironic-image/runironic-inspector
Normal file
@@ -0,0 +1,62 @@
|
||||
#!/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,3 +1,4 @@
|
||||
#!BuildTag: %%CHART_PREFIX%%kubevirt-dashboard-extension:%%CHART_MAJOR%%.0.2
|
||||
#!BuildTag: %%CHART_PREFIX%%kubevirt-dashboard-extension:%%CHART_MAJOR%%.0.2_up1.3.2
|
||||
#!BuildTag: %%CHART_PREFIX%%kubevirt-dashboard-extension:%%CHART_MAJOR%%.0.2_up1.3.2-%RELEASE%
|
||||
annotations:
|
||||
|
@@ -1,7 +1,7 @@
|
||||
#!BuildTag: %%CHART_PREFIX%%metal3:%%CHART_MAJOR%%.0.8_up0.11.6
|
||||
#!BuildTag: %%CHART_PREFIX%%metal3:%%CHART_MAJOR%%.0.8_up0.11.6-%RELEASE%
|
||||
#!BuildTag: %%CHART_PREFIX%%metal3:%%CHART_MAJOR%%.0.7_up0.11.5
|
||||
#!BuildTag: %%CHART_PREFIX%%metal3:%%CHART_MAJOR%%.0.7_up0.11.5-%RELEASE%
|
||||
apiVersion: v2
|
||||
appVersion: 0.11.6
|
||||
appVersion: 0.11.5
|
||||
dependencies:
|
||||
- alias: metal3-baremetal-operator
|
||||
name: baremetal-operator
|
||||
@@ -15,7 +15,7 @@ dependencies:
|
||||
condition: global.enable_mariadb
|
||||
name: mariadb
|
||||
repository: file://./charts/mariadb
|
||||
version: 0.6.0
|
||||
version: 0.5.4
|
||||
- alias: metal3-media
|
||||
condition: global.enable_metal3_media_server
|
||||
name: media
|
||||
@@ -25,4 +25,4 @@ description: A Helm chart that installs all of the dependencies needed for Metal
|
||||
icon: https://github.com/cncf/artwork/raw/master/projects/metal3/icon/color/metal3-icon-color.svg
|
||||
name: metal3
|
||||
type: application
|
||||
version: "%%CHART_MAJOR%%.0.8+up0.11.6"
|
||||
version: "%%CHART_MAJOR%%.0.7+up0.11.5"
|
||||
|
@@ -23,12 +23,6 @@ data:
|
||||
CACHEURL: "{{ $protocol }}://{{ $ironicCacheHost }}/images"
|
||||
DEPLOY_KERNEL_URL: "{{ $protocol }}://{{ $ironicBootHost }}/images/ironic-python-agent-{{ $deployArch }}.kernel"
|
||||
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 }}"
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
|
@@ -28,7 +28,7 @@ images:
|
||||
baremetalOperator:
|
||||
repository: registry.opensuse.org/isv/suse/edge/metal3/containers/images/baremetal-operator
|
||||
pullPolicy: IfNotPresent
|
||||
tag: "0.10.2.0"
|
||||
tag: "0.9.1.1"
|
||||
|
||||
imagePullSecrets: []
|
||||
nameOverride: "manger"
|
||||
|
@@ -1,6 +1,6 @@
|
||||
apiVersion: v2
|
||||
appVersion: "10.11"
|
||||
appVersion: 10.6.7
|
||||
description: A Helm chart for MariaDB, used by Metal3
|
||||
name: mariadb
|
||||
type: application
|
||||
version: 0.6.0
|
||||
version: 0.5.4
|
||||
|
@@ -1,13 +0,0 @@
|
||||
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,7 +5,4 @@ metadata:
|
||||
labels:
|
||||
{{- include "mariadb.labels" . | nindent 4 }}
|
||||
data:
|
||||
MARIADB_USER: ironic
|
||||
MARIADB_RANDOM_ROOT_PASSWORD: "yes"
|
||||
MARIADB_DATABASE: ironic
|
||||
MARIADB_AUTO_UPGRADE: "yes"
|
||||
RESTART_CONTAINER_CERTIFICATE_UPDATED: "false"
|
||||
|
@@ -25,50 +25,23 @@ spec:
|
||||
serviceAccountName: {{ include "mariadb.serviceAccountName" . }}
|
||||
securityContext:
|
||||
{{- 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:
|
||||
- name: mariadb
|
||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.securityContext | nindent 12 }}
|
||||
envFrom:
|
||||
- configMapRef:
|
||||
name: mariadb-cm
|
||||
env:
|
||||
- name: MARIADB_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
key: password
|
||||
name: ironic-mariadb
|
||||
- name: RESTART_CONTAINER_CERTIFICATE_UPDATED
|
||||
valueFrom:
|
||||
configMapKeyRef:
|
||||
name: mariadb-cm
|
||||
key: RESTART_CONTAINER_CERTIFICATE_UPDATED
|
||||
lifecycle:
|
||||
preStop:
|
||||
exec:
|
||||
@@ -79,9 +52,9 @@ spec:
|
||||
livenessProbe:
|
||||
exec:
|
||||
command:
|
||||
- healthcheck.sh
|
||||
- --connect
|
||||
- --innodb_initialized
|
||||
- sh
|
||||
- -c
|
||||
- mysqladmin status -uironic -p$(printenv MARIADB_PASSWORD)
|
||||
failureThreshold: 10
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 30
|
||||
@@ -94,29 +67,19 @@ spec:
|
||||
readinessProbe:
|
||||
exec:
|
||||
command:
|
||||
- healthcheck.sh
|
||||
- --connect
|
||||
- --innodb_initialized
|
||||
- sh
|
||||
- -c
|
||||
- mysqladmin status -uironic -p$(printenv MARIADB_PASSWORD)
|
||||
failureThreshold: 10
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 30
|
||||
successThreshold: 1
|
||||
timeoutSeconds: 10
|
||||
volumeMounts:
|
||||
- name: mariadb-conf
|
||||
mountPath: /etc/mysql/conf.d
|
||||
- name: mariadb-run
|
||||
mountPath: /run/mysql
|
||||
{{- $volmounts }}
|
||||
{{- with .Values.global.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
volumes:
|
||||
- name: mariadb-conf
|
||||
configMap:
|
||||
name: mariadb-config
|
||||
- name: mariadb-run
|
||||
emptyDir:
|
||||
sizeLimit: 20Mi
|
||||
{{- $volumes }}
|
||||
|
@@ -12,9 +12,9 @@ service:
|
||||
targetPort: 3306
|
||||
|
||||
image:
|
||||
repository: registry.suse.com/suse/mariadb
|
||||
repository: registry.opensuse.org/isv/suse/edge/metal3/containers/images/suse/mariadb
|
||||
pullPolicy: IfNotPresent
|
||||
tag: 10.11
|
||||
tag: 10.6.15.1
|
||||
|
||||
nameOverride: ""
|
||||
fullnameOverride: ""
|
||||
@@ -31,8 +31,8 @@ serviceAccount:
|
||||
podAnnotations: {}
|
||||
|
||||
podSecurityContext:
|
||||
runAsUser: 60
|
||||
fsGroup: 60
|
||||
runAsUser: 10060
|
||||
fsGroup: 10060
|
||||
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
@@ -60,7 +60,6 @@ persistence:
|
||||
volumeMounts:
|
||||
- name: mariadb-data-volume
|
||||
mountPath: /var/lib/mysql
|
||||
subPath: data
|
||||
|
||||
volumes:
|
||||
- name: mariadb-data-volume
|
||||
|
@@ -115,8 +115,8 @@ metal3-mariadb:
|
||||
persistence:
|
||||
storageClass: ""
|
||||
image:
|
||||
repository: "registry.suse.com/suse/mariadb"
|
||||
tag: "10.11"
|
||||
repository: "registry.suse.com/edge/mariadb"
|
||||
tag: "10.6.15.1"
|
||||
|
||||
#
|
||||
# Baremetal Operator
|
||||
|
@@ -1,10 +1,10 @@
|
||||
#!BuildTag: %%CHART_PREFIX%%rancher-turtles-airgap-resources:%%CHART_MAJOR%%.0.4_up0.20.0
|
||||
#!BuildTag: %%CHART_PREFIX%%rancher-turtles-airgap-resources:%%CHART_MAJOR%%.0.4_up0.20.0-%RELEASE%
|
||||
#!BuildTag: %%CHART_PREFIX%%rancher-turtles-airgap-resources:%%CHART_MAJOR%%.0.5_up0.21.0
|
||||
#!BuildTag: %%CHART_PREFIX%%rancher-turtles-airgap-resources:%%CHART_MAJOR%%.0.5_up0.21.0-%RELEASE%
|
||||
apiVersion: v2
|
||||
appVersion: 0.20.0
|
||||
appVersion: 0.21.0
|
||||
description: Rancher Turtles utility chart for airgap scenarios
|
||||
home: https://github.com/rancher/turtles/
|
||||
icon: https://raw.githubusercontent.com/rancher/turtles/main/logos/capi.svg
|
||||
name: rancher-turtles-airgap-resources
|
||||
type: application
|
||||
version: "%%CHART_MAJOR%%.0.4+up0.20.0"
|
||||
version: "%%CHART_MAJOR%%.0.5+up0.21.0"
|
||||
|
File diff suppressed because one or more lines are too long
@@ -656,12 +656,8 @@ data:
|
||||
- list
|
||||
- get
|
||||
- watch
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- namespaces
|
||||
verbs:
|
||||
- create
|
||||
- patch
|
||||
- apiGroups:
|
||||
- events.k8s.io
|
||||
resources:
|
||||
@@ -817,7 +813,7 @@ data:
|
||||
control-plane: controller-manager
|
||||
spec:
|
||||
containers:
|
||||
- image: ghcr.io/rancher-sandbox/cluster-api-addon-provider-fleet:v0.10.0
|
||||
- image: ghcr.io/rancher-sandbox/cluster-api-addon-provider-fleet:v0.11.0
|
||||
imagePullPolicy: IfNotPresent
|
||||
name: manager
|
||||
ports:
|
||||
@@ -839,7 +835,7 @@ data:
|
||||
memory: 100Mi
|
||||
- args:
|
||||
- --helm-install
|
||||
image: ghcr.io/rancher-sandbox/cluster-api-addon-provider-fleet:v0.10.0
|
||||
image: ghcr.io/rancher-sandbox/cluster-api-addon-provider-fleet:v0.11.0
|
||||
name: helm-manager
|
||||
resources:
|
||||
limits:
|
||||
@@ -891,10 +887,13 @@ data:
|
||||
- major: 0
|
||||
minor: 10
|
||||
contract: v1beta1
|
||||
- major: 0
|
||||
minor: 11
|
||||
contract: v1beta1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
creationTimestamp: null
|
||||
name: v0.10.0
|
||||
name: v0.11.0
|
||||
namespace: rancher-turtles-system
|
||||
labels:
|
||||
provider-components: fleet
|
||||
|
@@ -3734,7 +3734,7 @@ data:
|
||||
envFrom:
|
||||
- configMapRef:
|
||||
name: capm3-capm3fasttrack-configmap
|
||||
image: registry.rancher.com/rancher/cluster-api-provider-metal3:v1.9.3
|
||||
image: registry.rancher.com/rancher/cluster-api-provider-metal3:v1.9.4
|
||||
imagePullPolicy: IfNotPresent
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
@@ -3820,7 +3820,7 @@ data:
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: metadata.namespace
|
||||
image: quay.io/metal3-io/ip-address-manager:v1.9.4
|
||||
image: quay.io/metal3-io/ip-address-manager:v1.9.5
|
||||
imagePullPolicy: IfNotPresent
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
@@ -4524,7 +4524,7 @@ data:
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
creationTimestamp: null
|
||||
name: v1.9.3
|
||||
name: v1.9.4
|
||||
namespace: capm3-system
|
||||
labels:
|
||||
provider-components: metal3
|
||||
|
@@ -985,6 +985,9 @@ data:
|
||||
- path
|
||||
type: object
|
||||
type: array
|
||||
gzipUserData:
|
||||
description: GzipUserData specifies if the user data should be gzipped.
|
||||
type: boolean
|
||||
postRKE2Commands:
|
||||
description: PostRKE2Commands specifies extra commands to run after
|
||||
rke2 setup runs.
|
||||
@@ -2164,6 +2167,10 @@ data:
|
||||
- path
|
||||
type: object
|
||||
type: array
|
||||
gzipUserData:
|
||||
description: GzipUserData specifies if the user data should
|
||||
be gzipped.
|
||||
type: boolean
|
||||
postRKE2Commands:
|
||||
description: PostRKE2Commands specifies extra commands to
|
||||
run after rke2 setup runs.
|
||||
@@ -2525,11 +2532,12 @@ data:
|
||||
- --leader-elect
|
||||
- --diagnostics-address=${CAPRKE2_DIAGNOSTICS_ADDRESS:=:8443}
|
||||
- --insecure-diagnostics=${CAPRKE2_INSECURE_DIAGNOSTICS:=false}
|
||||
- --feature-gates=MachinePool=${EXP_MACHINE_POOL:=true}
|
||||
- --v=${CAPRKE2_DEBUG_LEVEL:=0}
|
||||
- --feature-gates=MachinePool=${EXP_MACHINE_POOL:=true},ClusterTopology=${CLUSTER_TOPOLOGY:=true}
|
||||
- --concurrency=${CONCURRENCY_NUMBER:=10}
|
||||
command:
|
||||
- /manager
|
||||
image: ghcr.io/rancher/cluster-api-provider-rke2-bootstrap:v0.16.1
|
||||
image: ghcr.io/rancher/cluster-api-provider-rke2-bootstrap:v0.18.0
|
||||
imagePullPolicy: IfNotPresent
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
@@ -2764,10 +2772,16 @@ data:
|
||||
- major: 0
|
||||
minor: 16
|
||||
contract: v1beta1
|
||||
- major: 0
|
||||
minor: 17
|
||||
contract: v1beta1
|
||||
- major: 0
|
||||
minor: 18
|
||||
contract: v1beta1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
creationTimestamp: null
|
||||
name: v0.16.1
|
||||
name: v0.18.0
|
||||
namespace: rke2-bootstrap-system
|
||||
labels:
|
||||
provider-components: rke2-bootstrap
|
||||
|
@@ -1624,6 +1624,9 @@ data:
|
||||
- path
|
||||
type: object
|
||||
type: array
|
||||
gzipUserData:
|
||||
description: GzipUserData specifies if the user data should be gzipped.
|
||||
type: boolean
|
||||
infrastructureRef:
|
||||
description: |-
|
||||
InfrastructureRef is a required reference to a custom resource
|
||||
@@ -2434,6 +2437,51 @@ data:
|
||||
if value is false, ETCD metrics will NOT be exposed
|
||||
type: boolean
|
||||
type: object
|
||||
externalDatastoreSecret:
|
||||
description: |-
|
||||
ExternalDatastoreSecret is a reference to a Secret that contains configuration about connecting to an external datastore.
|
||||
The secret must contain a key named "endpoint" that contains the connection string for the external datastore.
|
||||
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
|
||||
x-kubernetes-map-type: atomic
|
||||
kubeAPIServer:
|
||||
description: KubeAPIServer defines optional custom configuration
|
||||
of the Kube API Server.
|
||||
@@ -3125,6 +3173,10 @@ data:
|
||||
- path
|
||||
type: object
|
||||
type: array
|
||||
gzipUserData:
|
||||
description: GzipUserData specifies if the user data should
|
||||
be gzipped.
|
||||
type: boolean
|
||||
infrastructureRef:
|
||||
description: |-
|
||||
InfrastructureRef is a required reference to a custom resource
|
||||
@@ -3950,6 +4002,51 @@ data:
|
||||
if value is false, ETCD metrics will NOT be exposed
|
||||
type: boolean
|
||||
type: object
|
||||
externalDatastoreSecret:
|
||||
description: |-
|
||||
ExternalDatastoreSecret is a reference to a Secret that contains configuration about connecting to an external datastore.
|
||||
The secret must contain a key named "endpoint" that contains the connection string for the external datastore.
|
||||
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
|
||||
x-kubernetes-map-type: atomic
|
||||
kubeAPIServer:
|
||||
description: KubeAPIServer defines optional custom configuration
|
||||
of the Kube API Server.
|
||||
@@ -4446,6 +4543,7 @@ data:
|
||||
- --diagnostics-address=${CAPRKE2_DIAGNOSTICS_ADDRESS:=:8443}
|
||||
- --insecure-diagnostics=${CAPRKE2_INSECURE_DIAGNOSTICS:=false}
|
||||
- --v=${CAPRKE2_DEBUG_LEVEL:=0}
|
||||
- --concurrency=${CONCURRENCY_NUMBER:=10}
|
||||
command:
|
||||
- /manager
|
||||
env:
|
||||
@@ -4461,7 +4559,7 @@ data:
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: metadata.uid
|
||||
image: ghcr.io/rancher/cluster-api-provider-rke2-controlplane:v0.16.1
|
||||
image: ghcr.io/rancher/cluster-api-provider-rke2-controlplane:v0.18.0
|
||||
imagePullPolicy: IfNotPresent
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
@@ -4703,10 +4801,16 @@ data:
|
||||
- major: 0
|
||||
minor: 16
|
||||
contract: v1beta1
|
||||
- major: 0
|
||||
minor: 17
|
||||
contract: v1beta1
|
||||
- major: 0
|
||||
minor: 18
|
||||
contract: v1beta1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
creationTimestamp: null
|
||||
name: v0.16.1
|
||||
name: v0.18.0
|
||||
namespace: rke2-control-plane-system
|
||||
labels:
|
||||
provider-components: rke2-control-plane
|
||||
|
@@ -3,4 +3,4 @@ dependencies:
|
||||
repository: https://kubernetes-sigs.github.io/cluster-api-operator
|
||||
version: 0.18.1
|
||||
digest: sha256:7ad59ce8888c32723b4ef1ae5f334fdff00a8aba87e6f1de76d605f134bff354
|
||||
generated: "2025-05-29T09:13:16.863770955Z"
|
||||
generated: "2025-06-30T13:10:01.066923702Z"
|
||||
|
@@ -1,5 +1,5 @@
|
||||
#!BuildTag: %%CHART_PREFIX%%rancher-turtles:%%CHART_MAJOR%%.0.4_up0.20.0
|
||||
#!BuildTag: %%CHART_PREFIX%%rancher-turtles:%%CHART_MAJOR%%.0.4_up0.20.0-%RELEASE%
|
||||
#!BuildTag: %%CHART_PREFIX%%rancher-turtles:%%CHART_MAJOR%%.0.5_up0.21.0
|
||||
#!BuildTag: %%CHART_PREFIX%%rancher-turtles:%%CHART_MAJOR%%.0.5_up0.21.0-%RELEASE%
|
||||
annotations:
|
||||
catalog.cattle.io/certified: rancher
|
||||
catalog.cattle.io/display-name: Rancher Turtles - the Cluster API Extension
|
||||
@@ -12,12 +12,12 @@ annotations:
|
||||
catalog.cattle.io/scope: management
|
||||
catalog.cattle.io/type: cluster-tool
|
||||
apiVersion: v2
|
||||
appVersion: 0.20.0
|
||||
appVersion: 0.21.0
|
||||
dependencies:
|
||||
- condition: cluster-api-operator.enabled
|
||||
name: cluster-api-operator
|
||||
repository: file://./charts/cluster-api-operator
|
||||
version: 0.17.0
|
||||
version: 0.18.1
|
||||
description: Rancher Turtles is an extension to Rancher that brings full Cluster API
|
||||
integration to Rancher.
|
||||
home: https://github.com/rancher/turtles/
|
||||
@@ -29,4 +29,4 @@ keywords:
|
||||
- provisioning
|
||||
name: rancher-turtles
|
||||
type: application
|
||||
version: "%%CHART_MAJOR%%.0.4+up0.20.0"
|
||||
version: "%%CHART_MAJOR%%.0.5+up0.21.0"
|
||||
|
@@ -1,4 +1,4 @@
|
||||
## Changes since v0.20.0-rc.0
|
||||
## Changes since examples/v0.21.0
|
||||
---
|
||||
## :chart_with_upwards_trend: Overview
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
apiVersion: v2
|
||||
appVersion: 0.17.0
|
||||
appVersion: 0.18.1
|
||||
description: Cluster API Operator
|
||||
name: cluster-api-operator
|
||||
type: application
|
||||
version: 0.17.0
|
||||
version: 0.18.1
|
||||
|
@@ -26,8 +26,10 @@ apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
annotations:
|
||||
{{- if $.Values.enableHelmHook }}
|
||||
"helm.sh/hook": "post-install,post-upgrade"
|
||||
"helm.sh/hook-weight": "1"
|
||||
{{- end }}
|
||||
"argocd.argoproj.io/sync-wave": "1"
|
||||
name: {{ $addonNamespace }}
|
||||
---
|
||||
@@ -37,8 +39,10 @@ metadata:
|
||||
name: {{ $addonName }}
|
||||
namespace: {{ $addonNamespace }}
|
||||
annotations:
|
||||
{{- if $.Values.enableHelmHook }}
|
||||
"helm.sh/hook": "post-install,post-upgrade"
|
||||
"helm.sh/hook-weight": "2"
|
||||
{{- end }}
|
||||
"argocd.argoproj.io/sync-wave": "2"
|
||||
{{- if or $addonVersion $.Values.secretName }}
|
||||
spec:
|
||||
|
@@ -26,8 +26,11 @@ apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
annotations:
|
||||
{{- if $.Values.enableHelmHook }}
|
||||
"helm.sh/hook": "post-install,post-upgrade"
|
||||
"helm.sh/hook-weight": "1"
|
||||
{{- end }}
|
||||
"argocd.argoproj.io/sync-wave": "1"
|
||||
name: {{ $bootstrapNamespace }}
|
||||
---
|
||||
apiVersion: operator.cluster.x-k8s.io/v1alpha2
|
||||
@@ -36,8 +39,11 @@ metadata:
|
||||
name: {{ $bootstrapName }}
|
||||
namespace: {{ $bootstrapNamespace }}
|
||||
annotations:
|
||||
{{- if $.Values.enableHelmHook }}
|
||||
"helm.sh/hook": "post-install,post-upgrade"
|
||||
"helm.sh/hook-weight": "2"
|
||||
{{- end }}
|
||||
"argocd.argoproj.io/sync-wave": "2"
|
||||
{{- if or $bootstrapVersion $.Values.configSecret.name }}
|
||||
spec:
|
||||
{{- end}}
|
||||
|
@@ -26,8 +26,11 @@ apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
annotations:
|
||||
{{- if $.Values.enableHelmHook }}
|
||||
"helm.sh/hook": "post-install,post-upgrade"
|
||||
"helm.sh/hook-weight": "1"
|
||||
{{- end }}
|
||||
"argocd.argoproj.io/sync-wave": "1"
|
||||
name: {{ $controlPlaneNamespace }}
|
||||
---
|
||||
apiVersion: operator.cluster.x-k8s.io/v1alpha2
|
||||
@@ -36,8 +39,11 @@ metadata:
|
||||
name: {{ $controlPlaneName }}
|
||||
namespace: {{ $controlPlaneNamespace }}
|
||||
annotations:
|
||||
{{- if $.Values.enableHelmHook }}
|
||||
"helm.sh/hook": "post-install,post-upgrade"
|
||||
"helm.sh/hook-weight": "2"
|
||||
{{- end }}
|
||||
"argocd.argoproj.io/sync-wave": "2"
|
||||
{{- if or $controlPlaneVersion $.Values.configSecret.name $.Values.manager }}
|
||||
spec:
|
||||
{{- end}}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
{{- if or .Values.addon .Values.bootstrap .Values.controlPlane .Values.infrastructure }}
|
||||
{{- if or .Values.addon .Values.bootstrap .Values.controlPlane .Values.infrastructure .Values.ipam }}
|
||||
# Deploy core components if not specified
|
||||
{{- if not .Values.core }}
|
||||
---
|
||||
@@ -6,8 +6,11 @@ apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
annotations:
|
||||
{{- if $.Values.enableHelmHook }}
|
||||
"helm.sh/hook": "post-install,post-upgrade"
|
||||
"helm.sh/hook-weight": "1"
|
||||
{{- end }}
|
||||
"argocd.argoproj.io/sync-wave": "1"
|
||||
name: capi-system
|
||||
---
|
||||
apiVersion: operator.cluster.x-k8s.io/v1alpha2
|
||||
@@ -16,8 +19,11 @@ metadata:
|
||||
name: cluster-api
|
||||
namespace: capi-system
|
||||
annotations:
|
||||
{{- if $.Values.enableHelmHook }}
|
||||
"helm.sh/hook": "post-install,post-upgrade"
|
||||
"helm.sh/hook-weight": "2"
|
||||
{{- end }}
|
||||
"argocd.argoproj.io/sync-wave": "2"
|
||||
{{- with .Values.configSecret }}
|
||||
spec:
|
||||
configSecret:
|
||||
@@ -28,4 +34,3 @@ spec:
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
|
@@ -25,8 +25,11 @@ apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
annotations:
|
||||
{{- if $.Values.enableHelmHook }}
|
||||
"helm.sh/hook": "post-install,post-upgrade"
|
||||
"helm.sh/hook-weight": "1"
|
||||
{{- end }}
|
||||
"argocd.argoproj.io/sync-wave": "1"
|
||||
name: {{ $coreNamespace }}
|
||||
---
|
||||
apiVersion: operator.cluster.x-k8s.io/v1alpha2
|
||||
@@ -35,8 +38,10 @@ metadata:
|
||||
name: {{ $coreName }}
|
||||
namespace: {{ $coreNamespace }}
|
||||
annotations:
|
||||
{{- if $.Values.enableHelmHook }}
|
||||
"helm.sh/hook": "post-install,post-upgrade"
|
||||
"helm.sh/hook-weight": "2"
|
||||
{{- end }}
|
||||
"argocd.argoproj.io/sync-wave": "2"
|
||||
{{- if or $coreVersion $.Values.configSecret.name $.Values.manager }}
|
||||
spec:
|
||||
@@ -45,8 +50,8 @@ spec:
|
||||
version: {{ $coreVersion }}
|
||||
{{- end }}
|
||||
{{- if $.Values.manager }}
|
||||
manager:
|
||||
{{- if and $.Values.manager.featureGates $.Values.manager.featureGates.core }}
|
||||
manager:
|
||||
featureGates:
|
||||
{{- range $key, $value := $.Values.manager.featureGates.core }}
|
||||
{{ $key }}: {{ $value }}
|
||||
|
@@ -7,8 +7,10 @@ apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
annotations:
|
||||
{{- if $.Values.enableHelmHook }}
|
||||
"helm.sh/hook": "post-install,post-upgrade"
|
||||
"helm.sh/hook-weight": "1"
|
||||
{{- end }}
|
||||
"argocd.argoproj.io/sync-wave": "1"
|
||||
name: capi-kubeadm-bootstrap-system
|
||||
---
|
||||
@@ -18,8 +20,10 @@ metadata:
|
||||
name: kubeadm
|
||||
namespace: capi-kubeadm-bootstrap-system
|
||||
annotations:
|
||||
{{- if $.Values.enableHelmHook }}
|
||||
"helm.sh/hook": "post-install,post-upgrade"
|
||||
"helm.sh/hook-weight": "2"
|
||||
{{- end }}
|
||||
"argocd.argoproj.io/sync-wave": "2"
|
||||
{{- with .Values.configSecret }}
|
||||
spec:
|
||||
@@ -37,8 +41,10 @@ apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
annotations:
|
||||
{{- if $.Values.enableHelmHook }}
|
||||
"helm.sh/hook": "post-install,post-upgrade"
|
||||
"helm.sh/hook-weight": "1"
|
||||
{{- end }}
|
||||
"argocd.argoproj.io/sync-wave": "1"
|
||||
name: capi-kubeadm-control-plane-system
|
||||
---
|
||||
@@ -48,14 +54,16 @@ metadata:
|
||||
name: kubeadm
|
||||
namespace: capi-kubeadm-control-plane-system
|
||||
annotations:
|
||||
{{- if $.Values.enableHelmHook }}
|
||||
"helm.sh/hook": "post-install,post-upgrade"
|
||||
"helm.sh/hook-weight": "2"
|
||||
{{- end }}
|
||||
"argocd.argoproj.io/sync-wave": "2"
|
||||
{{- with .Values.configSecret }}
|
||||
spec:
|
||||
{{- if $.Values.manager }}
|
||||
manager:
|
||||
{{- if and $.Values.manager.featureGates $.Values.manager.featureGates.kubeadm }}
|
||||
manager:
|
||||
featureGates:
|
||||
{{- range $key, $value := $.Values.manager.featureGates.kubeadm }}
|
||||
{{ $key }}: {{ $value }}
|
||||
|
@@ -26,8 +26,10 @@ apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
annotations:
|
||||
{{- if $.Values.enableHelmHook }}
|
||||
"helm.sh/hook": "post-install,post-upgrade"
|
||||
"helm.sh/hook-weight": "1"
|
||||
{{- end }}
|
||||
"argocd.argoproj.io/sync-wave": "1"
|
||||
name: {{ $infrastructureNamespace }}
|
||||
---
|
||||
@@ -37,8 +39,10 @@ metadata:
|
||||
name: {{ $infrastructureName }}
|
||||
namespace: {{ $infrastructureNamespace }}
|
||||
annotations:
|
||||
{{- if $.Values.enableHelmHook }}
|
||||
"helm.sh/hook": "post-install,post-upgrade"
|
||||
"helm.sh/hook-weight": "2"
|
||||
{{- end }}
|
||||
"argocd.argoproj.io/sync-wave": "2"
|
||||
{{- if or $infrastructureVersion $.Values.configSecret.name $.Values.manager $.Values.additionalDeployments }}
|
||||
spec:
|
||||
@@ -47,8 +51,8 @@ spec:
|
||||
version: {{ $infrastructureVersion }}
|
||||
{{- end }}
|
||||
{{- if $.Values.manager }}
|
||||
manager:
|
||||
{{- if and (kindIs "map" $.Values.manager.featureGates) (hasKey $.Values.manager.featureGates $infrastructureName) }}
|
||||
manager:
|
||||
{{- range $key, $value := $.Values.manager.featureGates }}
|
||||
{{- if eq $key $infrastructureName }}
|
||||
featureGates:
|
||||
|
@@ -26,8 +26,10 @@ apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
annotations:
|
||||
{{- if $.Values.enableHelmHook }}
|
||||
"helm.sh/hook": "post-install,post-upgrade"
|
||||
"helm.sh/hook-weight": "1"
|
||||
{{- end }}
|
||||
"argocd.argoproj.io/sync-wave": "1"
|
||||
name: {{ $ipamNamespace }}
|
||||
---
|
||||
@@ -37,8 +39,10 @@ metadata:
|
||||
name: {{ $ipamName }}
|
||||
namespace: {{ $ipamNamespace }}
|
||||
annotations:
|
||||
{{- if $.Values.enableHelmHook }}
|
||||
"helm.sh/hook": "post-install,post-upgrade"
|
||||
"helm.sh/hook-weight": "2"
|
||||
{{- end }}
|
||||
"argocd.argoproj.io/sync-wave": "2"
|
||||
{{- if or $ipamVersion $.Values.configSecret.name $.Values.manager $.Values.additionalDeployments }}
|
||||
spec:
|
||||
@@ -47,8 +51,8 @@ spec:
|
||||
version: {{ $ipamVersion }}
|
||||
{{- end }}
|
||||
{{- if $.Values.manager }}
|
||||
manager:
|
||||
{{- if and (kindIs "map" $.Values.manager.featureGates) (hasKey $.Values.manager.featureGates $ipamName) }}
|
||||
manager:
|
||||
{{- range $key, $value := $.Values.manager.featureGates }}
|
||||
{{- if eq $key $ipamName }}
|
||||
featureGates:
|
||||
|
@@ -21,7 +21,7 @@ leaderElection:
|
||||
image:
|
||||
manager:
|
||||
repository: registry.k8s.io/capi-operator/cluster-api-operator
|
||||
tag: v0.17.0
|
||||
tag: v0.18.1
|
||||
pullPolicy: IfNotPresent
|
||||
env:
|
||||
manager: []
|
||||
@@ -69,3 +69,4 @@ volumeMounts:
|
||||
- mountPath: /tmp/k8s-webhook-server/serving-certs
|
||||
name: cert
|
||||
readOnly: true
|
||||
enableHelmHook: true
|
||||
|
@@ -36,7 +36,7 @@ questions:
|
||||
label: Enable Agent TLS Mode
|
||||
group: "Rancher Turtles Features Settings"
|
||||
- variable: rancherTurtles.kubectlImage
|
||||
default: "registry.suse.com/edge/3.2/kubectl:1.32.4"
|
||||
default: "registry.suse.com/edge/3.3/kubectl:1.32.4"
|
||||
description: "Specify the image to use when running kubectl in jobs."
|
||||
type: string
|
||||
label: Kubectl Image
|
||||
|
@@ -9,8 +9,8 @@ turtlesUI:
|
||||
rancherTurtles:
|
||||
# image: registry.rancher.com/rancher/rancher/turtles
|
||||
image: registry.rancher.com/rancher/rancher/turtles
|
||||
# imageVersion: v0.20.0
|
||||
imageVersion: v0.20.0
|
||||
# imageVersion: v0.21.0
|
||||
imageVersion: v0.21.0
|
||||
# imagePullPolicy: IfNotPresent
|
||||
imagePullPolicy: IfNotPresent
|
||||
# namespace: Select namespace for Turtles to run.
|
||||
@@ -31,8 +31,8 @@ rancherTurtles:
|
||||
enabled: false
|
||||
# image: registry.rancher.com/rancher/rancher/turtles
|
||||
image: registry.rancher.com/rancher/rancher/turtles
|
||||
# imageVersion: v0.20.0
|
||||
imageVersion: v0.20.0
|
||||
# imageVersion: v0.21.0
|
||||
imageVersion: v0.21.0
|
||||
# imagePullPolicy: IfNotPresent
|
||||
imagePullPolicy: IfNotPresent
|
||||
# etcdBackupRestore: Alpha feature. Manages etcd backup/restore.
|
||||
@@ -49,8 +49,8 @@ rancherTurtles:
|
||||
enabled: false
|
||||
# image: registry.rancher.com/rancher/rancher/turtles
|
||||
image: registry.rancher.com/rancher/rancher/turtles
|
||||
# imageVersion: v0.20.0
|
||||
imageVersion: v0.20.0
|
||||
# imageVersion: v0.21.0
|
||||
imageVersion: v0.21.0
|
||||
# imagePullPolicy: IfNotPresent
|
||||
imagePullPolicy: IfNotPresent
|
||||
|
||||
@@ -127,7 +127,7 @@ cluster-api-operator:
|
||||
# enabled: Turn on or off.
|
||||
enabled: true
|
||||
# version: RKE2 version.
|
||||
version: "v0.16.1"
|
||||
version: "v0.18.0"
|
||||
# bootstrap: RKE2 bootstrap provider.
|
||||
bootstrap:
|
||||
# namespace: Bootstrap namespace.
|
||||
@@ -154,10 +154,10 @@ cluster-api-operator:
|
||||
selector: ""
|
||||
metal3:
|
||||
enabled: true
|
||||
version: "v1.9.3"
|
||||
version: "v1.9.4"
|
||||
infrastructure:
|
||||
namespace: capm3-system
|
||||
imageUrl: "registry.suse.com/rancher/cluster-api-provider-metal3:v1.9.3"
|
||||
imageUrl: "registry.suse.com/rancher/cluster-api-provider-metal3:v1.9.4"
|
||||
fetchConfig:
|
||||
url: ""
|
||||
selector: ""
|
||||
|
@@ -1,4 +1,4 @@
|
||||
#!BuildTag: %%IMG_PREFIX%%release-manifest:3.4.0
|
||||
#!BuildTag: %%IMG_PREFIX%%release-manifest:3.3.2
|
||||
ARG SLE_VERSION
|
||||
FROM registry.suse.com/bci/bci-micro:$SLE_VERSION
|
||||
|
||||
@@ -7,11 +7,11 @@ FROM registry.suse.com/bci/bci-micro:$SLE_VERSION
|
||||
LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)"
|
||||
LABEL org.opencontainers.image.title="SUSE Edge Release Manifest"
|
||||
LABEL org.opencontainers.image.description="Release Manifest containing information about a specific SUSE Edge release"
|
||||
LABEL org.opencontainers.image.version="3.4.0"
|
||||
LABEL org.opencontainers.image.version="3.3.2"
|
||||
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%%release-manifest:3.4.0"
|
||||
LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%release-manifest:3.3.2"
|
||||
LABEL org.openbuildservice.disturl="%DISTURL%"
|
||||
LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%"
|
||||
LABEL com.suse.eula="SUSE Combined EULA February 2024"
|
||||
|
@@ -1,95 +1,95 @@
|
||||
apiVersion: lifecycle.suse.com/v1alpha1
|
||||
kind: ReleaseManifest
|
||||
metadata:
|
||||
name: release-manifest-3-4-0
|
||||
name: release-manifest-3-3-2
|
||||
spec:
|
||||
releaseVersion: 3.4.0
|
||||
releaseVersion: 3.3.2
|
||||
components:
|
||||
kubernetes:
|
||||
k3s:
|
||||
version: v1.32.4+k3s1
|
||||
version: v1.32.5+k3s1
|
||||
coreComponents:
|
||||
- name: traefik-crd
|
||||
version: 34.2.1+up34.2.0
|
||||
type: HelmChart
|
||||
- name: traefik
|
||||
version: 34.2.1+up34.2.0
|
||||
type: HelmChart
|
||||
- name: local-path-provisioner
|
||||
containers:
|
||||
- name: traefik-crd
|
||||
version: 34.2.1+up34.2.0
|
||||
type: HelmChart
|
||||
- name: traefik
|
||||
version: 34.2.1+up34.2.0
|
||||
type: HelmChart
|
||||
- name: local-path-provisioner
|
||||
image: rancher/local-path-provisioner:v0.0.31
|
||||
type: Deployment
|
||||
- name: coredns
|
||||
containers:
|
||||
containers:
|
||||
- name: local-path-provisioner
|
||||
image: rancher/local-path-provisioner:v0.0.31
|
||||
type: Deployment
|
||||
- name: coredns
|
||||
image: rancher/mirrored-coredns-coredns:1.12.1
|
||||
type: Deployment
|
||||
- name: metrics-server
|
||||
containers:
|
||||
containers:
|
||||
- name: coredns
|
||||
image: rancher/mirrored-coredns-coredns:1.12.1
|
||||
type: Deployment
|
||||
- name: metrics-server
|
||||
image: rancher/mirrored-metrics-server:v0.7.2
|
||||
type: Deployment
|
||||
containers:
|
||||
- name: metrics-server
|
||||
image: rancher/mirrored-metrics-server:v0.7.2
|
||||
type: Deployment
|
||||
rke2:
|
||||
version: v1.32.4+rke2r1
|
||||
version: v1.32.5+rke2r1
|
||||
coreComponents:
|
||||
- name: rke2-cilium
|
||||
version: 1.17.300
|
||||
type: HelmChart
|
||||
- name: rke2-canal
|
||||
version: v3.29.3-build2025040801
|
||||
type: HelmChart
|
||||
- name: rke2-calico-crd
|
||||
version: v3.29.101
|
||||
type: HelmChart
|
||||
- name: rke2-calico
|
||||
version: v3.29.300
|
||||
type: HelmChart
|
||||
- name: rke2-coredns
|
||||
version: 1.39.201
|
||||
type: HelmChart
|
||||
- name: rke2-ingress-nginx
|
||||
version: 4.12.101
|
||||
type: HelmChart
|
||||
- name: rke2-metrics-server
|
||||
version: 3.12.200
|
||||
type: HelmChart
|
||||
- name: rancher-vsphere-csi
|
||||
version: 3.3.1-rancher900
|
||||
type: HelmChart
|
||||
- name: rancher-vsphere-cpi
|
||||
version: 1.10.000
|
||||
type: HelmChart
|
||||
- name: harvester-cloud-provider
|
||||
version: 0.2.900
|
||||
type: HelmChart
|
||||
- name: harvester-csi-driver
|
||||
version: 0.1.2300
|
||||
type: HelmChart
|
||||
- name: rke2-snapshot-controller-crd
|
||||
version: 4.0.002
|
||||
type: HelmChart
|
||||
- name: rke2-snapshot-controller
|
||||
version: 4.0.002
|
||||
type: HelmChart
|
||||
# Deprecated this empty chart addon can be removed in v1.34
|
||||
- name: rke2-snapshot-validation-webhook
|
||||
version: 0.0.0
|
||||
type: HelmChart
|
||||
- name: rke2-cilium
|
||||
version: 1.17.301
|
||||
type: HelmChart
|
||||
- name: rke2-canal
|
||||
version: v3.30.0-build2025051500
|
||||
type: HelmChart
|
||||
- name: rke2-calico-crd
|
||||
version: v3.30.001
|
||||
type: HelmChart
|
||||
- name: rke2-calico
|
||||
version: v3.30.001
|
||||
type: HelmChart
|
||||
- name: rke2-coredns
|
||||
version: 1.42.000
|
||||
type: HelmChart
|
||||
- name: rke2-ingress-nginx
|
||||
version: 4.12.103
|
||||
type: HelmChart
|
||||
- name: rke2-metrics-server
|
||||
version: 3.12.201
|
||||
type: HelmChart
|
||||
- name: rancher-vsphere-csi
|
||||
version: 3.3.1-rancher900
|
||||
type: HelmChart
|
||||
- name: rancher-vsphere-cpi
|
||||
version: 1.10.000
|
||||
type: HelmChart
|
||||
- name: harvester-cloud-provider
|
||||
version: 0.2.1000
|
||||
type: HelmChart
|
||||
- name: harvester-csi-driver
|
||||
version: 0.1.2300
|
||||
type: HelmChart
|
||||
- name: rke2-snapshot-controller-crd
|
||||
version: 4.0.002
|
||||
type: HelmChart
|
||||
- name: rke2-snapshot-controller
|
||||
version: 4.0.002
|
||||
type: HelmChart
|
||||
# Deprecated this empty chart addon can be removed in v1.34
|
||||
- name: rke2-snapshot-validation-webhook
|
||||
version: 0.0.0
|
||||
type: HelmChart
|
||||
operatingSystem:
|
||||
version: "6.1"
|
||||
zypperID: "SL-Micro"
|
||||
cpeScheme: "cpe:/o:suse:sl-micro:6.1"
|
||||
prettyName: "SUSE Linux Micro 6.1"
|
||||
version: '6.1'
|
||||
zypperID: SL-Micro
|
||||
cpeScheme: cpe:/o:suse:sl-micro:6.1
|
||||
prettyName: SUSE Linux Micro 6.1
|
||||
supportedArchs:
|
||||
- "x86_64"
|
||||
- "aarch64"
|
||||
- x86_64
|
||||
- aarch64
|
||||
workloads:
|
||||
helm:
|
||||
- prettyName: Rancher
|
||||
releaseName: rancher
|
||||
chart: rancher
|
||||
version: 2.11.2
|
||||
version: 2.11.3
|
||||
repository: https://charts.rancher.com/server-charts/prime
|
||||
values:
|
||||
postDelete:
|
||||
@@ -97,38 +97,38 @@ spec:
|
||||
- prettyName: Longhorn
|
||||
releaseName: longhorn
|
||||
chart: longhorn
|
||||
version: 106.2.0+up1.8.1
|
||||
version: 106.2.1+up1.8.2
|
||||
repository: https://charts.rancher.io
|
||||
dependencyCharts:
|
||||
- releaseName: longhorn-crd
|
||||
chart: longhorn-crd
|
||||
version: 106.2.0+up1.8.1
|
||||
version: 106.2.1+up1.8.2
|
||||
repository: https://charts.rancher.io
|
||||
- prettyName: MetalLB
|
||||
releaseName: metallb
|
||||
chart: "%%CHART_REPO%%/%%CHART_PREFIX%%metallb"
|
||||
version: "%%CHART_MAJOR%%.0.0+up0.14.9"
|
||||
chart: '%%CHART_REPO%%/%%CHART_PREFIX%%metallb'
|
||||
version: '%%CHART_MAJOR%%.0.0+up0.14.9'
|
||||
- prettyName: CDI
|
||||
releaseName: cdi
|
||||
chart: "%%CHART_REPO%%/%%CHART_PREFIX%%cdi"
|
||||
version: "%%CHART_MAJOR%%.0.0+up0.5.0"
|
||||
chart: '%%CHART_REPO%%/%%CHART_PREFIX%%cdi'
|
||||
version: '%%CHART_MAJOR%%.0.0+up0.5.0'
|
||||
- prettyName: KubeVirt
|
||||
releaseName: kubevirt
|
||||
chart: "%%CHART_REPO%%/%%CHART_PREFIX%%kubevirt"
|
||||
version: "%%CHART_MAJOR%%.0.0+up0.5.0"
|
||||
chart: '%%CHART_REPO%%/%%CHART_PREFIX%%kubevirt'
|
||||
version: '%%CHART_MAJOR%%.0.0+up0.5.0'
|
||||
addonCharts:
|
||||
- releaseName: kubevirt-dashboard-extension
|
||||
chart: "%%CHART_REPO%%/%%CHART_PREFIX%%kubevirt-dashboard-extension"
|
||||
version: "%%CHART_MAJOR%%.0.2+up1.3.2"
|
||||
chart: '%%CHART_REPO%%/%%CHART_PREFIX%%kubevirt-dashboard-extension'
|
||||
version: '%%CHART_MAJOR%%.0.2+up1.3.2'
|
||||
- prettyName: NeuVector
|
||||
releaseName: neuvector
|
||||
chart: neuvector
|
||||
version: 106.0.1+up2.8.6
|
||||
version: 106.0.2+up2.8.7
|
||||
repository: https://charts.rancher.io
|
||||
dependencyCharts:
|
||||
- releaseName: neuvector-crd
|
||||
chart: neuvector-crd
|
||||
version: 106.0.1+up2.8.6
|
||||
version: 106.0.2+up2.8.7
|
||||
repository: https://charts.rancher.io
|
||||
addonCharts:
|
||||
- releaseName: neuvector-ui-ext
|
||||
@@ -137,8 +137,8 @@ spec:
|
||||
version: 2.1.3
|
||||
- prettyName: EndpointCopierOperator
|
||||
releaseName: endpoint-copier-operator
|
||||
chart: "%%CHART_REPO%%/%%CHART_PREFIX%%endpoint-copier-operator"
|
||||
version: "%%CHART_MAJOR%%.0.1+up0.3.0"
|
||||
chart: '%%CHART_REPO%%/%%CHART_PREFIX%%endpoint-copier-operator'
|
||||
version: '%%CHART_MAJOR%%.0.0+up0.2.1'
|
||||
- prettyName: Elemental
|
||||
releaseName: elemental-operator
|
||||
chart: oci://registry.suse.com/rancher/elemental-operator-chart
|
||||
@@ -154,25 +154,29 @@ spec:
|
||||
version: 3.0.0
|
||||
- prettyName: SRIOV
|
||||
releaseName: sriov-network-operator
|
||||
chart: "%%CHART_REPO%%/%%CHART_PREFIX%%sriov-network-operator"
|
||||
version: "%%CHART_MAJOR%%.0.2+up1.5.0"
|
||||
chart: '%%CHART_REPO%%/%%CHART_PREFIX%%sriov-network-operator'
|
||||
version: '%%CHART_MAJOR%%.0.2+up1.5.0'
|
||||
dependencyCharts:
|
||||
- releaseName: sriov-crd
|
||||
chart: "%%CHART_REPO%%/%%CHART_PREFIX%%sriov-crd"
|
||||
version: "%%CHART_MAJOR%%.0.2+up1.5.0"
|
||||
chart: '%%CHART_REPO%%/%%CHART_PREFIX%%sriov-crd'
|
||||
version: '%%CHART_MAJOR%%.0.2+up1.5.0'
|
||||
- prettyName: Akri
|
||||
releaseName: akri
|
||||
chart: "%%CHART_REPO%%/%%CHART_PREFIX%%akri"
|
||||
version: "%%CHART_MAJOR%%.0.0+up0.12.20"
|
||||
chart: '%%CHART_REPO%%/%%CHART_PREFIX%%akri'
|
||||
version: '%%CHART_MAJOR%%.0.0+up0.12.20'
|
||||
addonCharts:
|
||||
- releaseName: akri-dashboard-extension
|
||||
chart: "%%CHART_REPO%%/%%CHART_PREFIX%%akri-dashboard-extension"
|
||||
version: "%%CHART_MAJOR%%.0.2+up1.3.1"
|
||||
chart: '%%CHART_REPO%%/%%CHART_PREFIX%%akri-dashboard-extension'
|
||||
version: '%%CHART_MAJOR%%.0.2+up1.3.1'
|
||||
- prettyName: Metal3
|
||||
releaseName: metal3
|
||||
chart: "%%CHART_REPO%%/%%CHART_PREFIX%%metal3"
|
||||
version: "%%CHART_MAJOR%%.0.8+up0.11.6"
|
||||
chart: '%%CHART_REPO%%/%%CHART_PREFIX%%metal3'
|
||||
version: '%%CHART_MAJOR%%.0.7+up0.11.5'
|
||||
- prettyName: RancherTurtles
|
||||
releaseName: rancher-turtles
|
||||
chart: "%%CHART_REPO%%/%%CHART_PREFIX%%rancher-turtles"
|
||||
version: "%%CHART_MAJOR%%.0.4+up0.20.0"
|
||||
chart: '%%CHART_REPO%%/%%CHART_PREFIX%%rancher-turtles'
|
||||
version: '%%CHART_MAJOR%%.0.5+up0.21.0'
|
||||
- prettyName: RancherTurtlesAirgapResources
|
||||
releaseName: rancher-turtles-airgap-resources
|
||||
chart: '%%CHART_REPO%%/%%CHART_PREFIX%%rancher-turtles-airgap-resources'
|
||||
version: '%%CHART_MAJOR%%.0.5+up0.21.0'
|
||||
|
Reference in New Issue
Block a user