Open eromanova opened 2 days ago
@eromanova could you also provide the existing AzureMachine
, that k0smotron is trying to update?
Hey @makhov. Here is the AzureMachine
object (my fault, didn't provide it initially, I thought AzureMachineTemplate
is enough). The initial cluster was removed, but I've redeployed it again with the same configuration.
Steps to reproduce
1.1.2
(also reproduced on older k0smotron versions, ex. was also tested on1.0.4
)azure
as infrastructure provider using k0smotron and cluster API. All cluster objects are provided below.K0sConfigSpec
in theK0scontrolplane
object (I updatedspec.k0sConfigSpec.k0s.spec.extensions.helm.charts
and bumped the version of one of the charts)Expected result
Actual result
error creating machine from template: Apply failed with 1 conflict: conflict with \"cluster-api-provider-azure-manager\" using infrastructure.cluster.x-k8s.io/v1beta1: .spec.networkInterfaces
Similar changes in k0sconfig work fine on the AWS provider and the k0s config update was applied. Please, let me know if any extra information is needed.
Cluster objects (all sensitive information is hidden)
``` apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 kind: AzureCluster metadata: annotations: clusterctl.cluster.x-k8s.io/block-move: "true" meta.helm.sh/release-name: ekaz-dev meta.helm.sh/release-namespace: default sigs.k8s.io/cluster-api-provider-azure-last-applied-security-rules: '{"ekaz-dev-controlplane-nsg":{"allow_apiserver":"Allow K8s API Server","allow_ssh":"Allow SSH"}}' creationTimestamp: "2024-10-15T17:18:04Z" finalizers: - azurecluster.infrastructure.cluster.x-k8s.io generation: 6 labels: app.kubernetes.io/managed-by: Helm cluster.x-k8s.io/cluster-name: ekaz-dev helm.toolkit.fluxcd.io/name: ekaz-dev helm.toolkit.fluxcd.io/namespace: default name: ekaz-dev namespace: default ownerReferences: - apiVersion: cluster.x-k8s.io/v1beta1 blockOwnerDeletion: true controller: true kind: Cluster name: ekaz-dev uid: 4490bcf0-9955-4973-b583-1b093ff9d00e resourceVersion: "113535" uid: 116f63a7-d533-4792-a489-c815738375c8 spec: azureEnvironment: AzurePublicCloud bastionSpec: {} controlPlaneEndpoint: host:The Azure controller already populated some defaults and configuration fields in the objects above. The initial cluster objects that can be used for testing are below:
Initial cluster objects (all sensitive information is hidden)
``` --- # Source: azure-standalone-cp/templates/azurecluster.yaml apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 kind: AzureCluster metadata: name: ekaz-dev spec: identityRef: kind: AzureClusterIdentity name: azure-cluster-identity namespace: default location: westus subscriptionID: ${AZURE_SUBSCRIPTION_ID} --- # Source: azure-standalone-cp/templates/azuremachinetemplate-controlplane.yaml apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 kind: AzureMachineTemplate metadata: name: ekaz-dev-cp-mt spec: template: spec: osDisk: diskSizeGB: 30 osType: Linux sshPublicKey: vmSize: Standard_A4_v2 image: marketplace: offer: capi publisher: cncf-upstream sku: ubuntu-2204-gen1 version: 130.3.20240717 --- # Source: azure-standalone-cp/templates/azuremachinetemplate-worker.yaml apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 kind: AzureMachineTemplate metadata: name: ekaz-dev-worker-mt spec: template: spec: osDisk: diskSizeGB: 30 osType: Linux sshPublicKey: vmSize: Standard_A4_v2 image: marketplace: offer: capi publisher: cncf-upstream sku: ubuntu-2204-gen1 version: 130.3.20240717 --- # Source: azure-standalone-cp/templates/cluster.yaml apiVersion: cluster.x-k8s.io/v1beta1 kind: Cluster metadata: name: ekaz-dev spec: clusterNetwork: pods: cidrBlocks: - 10.244.0.0/16 services: cidrBlocks: - 10.96.0.0/12 controlPlaneRef: apiVersion: controlplane.cluster.x-k8s.io/v1beta1 kind: K0sControlPlane name: ekaz-dev-cp infrastructureRef: apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 kind: AzureCluster name: ekaz-dev --- # Source: azure-standalone-cp/templates/k0scontrolplane.yaml apiVersion: controlplane.cluster.x-k8s.io/v1beta1 kind: K0sControlPlane metadata: name: ekaz-dev-cp spec: replicas: 1 version: v1.30.4+k0s.0 k0sConfigSpec: args: - --enable-worker - --enable-cloud-provider - --kubelet-extra-args="--cloud-provider=external" - --disable-components=konnectivity-server files: - path: "/etc/kubernetes/azure.json" permissions: "0644" contentFrom: secretRef: key: control-plane-azure.json name: ekaz-dev-cp-0-azure-json k0s: apiVersion: k0s.k0sproject.io/v1beta1 kind: ClusterConfig metadata: name: k0s spec: api: extraArgs: anonymous-auth: "true" network: provider: calico calico: mode: vxlan extensions: helm: repositories: - name: cloud-provider-azure url: https://raw.githubusercontent.com/kubernetes-sigs/cloud-provider-azure/master/helm/repo - name: azuredisk-csi-driver url: https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/charts charts: - name: cloud-provider-azure namespace: kube-system chartname: cloud-provider-azure/cloud-provider-azure version: 1.30.4 order: 1 values: | cloudControllerManager: nodeSelector: node-role.kubernetes.io/control-plane: "true" - name: azuredisk-csi-driver namespace: kube-system chartname: azuredisk-csi-driver/azuredisk-csi-driver version: 1.30.3 order: 2 values: | linux: kubelet: "/var/lib/k0s/kubelet" machineTemplate: infrastructureRef: apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 kind: AzureMachineTemplate name: ekaz-dev-cp-mt namespace: default --- # Source: azure-standalone-cp/templates/k0sworkerconfigtemplate.yaml apiVersion: bootstrap.cluster.x-k8s.io/v1beta1 kind: K0sWorkerConfigTemplate metadata: name: ekaz-dev-machine-config spec: template: spec: version: v1.30.4+k0s.0 args: - --enable-cloud-provider - --kubelet-extra-args="--cloud-provider=external" files: - path: "/etc/kubernetes/azure.json" permissions: "0644" contentFrom: secretRef: key: worker-node-azure.json name: ekaz-dev-worker-mt-azure-json --- # Source: azure-standalone-cp/templates/machinedeployment.yaml apiVersion: cluster.x-k8s.io/v1beta1 kind: MachineDeployment metadata: name: ekaz-dev-md spec: clusterName: ekaz-dev replicas: 1 selector: matchLabels: cluster.x-k8s.io/cluster-name: ekaz-dev template: metadata: labels: cluster.x-k8s.io/cluster-name: ekaz-dev spec: version: v1.30.4 clusterName: ekaz-dev bootstrap: configRef: apiVersion: bootstrap.cluster.x-k8s.io/v1beta1 kind: K0sWorkerConfigTemplate name: ekaz-dev-machine-config infrastructureRef: apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 kind: AzureMachineTemplate name: ekaz-dev-worker-mt ```