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
|
version: v1.55.2
|
||||||
args: --config=.golangci.yml
|
args: --config=.golangci.yml
|
||||||
- name: Build
|
- name: Build
|
||||||
run: make build
|
timeout-minutes: 10
|
||||||
|
run: make images
|
||||||
|
env:
|
||||||
|
PLATFORM: "linux/amd64"
|
||||||
- name: Test
|
- name: Test
|
||||||
run: make unit
|
run: make unit
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# syntax = docker/dockerfile:1.4
|
# 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
|
RUN apk update && apk add --no-cache make
|
||||||
WORKDIR /src
|
WORKDIR /src
|
||||||
|
|
||||||
|
|||||||
5
Makefile
5
Makefile
@@ -60,6 +60,11 @@ help: ## This help menu.
|
|||||||
build-all-archs:
|
build-all-archs:
|
||||||
@for arch in $(ARCHS); do $(MAKE) ARCH=$${arch} build ; done
|
@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
|
.PHONY: build
|
||||||
build: ## Build
|
build: ## Build
|
||||||
CGO_ENABLED=0 GOOS=$(OS) GOARCH=$(ARCH) go build -ldflags "$(GO_LDFLAGS)" \
|
CGO_ENABLED=0 GOOS=$(OS) GOARCH=$(ARCH) go build -ldflags "$(GO_LDFLAGS)" \
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/siderolabs/talos-cloud-controller-manager/pkg/utils/platform"
|
||||||
|
|
||||||
v1 "k8s.io/api/core/v1"
|
v1 "k8s.io/api/core/v1"
|
||||||
cloudprovider "k8s.io/cloud-provider"
|
cloudprovider "k8s.io/cloud-provider"
|
||||||
cloudproviderapi "k8s.io/cloud-provider/api"
|
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)
|
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)
|
ifaces, err := i.c.getNodeIfaces(ctx, providedIP)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error getting interfaces list from the node %s: %w", node.Name, err)
|
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