Skip to content

Commit 4e37ed7

Browse files
committed
✨ feat(airgap): add image preloading
1 parent 17e0a7f commit 4e37ed7

17 files changed

+149
-2207
lines changed

.github/workflows/unit-func-e2e-test.yaml

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ jobs:
4040
runs-on: [self-hosted, linux]
4141
needs: [unit_test]
4242
steps:
43+
- name: 🩹 Safe config for 💩 DNS
44+
run: |
45+
sed 's/options /options use-vc single-request attempts:5 /' < /etc/resolv.conf > /etc/resolv.conf.new
46+
cat /etc/resolv.conf.new > /etc/resolv.conf
4347
- name: ⬇️ Checkout repository
4448
uses: actions/checkout@v4
4549
- name: ⬇️ Install kubectl
@@ -54,7 +58,8 @@ jobs:
5458
kustomize-version: v4.5.7
5559
- name: 🔎 Check IP
5660
id: ip
57-
run: echo "ip=`curl -s https://api.ipify.org`" | tee $GITHUB_OUTPUT
61+
run: |
62+
echo "ip=`curl -s https://api.ipify.org`" | tee $GITHUB_OUTPUT
5863
- name: 🔐 Set ak/sk name based on runner region
5964
run: .github/scripts/runneraksk.sh
6065
- name: 🧹 Frieza
@@ -89,10 +94,18 @@ jobs:
8994
sudo apt install -y docker-buildx-plugin
9095
make docker-buildx
9196
make docker-push
92-
docker image prune -a -f
9397
env:
9498
IMG: ${{ vars.REGISTRY }}/outscale/cluster-api-outscale-controllers:${{ github.sha }}
9599
DOCKER_BUILDKIT: 1
100+
- name: 🔎 Preloader snapshot
101+
id: preloader
102+
uses: outscale/k8s-image-preloader/github_actions/preloader_snapshot@main
103+
with:
104+
KUBECONFIG: ${{ steps.management.outputs.KUBECONFIG }}
105+
OSC_ACCESS_KEY: ${{ secrets[env.OSC_ACCESS_KEY_NAME] }}
106+
OSC_SECRET_KEY: ${{ secrets[env.OSC_SECRET_KEY_NAME] }}
107+
OSC_REGION: ${{ env.OSC_REGION }}
108+
CSI: true
96109
- name: 🔐 Create CAPOSC ns and credentials
97110
run: make credential
98111
shell: bash
@@ -114,10 +127,11 @@ jobs:
114127
KUBECONFIG: "${{ github.workspace }}/${{ steps.management.outputs.KUBECONFIG }}"
115128
CCM_OSC_ACCESS_KEY: ${{ secrets[env.OSC_ACCESS_KEY_NAME] }}
116129
CCM_OSC_SECRET_KEY: ${{ secrets[env.OSC_SECRET_KEY_NAME] }}
117-
CCM_OSC_REGION: $${{ env.OSC_REGION }}
130+
CCM_OSC_REGION: ${{ env.OSC_REGION }}
118131
IMG: ${{ vars.REGISTRY }}/outscale/cluster-api-outscale-controllers:${{ github.sha }}
119132
IMG_UPGRADE_FROM: ${{ vars.IMG_UPGRADE_FROM }}
120133
IMG_UPGRADE_TO: ${{ vars.IMG_UPGRADE_TO }}
134+
PRELOAD_SNAPSHOT_ID: ${{ steps.preloader.outputs.SNAPSHOT_ID }}
121135
- name: 📝 Get CAPOSC state/logs
122136
run: |
123137
echo "**** pod state"

api/v1beta1/types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -523,7 +523,7 @@ type OscImage struct {
523523
type OscVolume struct {
524524
// The volume name.
525525
Name string `json:"name,omitempty"`
526-
// The volume device (/dev/sdX)
526+
// The volume device (/dev/xvdX)
527527
// +kubebuilder:validation:Required
528528
Device string `json:"device"`
529529
// The volume iops (io1 volumes only)

capm.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ kind: CustomResourceDefinition
1010
metadata:
1111
annotations:
1212
cert-manager.io/inject-ca-from: cluster-api-provider-outscale-system/cluster-api-provider-outscale-serving-cert
13-
controller-gen.kubebuilder.io/version: v0.19.1-0.20250924093817-1d67470bef32
13+
controller-gen.kubebuilder.io/version: v0.19.1-0.20251013055054-8ef4174c3d65
1414
labels:
1515
cluster.x-k8s.io/v1alpha3: v1alpha3
1616
cluster.x-k8s.io/v1beta1: v1beta1
@@ -879,7 +879,7 @@ kind: CustomResourceDefinition
879879
metadata:
880880
annotations:
881881
cert-manager.io/inject-ca-from: cluster-api-provider-outscale-system/cluster-api-provider-outscale-serving-cert
882-
controller-gen.kubebuilder.io/version: v0.19.1-0.20250924093817-1d67470bef32
882+
controller-gen.kubebuilder.io/version: v0.19.1-0.20251013055054-8ef4174c3d65
883883
labels:
884884
cluster.x-k8s.io/v1alpha3: v1alpha3
885885
cluster.x-k8s.io/v1beta1: v1beta1
@@ -1588,7 +1588,7 @@ kind: CustomResourceDefinition
15881588
metadata:
15891589
annotations:
15901590
cert-manager.io/inject-ca-from: cluster-api-provider-outscale-system/cluster-api-provider-outscale-serving-cert
1591-
controller-gen.kubebuilder.io/version: v0.19.1-0.20250924093817-1d67470bef32
1591+
controller-gen.kubebuilder.io/version: v0.19.1-0.20251013055054-8ef4174c3d65
15921592
labels:
15931593
cluster.x-k8s.io/v1alpha3: v1alpha3
15941594
cluster.x-k8s.io/v1beta1: v1beta1
@@ -1994,7 +1994,7 @@ apiVersion: apiextensions.k8s.io/v1
19941994
kind: CustomResourceDefinition
19951995
metadata:
19961996
annotations:
1997-
controller-gen.kubebuilder.io/version: v0.19.1-0.20250924093817-1d67470bef32
1997+
controller-gen.kubebuilder.io/version: v0.19.1-0.20251013055054-8ef4174c3d65
19981998
labels:
19991999
cluster.x-k8s.io/v1alpha3: v1alpha3
20002000
cluster.x-k8s.io/v1beta1: v1beta1

config/crd/bases/infrastructure.cluster.x-k8s.io_oscclusters.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
33
kind: CustomResourceDefinition
44
metadata:
55
annotations:
6-
controller-gen.kubebuilder.io/version: v0.19.1-0.20250924093817-1d67470bef32
6+
controller-gen.kubebuilder.io/version: v0.19.1-0.20251013055054-8ef4174c3d65
77
name: oscclusters.infrastructure.cluster.x-k8s.io
88
spec:
99
group: infrastructure.cluster.x-k8s.io

config/crd/bases/infrastructure.cluster.x-k8s.io_oscclustertemplates.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
33
kind: CustomResourceDefinition
44
metadata:
55
annotations:
6-
controller-gen.kubebuilder.io/version: v0.19.1-0.20250924093817-1d67470bef32
6+
controller-gen.kubebuilder.io/version: v0.19.1-0.20251013055054-8ef4174c3d65
77
name: oscclustertemplates.infrastructure.cluster.x-k8s.io
88
spec:
99
group: infrastructure.cluster.x-k8s.io

config/crd/bases/infrastructure.cluster.x-k8s.io_oscmachines.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
33
kind: CustomResourceDefinition
44
metadata:
55
annotations:
6-
controller-gen.kubebuilder.io/version: v0.19.1-0.20250924093817-1d67470bef32
6+
controller-gen.kubebuilder.io/version: v0.19.1-0.20251013055054-8ef4174c3d65
77
name: oscmachines.infrastructure.cluster.x-k8s.io
88
spec:
99
group: infrastructure.cluster.x-k8s.io

config/crd/bases/infrastructure.cluster.x-k8s.io_oscmachinetemplates.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
33
kind: CustomResourceDefinition
44
metadata:
55
annotations:
6-
controller-gen.kubebuilder.io/version: v0.19.1-0.20250924093817-1d67470bef32
6+
controller-gen.kubebuilder.io/version: v0.19.1-0.20251013055054-8ef4174c3d65
77
name: oscmachinetemplates.infrastructure.cluster.x-k8s.io
88
spec:
99
group: infrastructure.cluster.x-k8s.io

controllers/osccluster_netpeering.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ func (r *OscClusterReconciler) reconcileNetPeering(ctx context.Context, clusterS
7474
return reconcile.Result{}, fmt.Errorf("cannot get mgmt credentials: %w", err)
7575
}
7676
mgmtSvc := r.Cloud.NetPeering(mgmt)
77-
log.V(2).Info("Accepting netPeering")
77+
log.V(2).Info("Accepting netPeering", "netPeeringId", np.GetNetPeeringId())
7878
err = mgmtSvc.AcceptNetPeering(ctx, np.GetNetPeeringId())
7979
if err != nil {
8080
return reconcile.Result{}, fmt.Errorf("cannot accept netPeering: %w", err)
@@ -109,7 +109,7 @@ func (r *OscClusterReconciler) reconcileDeleteNetPeering(ctx context.Context, cl
109109
if np.State.GetName() != "pending-acceptance" && np.State.GetName() != "active" {
110110
continue
111111
}
112-
log.V(2).Info("Deleting netPeering", "subnetId", np.GetNetPeeringId())
112+
log.V(2).Info("Deleting netPeering", "netPeeringId", np.GetNetPeeringId())
113113
err = svc.DeleteNetPeering(ctx, np.GetNetPeeringId())
114114
if err != nil {
115115
return reconcile.Result{}, fmt.Errorf("cannot delete netPeering: %w", err)

docs/src/SUMMARY.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
- [Multi AZ clusters](./topics/config-multiaz.md)
99
- [Securing cluster access](./topics/config-security.md)
1010
- [Air-gapped clusters](./topics/config-airgap.md)
11-
- [Omi](./topics/omi.md)
11+
- [Preloading images](./topics/preload.md)
1212
- [Troubleshooting](./topics/troubleshooting.md)
1313
- [Cluster-Autoscaler](./topics/cluster-autoscaler.md)
1414
- [How to upgrade](./topics/upgrade-cluster.md)

docs/src/topics/config-airgap.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,9 @@ network:
6565
6666
TBD
6767
68-
## Pre-loaded images
68+
## Preloaded images
6969
70-
TBD
70+
See [Preloading images](preload.md).
7171
7272
## Outscale API access
7373

0 commit comments

Comments
 (0)