Skip to content

Commit 9c5ddf1

Browse files
authored
Merge pull request #18170 from hakman/azure-csi-flakes
azure: Get node info from node labels for CSI driver
2 parents cc3bb03 + c9b9c6c commit 9c5ddf1

File tree

6 files changed

+44
-22
lines changed

6 files changed

+44
-22
lines changed

nodeup/pkg/model/cloudconfig.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929

3030
const (
3131
CloudConfigFilePath = "/etc/kubernetes/cloud.config"
32+
AzureCloudConfigFilePath = "/etc/kubernetes/azure.json"
3233
InTreeCloudConfigFilePath = "/etc/kubernetes/in-tree-cloud.config"
3334

3435
// VM UUID is set by cloud-init
@@ -155,6 +156,8 @@ func (b *CloudConfigBuilder) build(c *fi.NodeupModelBuilderContext, inTree bool)
155156
path := CloudConfigFilePath
156157
if inTree {
157158
path = InTreeCloudConfigFilePath
159+
} else if cloudProvider == kops.CloudProviderAzure {
160+
path = AzureCloudConfigFilePath
158161
}
159162
t := &nodetasks.File{
160163
Path: path,

tests/integration/update_cluster/minimal_azure/data/azurerm_storage_blob_minimal-azure.example.com-addons-azuredisk-csi-driver.addons.k8s.io-k8s-1.31_source

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -636,20 +636,24 @@ spec:
636636
- --drivername=disk.csi.azure.com
637637
- --volume-attach-limit=-1
638638
- --reserved-data-disk-slot-num=0
639-
- --cloud-config-secret-name=azure-cloud-provider
640-
- --cloud-config-secret-namespace=kube-system
639+
- --cloud-config-secret-name=
640+
- --cloud-config-secret-namespace=
641641
- --custom-user-agent=
642642
- --user-agent-suffix=kops
643643
- --allow-empty-cloud-config=true
644644
- --support-zone=true
645-
- --get-node-info-from-labels=false
645+
- --get-node-info-from-labels=true
646646
- --get-nodeid-from-imds=false
647647
- --enable-otel-tracing=false
648648
- --metrics-address=0.0.0.0:29605
649649
- --remove-not-ready-taint=true
650650
env:
651651
- name: AZURE_CREDENTIAL_FILE
652-
value: /etc/kubernetes/cloud.config
652+
valueFrom:
653+
configMapKeyRef:
654+
key: path
655+
name: azure-cred-file
656+
optional: true
653657
- name: CSI_ENDPOINT
654658
value: unix:///csi/csi.sock
655659
- name: KUBE_NODE_NAME
@@ -941,7 +945,11 @@ spec:
941945
- --vmss-detach-timeout-seconds=20
942946
env:
943947
- name: AZURE_CREDENTIAL_FILE
944-
value: /etc/kubernetes/cloud.config
948+
valueFrom:
949+
configMapKeyRef:
950+
key: path
951+
name: azure-cred-file
952+
optional: true
945953
- name: CSI_ENDPOINT
946954
value: unix:///csi/csi.sock
947955
- name: AZURE_GO_SDK_LOG_LEVEL
@@ -977,7 +985,6 @@ spec:
977985
name: socket-dir
978986
- mountPath: /etc/kubernetes/
979987
name: azure-cred
980-
readOnly: true
981988
hostNetwork: true
982989
nodeSelector:
983990
kubernetes.io/os: linux

tests/integration/update_cluster/minimal_azure/data/azurerm_storage_blob_minimal-azure.example.com-addons-bootstrap_source

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ spec:
8585
version: 9.99.0
8686
- id: k8s-1.31
8787
manifest: azuredisk-csi-driver.addons.k8s.io/k8s-1.31.yaml
88-
manifestHash: d3e7fdef377b4741d80d9219172c3c47b48573668e71c5aacadb06d82c021b9f
88+
manifestHash: da0ccb52e5db231adbe24c372b9e2e87ea02f9559e80e09b6dbcbc094371220f
8989
name: azuredisk-csi-driver.addons.k8s.io
9090
prune:
9191
kinds:

upup/models/cloudup/resources/addons/azuredisk-csi-driver.addons.k8s.io/helm-values.yaml

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,9 @@
55
# helm template azuredisk-csi-driver azuredisk-csi-driver/azuredisk-csi-driver \
66
# --version 1.34.0 --namespace kube-system -f helm-values.yaml > k8s-1.31.yaml.template
77
#
8-
# After generating, apply kops-specific patches:
9-
# 1. Prepend the StorageClass block from the bottom of this file
10-
# 2. Replace AZURE_CREDENTIAL_FILE env var (both controller and node azuredisk containers):
11-
# from: valueFrom: configMapKeyRef: ...
12-
# to: value: /etc/kubernetes/cloud.config
13-
# 3. Add readOnly: true to controller azure-cred volume mount
8+
# Note: No kops-specific patches are needed. The driver finds the cloud config
9+
# at /etc/kubernetes/azure.json (its default path) on control-plane nodes.
10+
# Node pods use --get-node-info-from-labels and --allow-empty-cloud-config=true.
1411
#
1512
# Note: StorageClass is managed separately via storage-azure.addons.k8s.io
1613

@@ -25,6 +22,11 @@ controller:
2522
linux:
2623
enabled: true
2724
hostNetwork: true
25+
getNodeInfoFromLabels: true
26+
27+
node:
28+
cloudConfigSecretName: ""
29+
cloudConfigSecretNamespace: ""
2830

2931
windows:
3032
enabled: false

upup/models/cloudup/resources/addons/azuredisk-csi-driver.addons.k8s.io/k8s-1.31.yaml.template

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
# Generated from azuredisk-csi-driver Helm chart v1.34.0 with helm-values.yaml
2-
# kops-specific patches: AZURE_CREDENTIAL_FILE, readOnly mount
31
---
42
# Source: azuredisk-csi-driver/templates/serviceaccount-csi-azuredisk-controller.yaml
53
apiVersion: v1
@@ -410,13 +408,13 @@ spec:
410408
- "--drivername=disk.csi.azure.com"
411409
- "--volume-attach-limit=-1"
412410
- "--reserved-data-disk-slot-num=0"
413-
- "--cloud-config-secret-name=azure-cloud-provider"
414-
- "--cloud-config-secret-namespace=kube-system"
411+
- "--cloud-config-secret-name="
412+
- "--cloud-config-secret-namespace="
415413
- "--custom-user-agent="
416414
- "--user-agent-suffix=kops"
417415
- "--allow-empty-cloud-config=true"
418416
- "--support-zone=true"
419-
- "--get-node-info-from-labels=false"
417+
- "--get-node-info-from-labels=true"
420418
- "--get-nodeid-from-imds=false"
421419
- "--enable-otel-tracing=false"
422420
- "--metrics-address=0.0.0.0:29605"
@@ -438,7 +436,11 @@ spec:
438436
periodSeconds: 30
439437
env:
440438
- name: AZURE_CREDENTIAL_FILE
441-
value: /etc/kubernetes/cloud.config
439+
valueFrom:
440+
configMapKeyRef:
441+
name: azure-cred-file
442+
key: path
443+
optional: true
442444
- name: CSI_ENDPOINT
443445
value: unix:///csi/csi.sock
444446
- name: KUBE_NODE_NAME
@@ -729,7 +731,11 @@ spec:
729731
periodSeconds: 30
730732
env:
731733
- name: AZURE_CREDENTIAL_FILE
732-
value: /etc/kubernetes/cloud.config
734+
valueFrom:
735+
configMapKeyRef:
736+
name: azure-cred-file
737+
key: path
738+
optional: true
733739
- name: CSI_ENDPOINT
734740
value: unix:///csi/csi.sock
735741
- name: AZURE_GO_SDK_LOG_LEVEL
@@ -740,7 +746,6 @@ spec:
740746
name: socket-dir
741747
- mountPath: /etc/kubernetes/
742748
name: azure-cred
743-
readOnly: true
744749
resources:
745750
limits:
746751
memory: 500Mi

upup/pkg/fi/cloudup/template_functions.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -549,7 +549,12 @@ func (tf *TemplateFunctions) CloudControllerConfigArgv() ([]string, error) {
549549
argv = append(argv, fmt.Sprintf("--use-service-account-credentials=%t", true))
550550
}
551551

552-
if cluster.GetCloudProvider() != kops.CloudProviderHetzner {
552+
switch cluster.GetCloudProvider() {
553+
case kops.CloudProviderHetzner:
554+
// Hetzner does not use cloud config.
555+
case kops.CloudProviderAzure:
556+
argv = append(argv, "--cloud-config=/etc/kubernetes/azure.json")
557+
default:
553558
argv = append(argv, "--cloud-config=/etc/kubernetes/cloud.config")
554559
}
555560

0 commit comments

Comments
 (0)