Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
e1ffa96
Install OpenStack Resource Controller in CI setup
m-bull May 21, 2025
18b75f5
Add ORC requirement to README.md
m-bull May 21, 2025
dd81775
Bump CAPI and CAPO
m-bull May 28, 2025
98c63d4
Allow expose networkMTU
m-bull Jun 23, 2025
9bd02c6
Update resources for v1beta2
m-bull Sep 23, 2025
17a5e21
Get ready condition name dynamically
m-bull Sep 24, 2025
d412734
Refactor clusters API version check
m-bull Sep 25, 2025
98d6212
Add --force-conflicts to ORC install if it fails
m-bull May 28, 2025
ec38838
Fix registry mirrors config
m-bull Oct 2, 2025
47254b4
Bump to latest compatible versions of CAPI, CAPO and ORC
m-bull Jan 14, 2026
84b7cf4
Add option to bump sonobuoy log-level in CI
m-bull Jan 15, 2026
e922f1f
Add a helper to convert human time to seconds
m-bull Jan 15, 2026
7df48d0
Bump CAPI/CAPO for v1beta2 support
m-bull Feb 4, 2026
c5fb6fe
Wait for nodes to be schduleable
m-bull Feb 4, 2026
c6c3422
Update machinedeployment ready condition
m-bull Feb 5, 2026
5b481a5
Wait for machines to be uptodate and ready
m-bull Feb 5, 2026
9bf7a14
Fix deprecation warning from cert-manager
m-bull Feb 5, 2026
df55298
Wait for RollingOut=false
m-bull Feb 9, 2026
15ea961
Show node status in upgrade-and-test action
m-bull Feb 10, 2026
d3030b9
Recreate snapshots after merge from main
m-bull Feb 19, 2026
7eb0e46
Compatibility with old-style values.yaml
m-bull Feb 24, 2026
4684f5e
Backwards compatible machineHealthChecks
m-bull Feb 24, 2026
a4ea13a
Add CI to validate against latest tag values
m-bull Feb 25, 2026
5e9ef8e
Backwards compatible extraArgs/kubeletExtraArgs
m-bull Feb 25, 2026
a24b22f
Fix chart linting tests
m-bull Feb 25, 2026
296cfe8
Bump CAPO to 0.41.1
m-bull Mar 3, 2026
e8953ce
Fix deletePolicy helper
m-bull Mar 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion .github/actions/setup/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ runs:
echo "cluster-api-provider-openstack=$(jq -r '.["cluster-api-provider-openstack"]' "$DEPENDENCIES_PATH")" >> $GITHUB_OUTPUT
echo "cert-manager=$(jq -r '.["cert-manager"]' "$DEPENDENCIES_PATH")" >> $GITHUB_OUTPUT
echo "helm=$(jq -r '.["helm"]' "$DEPENDENCIES_PATH")" >> $GITHUB_OUTPUT
echo "openstack-resource-controller=$(jq -r '.["openstack-resource-controller"]' "$DEPENDENCIES_PATH")" >> $GITHUB_OUTPUT
echo "sonobuoy=$(jq -r '.["sonobuoy"]' "$DEPENDENCIES_PATH")" >> $GITHUB_OUTPUT
env:
DEPENDENCIES_PATH: ${{ inputs.dependencies-path }}
Expand Down Expand Up @@ -58,7 +59,7 @@ runs:
--namespace cert-manager \
--create-namespace \
--install \
--set installCRDs=true \
--set crds.enabled=true \
--wait \
--timeout 10m

Expand Down Expand Up @@ -93,6 +94,16 @@ runs:
# unreleased tags kubernetes-sigs/cluster-api#7889
GOPROXY: off

- name: Install openstack-resource-controller
shell: bash
run: |
ORC_URL=https://github.com/k-orc/openstack-resource-controller/releases/download/${ORC_VERSION}/install.yaml
if ! kubectl apply --server-side -f ${ORC_URL}; then
kubectl apply --server-side --force-conflicts -f ${ORC_URL}
fi
env:
ORC_VERSION: ${{ steps.deps.outputs.openstack-resource-controller }}

- name: Install Cluster API add-on provider
shell: bash
run: |-
Expand Down
58 changes: 55 additions & 3 deletions .github/actions/upgrade-and-test/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,12 @@ inputs:
One of certified-conformance, conformance-lite, non-disruptive-conformance, quick.
required: true
default: quick
sonobuoy-level:
description: |
The log level for the Sonobuoy run.
One of panic, fatal, error, warn, info, debug, trace.
required: true
default: info
sonobuoy-upload:
description: Specify "yes" to upload the Sonobuoy run as an artifact
required: true
Expand All @@ -71,6 +77,22 @@ runs:
--set kubernetesVersion=${{ inputs.kubernetes-version }} \
--set machineImageId=${{ inputs.image-id }}

- name: Check for cluster deployment ready condition name
id: check-ready-condition
shell: bash
run: |-
cluster_api_version=$(kubectl api-resources \
--api-group=cluster.x-k8s.io \
--no-headers=true |\
grep ^clusters |\
awk '{print $3}')

if [[ "$cluster_api_version" =~ v1beta1$ ]]; then
echo "cluster-ready-condition-name=ready" >> $GITHUB_OUTPUT
else
echo "cluster-ready-condition-name=available" >> $GITHUB_OUTPUT
fi

# Wait for any upgrade to start before checking if it is complete
# This is to make sure the controller has actioned the update before
# progressing to wait for ready
Expand All @@ -82,15 +104,15 @@ runs:
shell: bash
run: |-
kubectl wait clusters/${{ inputs.name }} \
--for=condition=ready=false \
--for=condition=${{ steps.check-ready-condition.outputs.cluster-ready-condition-name }}=false \
--timeout 2m
continue-on-error: true

- name: Wait for cluster ready
shell: bash
run: |-
kubectl wait clusters/${{ inputs.name }} \
--for=condition=ready \
--for=condition=${{ steps.check-ready-condition.outputs.cluster-ready-condition-name }} \
--timeout 30m

- name: Wait for machine deployments to be running
Expand All @@ -101,6 +123,30 @@ runs:
--for=jsonpath='{.status.phase}'=Running \
--timeout 30m

- name: Wait for control-plane and worker machines to be up-to-date and ready (v1beta2)
shell: bash
run: |-
kubectl wait clusters/${{ inputs.name }} \
--for=condition=RollingOut=false \
--timeout 30m \
&& \
kubectl wait clusters/${{ inputs.name }} \
--for=condition=ControlPlaneMachinesUpToDate \
--timeout 30m \
&& \
kubectl wait clusters/${{ inputs.name }} \
--for=condition=ControlPlaneMachinesReady \
--timeout 30m \
&& \
kubectl wait clusters/${{ inputs.name }} \
--for=condition=WorkerMachinesUpToDate \
--timeout 30m \
&& \
kubectl wait clusters/${{ inputs.name }} \
--for=condition=WorkerMachinesReady \
--timeout 30m
if: ${{ steps.check-ready-condition.outputs.cluster-ready-condition-name == 'available' }}

- name: Wait for addons to deploy
shell: bash
run: |-
Expand Down Expand Up @@ -138,9 +184,15 @@ runs:
KUBECONFIG: ./kubeconfig
if: "${{ inputs.skip-workload-status != 'yes' }}"

- name: Get cluster nodes
shell: bash
run: kubectl get nodes -o wide
env:
KUBECONFIG: ./kubeconfig

- name: Run sonobuoy
shell: bash
run: sonobuoy run --mode ${{ inputs.sonobuoy-mode }} --wait
run: sonobuoy run --level ${{ inputs.sonobuoy-level }} --mode ${{ inputs.sonobuoy-mode }} --wait
env:
KUBECONFIG: ./kubeconfig

Expand Down
31 changes: 29 additions & 2 deletions .github/workflows/lint.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:
--all \
--validate-maintainers=false

- name: Run template validation
- name: Run template validation (current values)
run: |-
helm template foo charts/openstack-cluster \
-f charts/openstack-cluster/tests/values_base.yaml \
Expand All @@ -45,5 +45,32 @@ jobs:

# NOTE: Run the following command locally to generate updated snapshots:
# docker run -i --rm -v $(pwd):/apps helmunittest/helm-unittest charts/openstack-cluster -u
- name: Run manifest snapshot test
- name: Run manifest snapshot test (current values)
run: docker run -i --rm -v $(pwd):/apps helmunittest/helm-unittest charts/openstack-cluster
- name: Get latest tag
id: latest-tag
run: |
set -eo pipefail
TAG_NAME="$(curl -fsSL "$GITHUB_API_URL/repos/$GITHUB_REPOSITORY/releases/latest" | jq -r '.tag_name')"
echo "tag-name=${TAG_NAME}" >> "$GITHUB_OUTPUT"
- name: Checkout default values from latest tag
run: |
git checkout $LATEST_TAG -- charts/openstack-cluster/values.yaml
env:
LATEST_TAG: ${{ steps.latest-tag.outputs.tag-name }}

- name: Run template validation (values from latest tag)
run: |-
helm template foo charts/openstack-cluster \
-f charts/openstack-cluster/tests/values_base.yaml \
-f charts/openstack-cluster/tests/values_full.yaml \
| docker run -i --rm ghcr.io/yannh/kubeconform:latest \
--strict --summary \
--schema-location default \
--schema-location 'https://raw.githubusercontent.com/datreeio/CRDs-catalog/main/{{.Group}}/{{.ResourceKind}}_{{.ResourceAPIVersion}}.json' \
--skip HelmRelease,Manifests,OpenStackCluster,OpenStackMachineTemplate

# NOTE: Run the following command locally to generate updated snapshots:
# docker run -i --rm -v $(pwd):/apps helmunittest/helm-unittest charts/openstack-cluster -u
- name: Run manifest snapshot test (values from latest tag)
run: docker run -i --rm -v $(pwd):/apps helmunittest/helm-unittest charts/openstack-cluster
4 changes: 4 additions & 0 deletions .github/workflows/update-dependencies.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,10 @@ jobs:
- key: helm
type: github
repo: helm/helm

- key: openstack-resource-controller
type: github
repo: k-orc/openstack-resource-controller

- key: sonobuoy
type: github
Expand Down
4 changes: 2 additions & 2 deletions charts/openstack-cluster/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ templates for more details.

First, you must set up a
[Cluster API management cluster](https://cluster-api.sigs.k8s.io/user/concepts.html#management-cluster)
with the [OpenStack Infrastructure Provider](https://github.com/kubernetes-sigs/cluster-api-provider-openstack)
installed.
with both the [OpenStack Infrastructure Provider](https://github.com/kubernetes-sigs/cluster-api-provider-openstack)
and [OpenStack Resource Controller](https://github.com/k-orc/openstack-resource-controller) installed.

Addons are managed by the
[Cluster API Addon Provider](https://github.com/azimuth-cloud/cluster-api-addon-provider),
Expand Down
Loading
Loading