Skip to content

Commit

Permalink
rename docker tags to old/new
Browse files Browse the repository at this point in the history
  • Loading branch information
bschimke95 committed Aug 1, 2024
1 parent d9d25d1 commit 667b389
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 57 deletions.
24 changes: 12 additions & 12 deletions .github/workflows/e2e.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,27 +34,27 @@ jobs:
run: |
cd templates/docker
# TODO(ben): required for the rollout upgrade test. Remove KUBERNETES_VERSION_OVERRIDE once we have a 1.31 release.
sudo docker build . -t k8s-snap:dev-1.29 --build-arg BRANCH=main --build-arg KUBERNETES_VERSION_OVERRIDE=v1.29.6
sudo docker build . -t k8s-snap:dev-old --build-arg BRANCH=main --build-arg KUBERNETES_VERSION_OVERRIDE=v1.29.6
# TODO(ben): release-1.30 is missing extra-node-args hence we need to use main branch for now.
sudo docker build . -t k8s-snap:dev-1.30 --build-arg BRANCH=main
sudo docker build . -t k8s-snap:dev-new --build-arg BRANCH=main
- name: Save provider image
run: |
sudo docker save -o provider-images.tar ghcr.io/canonical/cluster-api-k8s/controlplane-controller:dev ghcr.io/canonical/cluster-api-k8s/bootstrap-controller:dev
sudo chmod 775 provider-images.tar
- name: Save k8s-snap image
run: |
sudo docker save -o k8s-snap-image-1.29.tar k8s-snap:dev-1.29
sudo docker save -o k8s-snap-image-1.30.tar k8s-snap:dev-1.30
sudo chmod 775 k8s-snap-image-1.29.tar
sudo chmod 775 k8s-snap-image-1.30.tar
sudo docker save -o k8s-snap-image-old.tar k8s-snap:dev-old
sudo docker save -o k8s-snap-image-new.tar k8s-snap:dev-new
sudo chmod 775 k8s-snap-image-old.tar
sudo chmod 775 k8s-snap-image-new.tar
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: e2e-images
path: |
provider-images.tar
k8s-snap-image-1.29.tar
k8s-snap-image-1.30.tar
k8s-snap-image-old.tar
k8s-snap-image-new.tar
run-e2e-tests:
name: Run E2E Tests
Expand Down Expand Up @@ -94,13 +94,13 @@ jobs:
path: .
- name: Load provider image
run: sudo docker load -i provider-images.tar
- name: Load k8s-snap 1.29 image
- name: Load k8s-snap old image
if: matrix.ginkgo_focus == 'Workload cluster upgrade'
run: |
sudo docker load -i k8s-snap-image-1.29.tar
- name: Load k8s-snap 1.30 image
sudo docker load -i k8s-snap-image-old.tar
- name: Load k8s-snap new image
run: |
sudo docker load -i k8s-snap-image-1.30.tar
sudo docker load -i k8s-snap-image-new.tar
- name: Create docker network
run: |
sudo docker network create kind --driver=bridge -o com.docker.network.bridge.enable_ip_masquerade=true
Expand Down
8 changes: 1 addition & 7 deletions test/e2e/cluster_upgrade.go
Original file line number Diff line number Diff line change
Expand Up @@ -152,19 +152,13 @@ func ClusterUpgradeSpec(ctx context.Context, inputGetter func() ClusterUpgradeSp
WaitForMachineDeployments: input.E2EConfig.GetIntervals(specName, "wait-worker-nodes"),
}, result)

By("Upgrading the DockerMachineTemplate")
UpgradeDockerMachineTemplateAndWaitForUpgrade(ctx, UpgradeDockerMachineTemplateAndWaitForUpgradeInput{
ClusterProxy: input.BootstrapClusterProxy,
ControlPlane: result.ControlPlane,
CustomImage: "k8s-snap:dev-1.30",
})

By("Upgrading the Kubernetes control-plane")
UpgradeControlPlaneAndWaitForUpgrade(ctx, UpgradeControlPlaneAndWaitForUpgradeInput{
ClusterProxy: input.BootstrapClusterProxy,
Cluster: result.Cluster,
ControlPlane: result.ControlPlane,
KubernetesUpgradeVersion: input.E2EConfig.GetVariable(KubernetesVersionUpgradeTo),
UpgradeMachineTemplate: ptr.To(fmt.Sprintf("%s-control-plane-old", clusterName)),
WaitForMachinesToBeUpgraded: input.E2EConfig.GetIntervals(specName, "wait-machine-upgrade"),
})

Expand Down
28 changes: 19 additions & 9 deletions test/e2e/data/infrastructure-docker/cluster-template-upgrades.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ spec:
infrastructureTemplate:
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
kind: DockerMachineTemplate
name: ${CLUSTER_NAME}-control-plane-1.29
name: ${CLUSTER_NAME}-control-plane-old
spec:
airGapped: true
controlPlane:
Expand All @@ -53,13 +53,23 @@ spec:
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
kind: DockerMachineTemplate
metadata:
name: ${CLUSTER_NAME}-control-plane-1.29
name: ${CLUSTER_NAME}-control-plane-old
namespace: ${NAMESPACE}
spec:
template:
spec:
customImage: k8s-snap:dev-1.29

customImage: k8s-snap:dev-old
# After upgrade template for the machine deployment
---
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
kind: DockerMachineTemplate
metadata:
name: ${CLUSTER_NAME}-control-plane-new
namespace: ${NAMESPACE}
spec:
template:
spec:
customImage: k8s-snap:dev-new
---
apiVersion: cluster.x-k8s.io/v1beta1
kind: MachineDeployment
Expand Down Expand Up @@ -92,27 +102,27 @@ spec:
infrastructureRef:
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
kind: DockerMachineTemplate
name: ${CLUSTER_NAME}-md-1.29-0
name: ${CLUSTER_NAME}-md-old-0
---
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
kind: DockerMachineTemplate
metadata:
name: ${CLUSTER_NAME}-md-1.29-0
name: ${CLUSTER_NAME}-md-old-0
namespace: ${NAMESPACE}
spec:
template:
spec:
customImage: k8s-snap:dev-1.29
customImage: k8s-snap:dev-old
---
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
kind: DockerMachineTemplate
metadata:
name: ${CLUSTER_NAME}-md-1.30-0
name: ${CLUSTER_NAME}-md-new-0
namespace: ${NAMESPACE}
spec:
template:
spec:
customImage: k8s-snap:dev-1.30
customImage: k8s-snap:dev-new
---
apiVersion: bootstrap.cluster.x-k8s.io/v1beta2
kind: CK8sConfigTemplate
Expand Down
51 changes: 22 additions & 29 deletions test/e2e/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ import (
expv1 "sigs.k8s.io/cluster-api/exp/api/v1beta1"
"sigs.k8s.io/cluster-api/test/framework"
"sigs.k8s.io/cluster-api/test/framework/clusterctl"
dockerv1beta1 "sigs.k8s.io/cluster-api/test/infrastructure/docker/api/v1beta1"
"sigs.k8s.io/cluster-api/util/patch"
"sigs.k8s.io/controller-runtime/pkg/client"

Expand Down Expand Up @@ -553,40 +552,13 @@ func WaitForControlPlaneAndMachinesReady(ctx context.Context, input WaitForContr
})
}

// UpgradeDockerMachineAndWaitForUpgradeInput is the input type for UpgradeDockerMachineAndWaitForUpgrade.
type UpgradeDockerMachineTemplateAndWaitForUpgradeInput struct {
ClusterProxy framework.ClusterProxy
ControlPlane *controlplanev1.CK8sControlPlane
CustomImage string
}

// UpgradeDockerMachineTemplateAndWaitForUpgrade upgrades a DockerMachineTemplate custom image and waits for it to be upgraded.
func UpgradeDockerMachineTemplateAndWaitForUpgrade(ctx context.Context, input UpgradeDockerMachineTemplateAndWaitForUpgradeInput) {
Byf("Patching the DockerMachineTemplate image to use the updated custom image")
mgmtClient := input.ClusterProxy.GetClient()

dockerMachineTemplate := &dockerv1beta1.DockerMachineTemplate{}
err := mgmtClient.Get(ctx, client.ObjectKey{Name: input.ControlPlane.Spec.MachineTemplate.InfrastructureRef.Name, Namespace: input.ControlPlane.Namespace}, dockerMachineTemplate)
Expect(err).ToNot(HaveOccurred())

patchHelperDocker, err := patch.NewHelper(dockerMachineTemplate, mgmtClient)
Expect(err).ToNot(HaveOccurred())
dockerMachineTemplate.Spec.Template.Spec.CustomImage = input.CustomImage
Eventually(func() error {
err := patchHelperDocker.Patch(ctx, dockerMachineTemplate)
if err != nil {
Byf("Failed to patch the DockerMachineTemplate: %v", err)
}
return err
}, retryableOperationTimeout, retryableOperationInterval).Should(Succeed(), "Failed to patch the DockerMachineTemplate")
}

// UpgradeControlPlaneAndWaitForUpgradeInput is the input type for UpgradeControlPlaneAndWaitForUpgrade.
type UpgradeControlPlaneAndWaitForUpgradeInput struct {
ClusterProxy framework.ClusterProxy
Cluster *clusterv1.Cluster
ControlPlane *controlplanev1.CK8sControlPlane
KubernetesUpgradeVersion string
UpgradeMachineTemplate *string
WaitForMachinesToBeUpgraded []interface{}
}

Expand All @@ -606,6 +578,17 @@ func UpgradeControlPlaneAndWaitForUpgrade(ctx context.Context, input UpgradeCont

input.ControlPlane.Spec.Version = input.KubernetesUpgradeVersion

// Create a new ObjectReference for the infrastructure provider
newInfrastructureRef := corev1.ObjectReference{
APIVersion: "infrastructure.cluster.x-k8s.io/v1beta1",
Kind: "DockerMachineTemplate",
Name: fmt.Sprintf("%s-control-plane-new", input.Cluster.Name),
Namespace: input.ControlPlane.Spec.MachineTemplate.InfrastructureRef.Namespace,
}

// Update the infrastructureRef
input.ControlPlane.Spec.MachineTemplate.InfrastructureRef = newInfrastructureRef

Eventually(func() error {
return patchHelper.Patch(ctx, input.ControlPlane)
}, retryableOperationTimeout, retryableOperationInterval).Should(Succeed(), "Failed to patch the new kubernetes version to KCP %s", klog.KObj(input.ControlPlane))
Expand Down Expand Up @@ -635,6 +618,16 @@ func UpgradeMachineDeploymentsAndWait(ctx context.Context, input framework.Upgra

oldVersion := deployment.Spec.Template.Spec.Version
deployment.Spec.Template.Spec.Version = &input.UpgradeVersion
// Create a new ObjectReference for the infrastructure provider
newInfrastructureRef := corev1.ObjectReference{
APIVersion: "infrastructure.cluster.x-k8s.io/v1beta1",
Kind: "DockerMachineTemplate",
Name: fmt.Sprintf("%s-md-new-0", input.Cluster.Name),
Namespace: deployment.Spec.Template.Spec.InfrastructureRef.Namespace,
}

// Update the infrastructureRef
deployment.Spec.Template.Spec.InfrastructureRef = newInfrastructureRef
Eventually(func() error {
return patchHelper.Patch(ctx, deployment)
}, retryableOperationTimeout, retryableOperationInterval).Should(Succeed(), "Failed to patch Kubernetes version on MachineDeployment %s", klog.KObj(deployment))
Expand Down

0 comments on commit 667b389

Please sign in to comment.