Documentation
¶
Overview ¶
Package seedproxy contains a controller that is responsible for creating various resources in the master cluster to be able to access the other seeds clusters prometheus, leveraring `kubectl proxy` under the hood.
Index ¶
Constants ¶
const ( // ControllerName is the name of this very controller. ControllerName = "seed-proxy-controller" // MasterDeploymentName is the name used for deployments' // NameLabel value. MasterDeploymentName = "seed-proxy" // MasterServiceName is the name used for services' NameLabel value. MasterServiceName = "seed-proxy" // MasterGrafanaNamespace is the namespace inside the master // cluster where Grafana is installed and where the ConfigMap // should be created in. MasterGrafanaNamespace = "monitoring-master" // MasterGrafanaConfigMapName is the name used for the newly // created Grafana ConfigMap. MasterGrafanaConfigMapName = "grafana-seed-proxies" // SeedServiceAccountName is the name used for service accounts // inside the seed cluster. SeedServiceAccountName = "seed-proxy" // SeedMonitoringNamespace is the namespace inside the seed // cluster where Prometheus, Grafana etc. are installed. SeedMonitoringNamespace = "monitoring" // SeedPrometheusService is the service exposed by Prometheus. SeedPrometheusService = "prometheus:web" // SeedAlertmanagerService is the service exposed by Alertmanager. SeedAlertmanagerService = "alertmanager:web" // KubectlProxyPort is the port used by kubectl to provide the // proxy connection on. This is not the port on which any of the // target applications inside the seed (Prometheus, Grafana) // listen on. KubectlProxyPort = 8001 // NameLabel is the recommended name for an identifying label. NameLabel = "app.kubernetes.io/name" // InstanceLabel is the recommended label for distinguishing // multiple elements of the same name. The label is used to store // the seed cluster name. InstanceLabel = "app.kubernetes.io/instance" // ManagedByLabel is the label used to identify the resources // created by this controller. ManagedByLabel = "app.kubernetes.io/managed-by" )
Variables ¶
This section is empty.
Functions ¶
func Add ¶
func Add( ctx context.Context, mgr manager.Manager, numWorkers int, log *zap.SugaredLogger, namespace string, seedsGetter provider.SeedsGetter, seedKubeconfigGetter provider.SeedKubeconfigGetter, ) error
Add creates a new Seed-Proxy controller that is responsible for establishing ServiceAccounts in all seeds and setting up proxy pods to allow access to monitoring applications inside the seed clusters, like Prometheus and Grafana.
Types ¶
type Reconciler ¶
type Reconciler struct { ctrlruntimeclient.Client // contains filtered or unexported fields }
Reconciler (re)stores all components required for proxying requests to seed clusters. It also takes care of creating a nice ConfigMap for Grafana's provisioning mechanism.
func (*Reconciler) Reconcile ¶
func (r *Reconciler) Reconcile(ctx context.Context, request reconcile.Request) (reconcile.Result, error)
Reconcile acts upon requests and will restore the state of resources for the given seed cluster context (the request's name). Will return an error if any API operation failed, otherwise will return an empty dummy Result struct.