From 2864560bdb22967339f3218700fa5f13be5b7db9 Mon Sep 17 00:00:00 2001 From: Matt Boersma Date: Tue, 6 Jun 2023 20:05:41 -0600 Subject: [PATCH] Update CAPI to v1.4.3 --- Makefile | 2 +- Tiltfile | 4 +- azure/scope/machine.go | 13 ++---- azure/scope/machine_test.go | 32 +++++++------- azure/scope/machinepool.go | 7 ++-- azure/scope/machinepool_test.go | 74 +++++++++++++++++++++++++++++++++ go.mod | 6 +-- go.sum | 8 ++-- hack/install-cert-manager.sh | 2 +- test/e2e/config/azure-dev.yaml | 18 ++++---- 10 files changed, 117 insertions(+), 49 deletions(-) diff --git a/Makefile b/Makefile index 0e493125805..6dc68d3199d 100644 --- a/Makefile +++ b/Makefile @@ -288,7 +288,7 @@ create-management-cluster: $(KUSTOMIZE) $(ENVSUBST) $(KUBECTL) $(KIND) ## Create ./hack/create-custom-cloud-provider-config.sh # Deploy CAPI - curl --retry $(CURL_RETRIES) -sSL https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.4.2/cluster-api-components.yaml | $(ENVSUBST) | $(KUBECTL) apply -f - + curl --retry $(CURL_RETRIES) -sSL https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.4.3/cluster-api-components.yaml | $(ENVSUBST) | $(KUBECTL) apply -f - # Deploy CAPZ $(KIND) load docker-image $(CONTROLLER_IMG)-$(ARCH):$(TAG) --name=$(KIND_CLUSTER_NAME) diff --git a/Tiltfile b/Tiltfile index 3c68c99a3c5..4549d186bf0 100644 --- a/Tiltfile +++ b/Tiltfile @@ -19,8 +19,8 @@ settings = { "deploy_cert_manager": True, "preload_images_for_kind": True, "kind_cluster_name": "capz", - "capi_version": "v1.4.2", - "cert_manager_version": "v1.11.1", + "capi_version": "v1.4.3", + "cert_manager_version": "v1.12.1", "kubernetes_version": "v1.25.6", "aks_kubernetes_version": "v1.25.6", "flatcar_version": "3374.2.1", diff --git a/azure/scope/machine.go b/azure/scope/machine.go index e8e7a94e555..39052502831 100644 --- a/azure/scope/machine.go +++ b/azure/scope/machine.go @@ -42,7 +42,6 @@ import ( "sigs.k8s.io/cluster-api-provider-azure/util/futures" "sigs.k8s.io/cluster-api-provider-azure/util/tele" clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1" - "sigs.k8s.io/cluster-api/controllers/noderefutil" capierrors "sigs.k8s.io/cluster-api/errors" "sigs.k8s.io/cluster-api/util" "sigs.k8s.io/cluster-api/util/conditions" @@ -451,22 +450,18 @@ func (m *MachineScope) Role() string { return infrav1.Node } -// GetVMID returns the AzureMachine instance id by parsing Spec.FakeProviderID. +// GetVMID returns the AzureMachine instance id by parsing the scope's providerID. func (m *MachineScope) GetVMID() string { - parsed, err := noderefutil.NewProviderID(m.ProviderID()) + resourceID, err := azure.ParseResourceID(m.ProviderID()) if err != nil { return "" } - return parsed.ID() + return resourceID.Name } // ProviderID returns the AzureMachine providerID from the spec. func (m *MachineScope) ProviderID() string { - parsed, err := noderefutil.NewProviderID(pointer.StringDeref(m.AzureMachine.Spec.ProviderID, "")) - if err != nil { - return "" - } - return parsed.String() + return pointer.StringDeref(m.AzureMachine.Spec.ProviderID, "") } // AvailabilitySetSpec returns the availability set spec for this machine if available. diff --git a/azure/scope/machine_test.go b/azure/scope/machine_test.go index c0b83cab3dd..c21f4ce67bd 100644 --- a/azure/scope/machine_test.go +++ b/azure/scope/machine_test.go @@ -58,7 +58,7 @@ func TestMachineScope_Name(t *testing.T) { Name: "machine-with-a-long-name", }, Spec: infrav1.AzureMachineSpec{ - ProviderID: pointer.String("azure://compute/virtual-machines/machine-name"), + ProviderID: pointer.String("azure:///subscriptions/1234-5678/resourceGroups/my-cluster/providers/Microsoft.Compute/virtualMachines/machine-name"), OSDisk: infrav1.OSDisk{ OSType: "Windows", }, @@ -164,7 +164,7 @@ func TestMachineScope_GetVMID(t *testing.T) { Name: "not-this-name", }, Spec: infrav1.AzureMachineSpec{ - ProviderID: pointer.String("azure://compute/virtual-machines/machine-name"), + ProviderID: pointer.String("azure:///subscriptions/1234-5678/resourceGroups/my-cluster/providers/Microsoft.Compute/virtualMachines/machine-name"), }, }, }, @@ -209,21 +209,21 @@ func TestMachineScope_ProviderID(t *testing.T) { Name: "not-this-name", }, Spec: infrav1.AzureMachineSpec{ - ProviderID: pointer.String("azure://compute/virtual-machines/machine-name"), + ProviderID: pointer.String("azure:///subscriptions/1234-5678/resourceGroups/my-cluster/providers/Microsoft.Compute/virtualMachines/machine-name"), }, }, }, - want: "azure://compute/virtual-machines/machine-name", + want: "azure:///subscriptions/1234-5678/resourceGroups/my-cluster/providers/Microsoft.Compute/virtualMachines/machine-name", }, { - name: "returns empty if provider ID is invalid", + name: "returns empty if provider ID is empty", machineScope: MachineScope{ AzureMachine: &infrav1.AzureMachine{ ObjectMeta: metav1.ObjectMeta{ Name: "machine-name", }, Spec: infrav1.AzureMachineSpec{ - ProviderID: pointer.String("foo"), + ProviderID: pointer.String(""), }, }, }, @@ -1725,7 +1725,7 @@ func TestMachineScope_NICSpecs(t *testing.T) { Name: "machine", }, Spec: infrav1.AzureMachineSpec{ - ProviderID: pointer.String("azure://compute/virtual-machines/machine-name"), + ProviderID: pointer.String("azure:///subscriptions/1234-5678/resourceGroups/my-cluster/providers/Microsoft.Compute/virtualMachines/machine-name"), NetworkInterfaces: []infrav1.NetworkInterface{{ SubnetName: "subnet1", PrivateIPConfigs: 1, @@ -1829,7 +1829,7 @@ func TestMachineScope_NICSpecs(t *testing.T) { Name: "machine", }, Spec: infrav1.AzureMachineSpec{ - ProviderID: pointer.String("azure://compute/virtual-machines/machine-name"), + ProviderID: pointer.String("azure:///subscriptions/1234-5678/resourceGroups/my-cluster/providers/Microsoft.Compute/virtualMachines/machine-name"), NetworkInterfaces: []infrav1.NetworkInterface{{ SubnetName: "subnet1", PrivateIPConfigs: 1, @@ -1945,7 +1945,7 @@ func TestMachineScope_NICSpecs(t *testing.T) { Name: "machine", }, Spec: infrav1.AzureMachineSpec{ - ProviderID: pointer.String("azure://compute/virtual-machines/machine-name"), + ProviderID: pointer.String("azure:///subscriptions/1234-5678/resourceGroups/my-cluster/providers/Microsoft.Compute/virtualMachines/machine-name"), NetworkInterfaces: []infrav1.NetworkInterface{{ SubnetName: "subnet1", PrivateIPConfigs: 1, @@ -2049,7 +2049,7 @@ func TestMachineScope_NICSpecs(t *testing.T) { Name: "machine", }, Spec: infrav1.AzureMachineSpec{ - ProviderID: pointer.String("azure://compute/virtual-machines/machine-name"), + ProviderID: pointer.String("azure:///subscriptions/1234-5678/resourceGroups/my-cluster/providers/Microsoft.Compute/virtualMachines/machine-name"), NetworkInterfaces: []infrav1.NetworkInterface{{ SubnetName: "subnet1", PrivateIPConfigs: 1, @@ -2160,7 +2160,7 @@ func TestMachineScope_NICSpecs(t *testing.T) { Name: "machine", }, Spec: infrav1.AzureMachineSpec{ - ProviderID: pointer.String("azure://compute/virtual-machines/machine-name"), + ProviderID: pointer.String("azure:///subscriptions/1234-5678/resourceGroups/my-cluster/providers/Microsoft.Compute/virtualMachines/machine-name"), NetworkInterfaces: []infrav1.NetworkInterface{{ SubnetName: "subnet1", PrivateIPConfigs: 1, @@ -2267,7 +2267,7 @@ func TestMachineScope_NICSpecs(t *testing.T) { Name: "machine", }, Spec: infrav1.AzureMachineSpec{ - ProviderID: pointer.String("azure://compute/virtual-machines/machine-name"), + ProviderID: pointer.String("azure:///subscriptions/1234-5678/resourceGroups/my-cluster/providers/Microsoft.Compute/virtualMachines/machine-name"), NetworkInterfaces: []infrav1.NetworkInterface{{ SubnetName: "subnet1", PrivateIPConfigs: 1, @@ -2374,7 +2374,7 @@ func TestMachineScope_NICSpecs(t *testing.T) { Name: "machine", }, Spec: infrav1.AzureMachineSpec{ - ProviderID: pointer.String("azure://compute/virtual-machines/machine-name"), + ProviderID: pointer.String("azure:///subscriptions/1234-5678/resourceGroups/my-cluster/providers/Microsoft.Compute/virtualMachines/machine-name"), NetworkInterfaces: []infrav1.NetworkInterface{{ SubnetName: "subnet1", PrivateIPConfigs: 1, @@ -2482,7 +2482,7 @@ func TestMachineScope_NICSpecs(t *testing.T) { Name: "machine", }, Spec: infrav1.AzureMachineSpec{ - ProviderID: pointer.String("azure://compute/virtual-machines/machine-name"), + ProviderID: pointer.String("azure:///subscriptions/1234-5678/resourceGroups/my-cluster/providers/Microsoft.Compute/virtualMachines/machine-name"), NetworkInterfaces: []infrav1.NetworkInterface{ { SubnetName: "subnet1", @@ -2619,7 +2619,7 @@ func TestMachineScope_NICSpecs(t *testing.T) { Name: "machine", }, Spec: infrav1.AzureMachineSpec{ - ProviderID: pointer.String("azure://compute/virtual-machines/machine-name"), + ProviderID: pointer.String("azure:///subscriptions/1234-5678/resourceGroups/my-cluster/providers/Microsoft.Compute/virtualMachines/machine-name"), AllocatePublicIP: true, NetworkInterfaces: []infrav1.NetworkInterface{ { @@ -2757,7 +2757,7 @@ func TestMachineScope_NICSpecs(t *testing.T) { Name: "machine", }, Spec: infrav1.AzureMachineSpec{ - ProviderID: pointer.String("azure://compute/virtual-machines/machine-name"), + ProviderID: pointer.String("azure:///subscriptions/1234-5678/resourceGroups/my-cluster/providers/Microsoft.Compute/virtualMachines/machine-name"), NetworkInterfaces: []infrav1.NetworkInterface{ { SubnetName: "subnet1", diff --git a/azure/scope/machinepool.go b/azure/scope/machinepool.go index 7f11959ae6f..5b3ee9c5dd0 100644 --- a/azure/scope/machinepool.go +++ b/azure/scope/machinepool.go @@ -39,7 +39,6 @@ import ( "sigs.k8s.io/cluster-api-provider-azure/util/futures" "sigs.k8s.io/cluster-api-provider-azure/util/tele" clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1" - "sigs.k8s.io/cluster-api/controllers/noderefutil" capierrors "sigs.k8s.io/cluster-api/errors" expv1 "sigs.k8s.io/cluster-api/exp/api/v1beta1" "sigs.k8s.io/cluster-api/util/annotations" @@ -153,13 +152,13 @@ func (m *MachinePoolScope) Name() string { return m.AzureMachinePool.Name } -// ProviderID returns the AzureMachinePool ID by parsing Spec.FakeProviderID. +// ProviderID returns the AzureMachinePool ID by parsing Spec.ProviderID. func (m *MachinePoolScope) ProviderID() string { - parsed, err := noderefutil.NewProviderID(m.AzureMachinePool.Spec.ProviderID) + resourceID, err := azure.ParseResourceID(m.AzureMachinePool.Spec.ProviderID) if err != nil { return "" } - return parsed.ID() + return resourceID.Name } // SetProviderID sets the AzureMachinePool providerID in spec. diff --git a/azure/scope/machinepool_test.go b/azure/scope/machinepool_test.go index 6030fd319fc..cfda40bdb72 100644 --- a/azure/scope/machinepool_test.go +++ b/azure/scope/machinepool_test.go @@ -98,6 +98,80 @@ func TestMachinePoolScope_Name(t *testing.T) { }) } } + +func TestMachinePoolScope_ProviderID(t *testing.T) { + tests := []struct { + name string + machinePoolScope MachinePoolScope + want string + }{ + { + name: "valid providerID", + machinePoolScope: MachinePoolScope{ + AzureMachinePool: &infrav1exp.AzureMachinePool{ + Spec: infrav1exp.AzureMachinePoolSpec{ + ProviderID: "azure:///subscriptions/1234/resourcegroups/my-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cloud-provider-user-identity", + }, + }, + }, + want: "cloud-provider-user-identity", + }, + { + name: "valid providerID: VMSS Flex instance", + machinePoolScope: MachinePoolScope{ + AzureMachinePool: &infrav1exp.AzureMachinePool{ + Spec: infrav1exp.AzureMachinePoolSpec{ + ProviderID: "azure:///subscriptions/1234/resourceGroups/my-cluster/providers/Microsoft.Compute/virtualMachines/machine-0", + }, + }, + }, + want: "machine-0", + }, + { + name: "valid providerID: VMSS Uniform instance", + machinePoolScope: MachinePoolScope{ + AzureMachinePool: &infrav1exp.AzureMachinePool{ + Spec: infrav1exp.AzureMachinePoolSpec{ + ProviderID: "azure:///subscriptions/1234/resourceGroups/my-cluster/providers/Microsoft.Compute/virtualMachineScaleSets/my-cluster-mp-0/virtualMachines/0", + }, + }, + }, + want: "0", + }, + { + name: "invalid providerID: no cloud provider", + machinePoolScope: MachinePoolScope{ + AzureMachinePool: &infrav1exp.AzureMachinePool{ + Spec: infrav1exp.AzureMachinePoolSpec{ + ProviderID: "subscriptions/123/resourceGroups/rg/providers/Microsoft.Compute/virtualMachines/vm", + }, + }, + }, + want: "", + }, + { + name: "invalid providerID: incomplete URL", + machinePoolScope: MachinePoolScope{ + AzureMachinePool: &infrav1exp.AzureMachinePool{ + Spec: infrav1exp.AzureMachinePoolSpec{ + ProviderID: "azure:///", + }, + }, + }, + want: "", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got := tt.machinePoolScope.ProviderID() + if got != tt.want { + t.Errorf("MachinePoolScope.ProviderID() = %v, want %v", got, tt.want) + } + }) + } +} + func TestMachinePoolScope_NetworkInterfaces(t *testing.T) { tests := []struct { name string diff --git a/go.mod b/go.mod index 83a771cd9bd..7db31de15ad 100644 --- a/go.mod +++ b/go.mod @@ -46,8 +46,8 @@ require ( k8s.io/kubectl v0.26.1 k8s.io/utils v0.0.0-20230220204549-a5ecb0141aa5 sigs.k8s.io/cloud-provider-azure v1.26.7 - sigs.k8s.io/cluster-api v1.4.2 - sigs.k8s.io/cluster-api/test v1.4.2 + sigs.k8s.io/cluster-api v1.4.3 + sigs.k8s.io/cluster-api/test v1.4.3 sigs.k8s.io/controller-runtime v0.14.5 sigs.k8s.io/kind v0.19.0 ) @@ -227,4 +227,4 @@ require ( sigs.k8s.io/yaml v1.3.0 // indirect ) -replace sigs.k8s.io/cluster-api => sigs.k8s.io/cluster-api v1.4.2 +replace sigs.k8s.io/cluster-api => sigs.k8s.io/cluster-api v1.4.3 diff --git a/go.sum b/go.sum index 9140c578bef..150b67fae79 100644 --- a/go.sum +++ b/go.sum @@ -1315,10 +1315,10 @@ rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/cloud-provider-azure v1.26.7 h1:LSVRPyxeTQZPOF7z42zNZGzL1S1N5tg28RBZVy7gea4= sigs.k8s.io/cloud-provider-azure v1.26.7/go.mod h1:UIwr0Bk4wQb77wNL9cdT4zZw6DP2AtOQ9EKRt9c5g7Q= -sigs.k8s.io/cluster-api v1.4.2 h1:hdIz0Ms2j7YaU1qBK5yF2R8ii0GcGb3jQ7EO6i3tAN8= -sigs.k8s.io/cluster-api v1.4.2/go.mod h1:IIebZTsqyXU8CHbINV2zuMh0/wykqdr+vEXxQNeteEU= -sigs.k8s.io/cluster-api/test v1.4.2 h1:uHFtn0SFOFOxIbdahLoYo4kz84yLqCmhbVLV4vsk1gQ= -sigs.k8s.io/cluster-api/test v1.4.2/go.mod h1:/64ycj3YFMW1BGVtCtfwmlVAXGN0DFTZEkIClh68Svo= +sigs.k8s.io/cluster-api v1.4.3 h1:QSeKr3qnWPtVp+EMQZQduKoi5WDwUhAtBRreEukkcy0= +sigs.k8s.io/cluster-api v1.4.3/go.mod h1:/SeFds4NXJ+Gp2etqHyoNuO6yoxTfVq6Zmd2OGxd/qM= +sigs.k8s.io/cluster-api/test v1.4.3 h1:xXhvOLp5zBKn2Yf4PQckFwxGxFrKgkgUI74ikU5Jh/c= +sigs.k8s.io/cluster-api/test v1.4.3/go.mod h1:xGTJsJkbXMNmumhErEAH/e7GmnE2sGfm/rcOzJZSdbw= sigs.k8s.io/controller-runtime v0.14.5 h1:6xaWFqzT5KuAQ9ufgUaj1G/+C4Y1GRkhrxl+BJ9i+5s= sigs.k8s.io/controller-runtime v0.14.5/go.mod h1:WqIdsAY6JBsjfc/CqO0CORmNtoCtE4S6qbPc9s68h+0= sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 h1:iXTIw73aPyC+oRdyqqvVJuloN1p0AC/kzH07hu3NE+k= diff --git a/hack/install-cert-manager.sh b/hack/install-cert-manager.sh index 4497b7c8da4..a1a3ce6fbb5 100755 --- a/hack/install-cert-manager.sh +++ b/hack/install-cert-manager.sh @@ -54,7 +54,7 @@ source "${REPO_ROOT}/hack/common-vars.sh" make --directory="${REPO_ROOT}" "${KUBECTL##*/}" ## Install cert manager and wait for availability -"${KUBECTL}" apply -f https://github.com/jetstack/cert-manager/releases/download/v1.11.1/cert-manager.yaml +"${KUBECTL}" apply -f https://github.com/jetstack/cert-manager/releases/download/v1.12.1/cert-manager.yaml "${KUBECTL}" wait --for=condition=Available --timeout=5m -n cert-manager deployment/cert-manager "${KUBECTL}" wait --for=condition=Available --timeout=5m -n cert-manager deployment/cert-manager-cainjector "${KUBECTL}" wait --for=condition=Available --timeout=5m -n cert-manager deployment/cert-manager-webhook diff --git a/test/e2e/config/azure-dev.yaml b/test/e2e/config/azure-dev.yaml index 7a44c9efb50..0a9ad2c2c15 100644 --- a/test/e2e/config/azure-dev.yaml +++ b/test/e2e/config/azure-dev.yaml @@ -3,11 +3,11 @@ managementClusterName: capz-e2e images: - name: ${MANAGER_IMAGE} loadBehavior: mustLoad - - name: registry.k8s.io/cluster-api/cluster-api-controller:v1.4.2 + - name: registry.k8s.io/cluster-api/cluster-api-controller:v1.4.3 loadBehavior: tryLoad - - name: registry.k8s.io/cluster-api/kubeadm-bootstrap-controller:v1.4.2 + - name: registry.k8s.io/cluster-api/kubeadm-bootstrap-controller:v1.4.3 loadBehavior: tryLoad - - name: registry.k8s.io/cluster-api/kubeadm-control-plane-controller:v1.4.2 + - name: registry.k8s.io/cluster-api/kubeadm-control-plane-controller:v1.4.3 loadBehavior: tryLoad providers: @@ -23,8 +23,8 @@ providers: new: --metrics-addr=:8080 files: - sourcePath: "../data/shared/v1beta1/metadata.yaml" - - name: v1.4.2 - value: https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.4.2/core-components.yaml + - name: v1.4.3 + value: https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.4.3/core-components.yaml type: url contract: v1beta1 files: @@ -46,8 +46,8 @@ providers: new: --metrics-addr=:8080 files: - sourcePath: "../data/shared/v1beta1/metadata.yaml" - - name: v1.4.2 - value: https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.4.2/bootstrap-components.yaml + - name: v1.4.3 + value: https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.4.3/bootstrap-components.yaml type: url contract: v1beta1 files: @@ -68,8 +68,8 @@ providers: new: --metrics-addr=:8080 files: - sourcePath: "../data/shared/v1beta1/metadata.yaml" - - name: v1.4.2 - value: https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.4.2/control-plane-components.yaml + - name: v1.4.3 + value: https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.4.3/control-plane-components.yaml type: url contract: v1beta1 files: