Added support for configuration per project

Shoots with type==Infrastructure will not be considered to be added to Fleet
This commit is contained in:
Jakub Vavřík
2021-02-18 08:08:06 +01:00
parent 46ab0c5eae
commit d2d7872f67
16 changed files with 378 additions and 117 deletions

View File

@@ -2,7 +2,13 @@ package controller
import (
"context"
b64 "encoding/base64"
"github.com/go-logr/logr"
"k8s.io/client-go/tools/clientcmd"
fleetConfig "github.com/javamachr/gardener-extension-shoot-fleet-agent/pkg/apis/config"
clientset "github.com/javamachr/gardener-extension-shoot-fleet-agent/pkg/client/fleet/clientset/versioned"
"github.com/rancher/fleet/pkg/apis/fleet.cattle.io/v1alpha1"
corev1 "k8s.io/api/core/v1"
@@ -66,3 +72,31 @@ func (f *FleetManager) CreateKubeconfigSecret(ctx context.Context, secret *corev
func (f *FleetManager) DeleteKubeconfigSecret(ctx context.Context, secretName string) error {
return f.secretClient.CoreV1().Secrets(f.namespace).Delete(ctx, secretName, metav1.DeleteOptions{})
}
// createFleetManager creates fleet manager for given configuration
func createFleetManager(config fleetConfig.ProjectConfig, logger logr.Logger) *FleetManager {
logger.Info("Creating Fleet manager for config", "config", config)
fleetKubeConfig, err := b64.StdEncoding.DecodeString(config.Kubeconfig)
if err != nil {
panic(err)
}
var kubeconfigPath string
if kubeconfigPath, err = writeKubeconfigToTempFile(fleetKubeConfig); err != nil {
panic(err)
}
logger.Info("Written kubeconfig to temp", "file", kubeconfigPath)
fleetClientConfig, err := clientcmd.BuildConfigFromFlags("", kubeconfigPath)
if err != nil {
panic(err)
}
logger.Info("Fleet k8s client successfully built.")
var fleetNamespace = "clusters"
if len(config.Namespace) != 0 {
fleetNamespace = config.Namespace
}
fleetManager, err := NewManagerForConfig(fleetClientConfig, fleetNamespace)
if err != nil {
panic(err)
}
return fleetManager
}