Skip to content

Commit

Permalink
Fix GKE detection
Browse files Browse the repository at this point in the history
Signed-off-by: Tamal Saha <[email protected]>
  • Loading branch information
tamalsaha committed Jun 18, 2024
1 parent 1afa487 commit 9e40e20
Showing 1 changed file with 18 additions and 3 deletions.
21 changes: 18 additions & 3 deletions cluster/detector.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,16 @@ import (

kmapi "kmodules.xyz/client-go/api/v1"

"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/discovery/cached/memory"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
"k8s.io/client-go/restmapper"
)

const (
aksDomain = ".azmk8s.io"
eksDomain = ".eks.amazonaws.com"
gkeDomain = ".gke.com"
exoscaleDomain = ".exo.io"
doDomain = ".k8s.ondigitalocean.com"
lkeDomain = ".linodelke.net"
Expand Down Expand Up @@ -93,8 +96,6 @@ func DetectProvider(cfg *rest.Config) (kmapi.HostingProvider, error) {
return kmapi.HostingProviderDigitalOcean, nil
} else if strings.HasSuffix(host, exoscaleDomain) {
return kmapi.HostingProviderExoscale, nil
} else if strings.HasSuffix(host, gkeDomain) {
return kmapi.HostingProviderGoogleCloud, nil
} else if strings.HasSuffix(host, lkeDomain) {
return kmapi.HostingProviderLinode, nil
} else if strings.HasSuffix(host, scalewayDomain) {
Expand All @@ -103,5 +104,19 @@ func DetectProvider(cfg *rest.Config) (kmapi.HostingProvider, error) {
return kmapi.HostingProviderVultr, nil
}
}

// GKE does not use any custom domain
kc, err := kubernetes.NewForConfig(cfg)
if err != nil {
return "", err
}
mapper := restmapper.NewDeferredDiscoveryRESTMapper(memory.NewMemCacheClient(kc))
if _, err := mapper.RESTMappings(schema.GroupKind{
Group: "networking.gke.io",
Kind: "Network",
}); err == nil {
return kmapi.HostingProviderGoogleCloud, nil
}

return "", nil
}

0 comments on commit 9e40e20

Please sign in to comment.