Skip to content

Commit

Permalink
Merge pull request #84 from mjura/fixing-rancher-integration
Browse files Browse the repository at this point in the history
Make Azure services compliant with Rancher
  • Loading branch information
mjura committed Jan 23, 2023
2 parents 09e8136 + 25914b6 commit b564a2b
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 9 deletions.
34 changes: 25 additions & 9 deletions controller/aks-cluster-config-handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ func (h *Handler) OnAksConfigChanged(_ string, config *aksv1.AKSClusterConfig) (
return nil, nil
}

if err := h.getClients(config); err != nil {
if err := h.getAzureClients(config); err != nil {
return config, fmt.Errorf("error getting Azure clients: %w", err)
}

Expand All @@ -143,7 +143,7 @@ func (h *Handler) OnAksConfigChanged(_ string, config *aksv1.AKSClusterConfig) (
}

func (h *Handler) OnAksConfigRemoved(_ string, config *aksv1.AKSClusterConfig) (*aksv1.AKSClusterConfig, error) {
if err := h.getClients(config); err != nil {
if err := h.getAzureClients(config); err != nil {
return config, fmt.Errorf("error getting Azure clients: %w", err)
}

Expand Down Expand Up @@ -344,7 +344,7 @@ func (h *Handler) checkAndUpdate(config *aksv1.AKSClusterConfig) (*aksv1.AKSClus
}

logrus.Infof("Checking configuration for cluster [%s]", config.Spec.ClusterName)
upstreamSpec, err := h.BuildUpstreamClusterState(ctx, &config.Spec)
upstreamSpec, err := BuildUpstreamClusterState(ctx, h.secretsCache, h.secrets, &config.Spec)
if err != nil {
return config, err
}
Expand Down Expand Up @@ -510,7 +510,7 @@ func (h *Handler) enqueueUpdate(config *aksv1.AKSClusterConfig) (*aksv1.AKSClust
// createCASecret creates a secret containing ca and endpoint. These can be used to create a kubeconfig via
// the go sdk
func (h *Handler) createCASecret(ctx context.Context, config *aksv1.AKSClusterConfig) error {
kubeConfig, err := h.GetClusterKubeConfig(ctx, &config.Spec)
kubeConfig, err := GetClusterKubeConfig(ctx, h.secretsCache, h.secrets, &config.Spec)
if err != nil {
return err
}
Expand Down Expand Up @@ -539,8 +539,16 @@ func (h *Handler) createCASecret(ctx context.Context, config *aksv1.AKSClusterCo
return err
}

func (h *Handler) GetClusterKubeConfig(ctx context.Context, spec *aksv1.AKSClusterConfigSpec) (restConfig *rest.Config, err error) {
accessProfile, err := h.azureClients.clustersClient.GetAccessProfile(ctx, spec.ResourceGroup, spec.ClusterName, "clusterAdmin")
func GetClusterKubeConfig(ctx context.Context, secretsCache wranglerv1.SecretCache, secretClient wranglerv1.SecretClient, spec *aksv1.AKSClusterConfigSpec) (restConfig *rest.Config, err error) {
credentials, err := aks.GetSecrets(secretsCache, secretClient, spec)
if err != nil {
return nil, err
}
resourceClusterClient, err := aks.NewClusterClient(credentials)
if err != nil {
return nil, err
}
accessProfile, err := resourceClusterClient.GetAccessProfile(ctx, spec.ResourceGroup, spec.ClusterName, "clusterAdmin")
if err != nil {
return nil, err
}
Expand All @@ -554,10 +562,18 @@ func (h *Handler) GetClusterKubeConfig(ctx context.Context, spec *aksv1.AKSClust

// buildUpstreamClusterState creates an AKSClusterConfigSpec (spec for the AKS cluster state) from the existing
// cluster configuration.
func (h *Handler) BuildUpstreamClusterState(ctx context.Context, spec *aksv1.AKSClusterConfigSpec) (*aksv1.AKSClusterConfigSpec, error) {
func BuildUpstreamClusterState(ctx context.Context, secretsCache wranglerv1.SecretCache, secretClient wranglerv1.SecretClient, spec *aksv1.AKSClusterConfigSpec) (*aksv1.AKSClusterConfigSpec, error) {
upstreamSpec := &aksv1.AKSClusterConfigSpec{}

clusterState, err := h.azureClients.clustersClient.Get(ctx, spec.ResourceGroup, spec.ClusterName)
credentials, err := aks.GetSecrets(secretsCache, secretClient, spec)
if err != nil {
return nil, err
}
resourceClusterClient, err := aks.NewClusterClient(credentials)
if err != nil {
return nil, err
}
clusterState, err := resourceClusterClient.Get(ctx, spec.ResourceGroup, spec.ClusterName)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -872,7 +888,7 @@ func (h *Handler) updateUpstreamClusterState(ctx context.Context, config *aksv1.
return config, nil
}

func (h *Handler) getClients(config *aksv1.AKSClusterConfig) error {
func (h *Handler) getAzureClients(config *aksv1.AKSClusterConfig) error {
credentials, err := aks.GetSecrets(h.secretsCache, h.secrets, &config.Spec)
if err != nil {
return fmt.Errorf("error getting credentials: %w", err)
Expand Down
13 changes: 13 additions & 0 deletions pkg/aks/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"fmt"
"time"

"github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2020-11-01/containerservice"
"github.com/Azure/go-autorest/autorest"
"github.com/Azure/go-autorest/autorest/adal"
"github.com/Azure/go-autorest/autorest/azure"
Expand Down Expand Up @@ -135,3 +136,15 @@ func GetCachedTenantID(secretClient secretClient, subscriptionID string, secret
}
return tenantID, err
}

func NewClusterClient(cred *Credentials) (*containerservice.ManagedClustersClient, error) {
authorizer, err := NewClientAuthorizer(cred)
if err != nil {
return nil, err
}

client := containerservice.NewManagedClustersClientWithBaseURI(to.String(cred.BaseURL), cred.SubscriptionID)
client.Authorizer = authorizer

return &client, nil
}

0 comments on commit b564a2b

Please sign in to comment.