mirror of
https://github.com/outbackdingo/talos-cloud-controller-manager.git
synced 2026-01-27 18:20:23 +00:00
fix: azure providerID
Set resourceGroup name to low case. It helps azure-node-autoscaller to find the node. Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
This commit is contained in:
5
.github/workflows/build-test.yaml
vendored
5
.github/workflows/build-test.yaml
vendored
@@ -40,6 +40,9 @@ jobs:
|
||||
version: v1.55.2
|
||||
args: --config=.golangci.yml
|
||||
- name: Build
|
||||
run: make build
|
||||
timeout-minutes: 10
|
||||
run: make images
|
||||
env:
|
||||
PLATFORM: "linux/amd64"
|
||||
- name: Test
|
||||
run: make unit
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# syntax = docker/dockerfile:1.4
|
||||
########################################
|
||||
|
||||
FROM --platform=${BUILDPLATFORM} golang:1.20-alpine AS builder
|
||||
FROM --platform=${BUILDPLATFORM} golang:1.21-alpine AS builder
|
||||
RUN apk update && apk add --no-cache make
|
||||
WORKDIR /src
|
||||
|
||||
|
||||
5
Makefile
5
Makefile
@@ -60,6 +60,11 @@ help: ## This help menu.
|
||||
build-all-archs:
|
||||
@for arch in $(ARCHS); do $(MAKE) ARCH=$${arch} build ; done
|
||||
|
||||
.PHONY: clean
|
||||
clean: ## Clean
|
||||
rm -rf dist/
|
||||
rm -f talos-cloud-controller-manager-*
|
||||
|
||||
.PHONY: build
|
||||
build: ## Build
|
||||
CGO_ENABLED=0 GOOS=$(OS) GOARCH=$(ARCH) go build -ldflags "$(GO_LDFLAGS)" \
|
||||
|
||||
@@ -5,6 +5,8 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/siderolabs/talos-cloud-controller-manager/pkg/utils/platform"
|
||||
|
||||
v1 "k8s.io/api/core/v1"
|
||||
cloudprovider "k8s.io/cloud-provider"
|
||||
cloudproviderapi "k8s.io/cloud-provider/api"
|
||||
@@ -56,6 +58,14 @@ func (i *instances) InstanceMetadata(ctx context.Context, node *v1.Node) (*cloud
|
||||
providerID = fmt.Sprintf("%s://%s/%s", ProviderName, meta.Platform, providedIP)
|
||||
}
|
||||
|
||||
// Fix for Azure, resource group name must be lower case.
|
||||
if meta.Platform == "azure" {
|
||||
providerID, err = platform.AzureConvertResourceGroupNameToLower(providerID)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error converting resource group name to lower case: %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
ifaces, err := i.c.getNodeIfaces(ctx, providedIP)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error getting interfaces list from the node %s: %w", node.Name, err)
|
||||
|
||||
42
pkg/utils/platform/azure.go
Normal file
42
pkg/utils/platform/azure.go
Normal file
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
Copyright 2017 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
// Package platform includes platform specific functions.
|
||||
package platform
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"regexp"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// https://github.com/kubernetes-sigs/cloud-provider-azure/blob/4192b264611aebef8070505dd56680a862acfbbf/pkg/provider/azure_wrap.go#L37
|
||||
var (
|
||||
azureResourceGroupNameRE = regexp.MustCompile(`.*/subscriptions/(?:.*)/resourceGroups/(.+)/providers/(?:.*)`)
|
||||
)
|
||||
|
||||
// AzureConvertResourceGroupNameToLower converts the resource group name in the resource ID to be lowered.
|
||||
// https://github.com/kubernetes-sigs/cloud-provider-azure/blob/4192b264611aebef8070505dd56680a862acfbbf/pkg/provider/azure_wrap.go#L91
|
||||
func AzureConvertResourceGroupNameToLower(resourceID string) (string, error) {
|
||||
matches := azureResourceGroupNameRE.FindStringSubmatch(resourceID)
|
||||
if len(matches) != 2 {
|
||||
return "", fmt.Errorf("%q isn't in Azure resource ID format %q", resourceID, azureResourceGroupNameRE.String())
|
||||
}
|
||||
|
||||
resourceGroup := matches[1]
|
||||
|
||||
return strings.Replace(resourceID, resourceGroup, strings.ToLower(resourceGroup), 1), nil
|
||||
}
|
||||
Reference in New Issue
Block a user