botanist

package
v1.7.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 9, 2020 License: Apache-2.0, BSD-2-Clause, MIT, + 1 more Imports: 91 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// DNSIngressName is a constant for a DNS resources used for the ingress domain name.
	DNSIngressName = "ingress"
	// SecretLabelKeyManagedResource is a key for a label on a secret with the value 'managed-resource'.
	SecretLabelKeyManagedResource = "managed-resource"
)
View Source
const (
	// DefaultInterval is the default interval for retry operations.
	DefaultInterval = 5 * time.Second
	// DefaultSevereThreshold  is the default threshold until an error reported by another component is treated as 'severe'.
	DefaultSevereThreshold = 30 * time.Second
)
View Source
const (
	// Provider is the kubernetes provider label.
	Provider = "provider"
	// KubernetesProvider is the 'kubernetes' value of the Provider label.
	KubernetesProvider = "kubernetes"

	// KubeAggregatorAutoManaged is the label whether an APIService is automanaged by kube-aggregator.
	KubeAggregatorAutoManaged = autoregister.AutoRegisterManagedLabel

	// MetadataNameField ist the `metadata.name` field for a field selector.
	MetadataNameField = "metadata.name"
)
View Source
const (
	// DNSInternalName is a constant for a DNS resources used for the internal domain name.
	DNSInternalName = "internal"
	// DNSExternalName is a constant for a DNS resources used for the external domain name.
	DNSExternalName = "external"
	// DNSProviderRoleAdditional is a constant for additionally managed DNS providers.
	DNSProviderRoleAdditional = "managed-dns-provider"
)
View Source
const ControlPlaneDefaultTimeout = 3 * time.Minute

ControlPlaneDefaultTimeout is the default timeout and defines how long Gardener should wait for a successful reconciliation of a control plane resource.

View Source
const InfrastructureDefaultTimeout = 5 * time.Minute

InfrastructureDefaultTimeout is the default timeout and defines how long Gardener should wait for a successful reconciliation of an infrastructure resource.

View Source
const (
	// ManagedResourceName is the name of the managed resource used to deploy referenced resources to the Seed cluster.
	ManagedResourceName = "referenced-resources"
)
View Source
const WorkerDefaultTimeout = 10 * time.Minute

WorkerDefaultTimeout is the default timeout and defines how long Gardener should wait for a successful reconciliation of a worker resource.

Variables

View Source
var (
	// FinalizeAfterFiveMinutes is an option to finalize resources after five minutes.
	FinalizeAfterFiveMinutes = utilclient.FinalizeGracePeriodSeconds(5 * 60)

	// FinalizeAfterOneHour is an option to finalize resources after one hour.
	FinalizeAfterOneHour = utilclient.FinalizeGracePeriodSeconds(60 * 60)

	// ZeroGracePeriod is an option to delete resources with no grace period.
	ZeroGracePeriod = utilclient.DeleteWith{client.GracePeriodSeconds(0)}
	// GracePeriodFiveMinutes is an option to delete resources with a grace period of five minutes.
	GracePeriodFiveMinutes = utilclient.DeleteWith{client.GracePeriodSeconds(5 * 60)}

	// NotSystemComponent is a requirement that something doesn't have the GardenRole GardenRoleSystemComponent.
	NotSystemComponent = MustNewRequirement(v1beta1constants.DeprecatedGardenRole, selection.NotEquals, v1beta1constants.GardenRoleSystemComponent)
	// NoCleanupPrevention is a requirement that the ShootNoCleanup label of something is not true.
	NoCleanupPrevention = MustNewRequirement(common.ShootNoCleanup, selection.NotEquals, "true")
	// NotKubernetesProvider is a requirement that the Provider label of something is not KubernetesProvider.
	NotKubernetesProvider = MustNewRequirement(Provider, selection.NotEquals, KubernetesProvider)
	// NotKubeAggregatorAutoManaged is a requirement that something is not auto-managed by Kube-Aggregator.
	NotKubeAggregatorAutoManaged = MustNewRequirement(KubeAggregatorAutoManaged, selection.DoesNotExist)

	// CleanupSelector is a selector that excludes system components and all resources not considered for auto cleanup.
	CleanupSelector = labels.NewSelector().Add(NotSystemComponent).Add(NoCleanupPrevention)

	// NoCleanupPreventionListOption are CollectionMatching that exclude system components or non-auto cleaned up resource.
	NoCleanupPreventionListOption = client.MatchingLabelsSelector{Selector: CleanupSelector}

	// MutatingWebhookConfigurationCleanOption is the delete selector for MutatingWebhookConfigurations.
	MutatingWebhookConfigurationCleanOption = utilclient.ListWith{&NoCleanupPreventionListOption}

	// ValidatingWebhookConfigurationCleanOption is the delete selector for ValidatingWebhookConfigurations.
	ValidatingWebhookConfigurationCleanOption = utilclient.ListWith{&NoCleanupPreventionListOption}

	// CustomResourceDefinitionCleanOption is the delete selector for CustomResources.
	CustomResourceDefinitionCleanOption = utilclient.ListWith{&NoCleanupPreventionListOption}

	// DaemonSetCleanOption is the delete selector for DaemonSets.
	DaemonSetCleanOption = utilclient.ListWith{&NoCleanupPreventionListOption}

	// DeploymentCleanOption is the delete selector for Deployments.
	DeploymentCleanOption = utilclient.ListWith{&NoCleanupPreventionListOption}

	// StatefulSetCleanOption is the delete selector for StatefulSets.
	StatefulSetCleanOption = utilclient.ListWith{&NoCleanupPreventionListOption}

	// ServiceCleanOption is the delete selector for Services.
	ServiceCleanOption = utilclient.ListWith{
		client.MatchingLabelsSelector{
			Selector: labels.NewSelector().Add(NotKubernetesProvider, NotSystemComponent, NoCleanupPrevention),
		},
	}

	// NamespaceMatchingLabelsSelector is the delete label selector for Namespaces.
	NamespaceMatchingLabelsSelector = utilclient.ListWith{&NoCleanupPreventionListOption}

	// NamespaceMatchingFieldsSelector is the delete field selector for Namespaces.
	NamespaceMatchingFieldsSelector = utilclient.ListWith{
		client.MatchingFieldsSelector{
			Selector: fields.AndSelectors(
				fields.OneTermNotEqualSelector(MetadataNameField, metav1.NamespacePublic),
				fields.OneTermNotEqualSelector(MetadataNameField, metav1.NamespaceSystem),
				fields.OneTermNotEqualSelector(MetadataNameField, metav1.NamespaceDefault),
				fields.OneTermNotEqualSelector(MetadataNameField, corev1.NamespaceNodeLease),
			),
		},
	}

	// APIServiceCleanOption is the delete selector for APIServices.
	APIServiceCleanOption = utilclient.ListWith{
		client.MatchingLabelsSelector{
			Selector: labels.NewSelector().Add(NotSystemComponent, NotKubeAggregatorAutoManaged),
		},
	}

	// CronJobCleanOption is the delete selector for CronJobs.
	CronJobCleanOption = utilclient.ListWith{&NoCleanupPreventionListOption}

	// IngressCleanOption is the delete selector for Ingresses.
	IngressCleanOption = utilclient.ListWith{&NoCleanupPreventionListOption}

	// JobCleanOption is the delete selector for Jobs.
	JobCleanOption = utilclient.ListWith{&NoCleanupPreventionListOption}

	// PodCleanOption is the delete selector for Pods.
	PodCleanOption = utilclient.ListWith{&NoCleanupPreventionListOption}

	// ReplicaSetCleanOption is the delete selector for ReplicaSets.
	ReplicaSetCleanOption = utilclient.ListWith{&NoCleanupPreventionListOption}

	// ReplicationControllerCleanOption is the delete selector for ReplicationControllers.
	ReplicationControllerCleanOption = utilclient.ListWith{&NoCleanupPreventionListOption}

	// PersistentVolumeClaimCleanOption is the delete selector for PersistentVolumeClaims.
	PersistentVolumeClaimCleanOption = utilclient.ListWith{&NoCleanupPreventionListOption}

	// NamespaceErrorToleration are the errors to be tolerated during deletion.
	NamespaceErrorToleration = utilclient.TolerateErrors{apierrors.IsConflict}
)
View Source
var Now = time.Now

Now determines the current time.

Functions

func DetermineBackupSchedule added in v1.2.0

func DetermineBackupSchedule(shoot *gardencorev1beta1.Shoot, etcd *druidv1alpha1.Etcd) (string, error)

DetermineBackupSchedule determines the backup schedule based on the shoot creation and maintenance time window.

func DetermineDefragmentSchedule added in v1.2.0

func DetermineDefragmentSchedule(shoot *gardencorev1beta1.Shoot, etcd *druidv1alpha1.Etcd) (string, error)

DetermineDefragmentSchedule determines the defragment schedule based on the shoot creation and maintenance time window.

func GenerateDNSProviderName added in v1.1.0

func GenerateDNSProviderName(secretName, providerType string) string

GenerateDNSProviderName creates a name for the dns provider out of the passed `secretName` and `providerType`.

func IsProblematicWebhook

func IsProblematicWebhook(
	failurePolicy *admissionregistrationv1beta1.FailurePolicyType,
	objSelector *metav1.LabelSelector,
	nsSelector *metav1.LabelSelector,
	rules []admissionregistrationv1beta1.RuleWithOperations,
) bool

IsProblematicWebhook checks if a single webhook of the Shoot Cluster is problematic and the Shoot should therefore not be hibernated. Problematic webhooks are webhooks with rules for CREATE/UPDATE/* pods or nodes and failurePolicy=Fail/nil. If the Shoot contains such a webhook, we can never wake up this shoot cluster again as new nodes cannot get created/ready, or our system component pods cannot get created/ready (because the webhook's backing pod is not yet running).

func IsValidAuditPolicyVersion

func IsValidAuditPolicyVersion(shootVersion string, schemaVersion *schema.GroupVersionKind) (bool, error)

IsValidAuditPolicyVersion checks whether the api server support the provided audit policy apiVersion

func MustNewRequirement

func MustNewRequirement(key string, op selection.Operator, vals ...string) labels.Requirement

MustNewRequirement creates a labels.Requirement with the given values and panics if there is an error.

func PardonCondition added in v1.4.0

PardonCondition pardons the given condition if the Shoot is either in create (except successful create) or delete state.

func WaitUntilDeploymentScaledToDesiredReplicas added in v1.5.0

func WaitUntilDeploymentScaledToDesiredReplicas(ctx context.Context, client client.Client, namespace, name string, desiredReplicas int32) error

WaitUntilDeploymentScaledToDesiredReplicas waits for the number of available replicas to be equal to the deployment's desired replicas count.

Types

type Botanist

type Botanist struct {
	*operation.Operation
	DefaultDomainSecret *corev1.Secret
	// contains filtered or unexported fields
}

Botanist is a struct which has methods that perform cloud-independent operations for a Shoot cluster.

func New

func New(o *operation.Operation) (*Botanist, error)

New takes an operation object <o> and creates a new Botanist object. It checks whether the given Shoot DNS domain is covered by a default domain, and if so, it sets the <DefaultDomainSecret> attribute on the Botanist object.

func (*Botanist) APIServerSNIEnabled added in v1.7.0

func (b *Botanist) APIServerSNIEnabled() bool

APIServerSNIEnabled returns true if APIServerSNI feature gate is enabled and the shoot uses internal and external DNS.

func (*Botanist) AdditionalDNSProviders added in v1.5.0

func (b *Botanist) AdditionalDNSProviders(ctx context.Context, gardenClient, seedClient client.Client) (map[string]component.DeployWaiter, error)

AdditionalDNSProviders returns a map containing DNSProviders where the key is the provider name. Providers and DNSEntries which are no longer needed / or in use, contain a DeployWaiter which removes said DNSEntry / DNSProvider.

func (*Botanist) AnnotateBackupEntryInSeedForMigration added in v1.6.0

func (b *Botanist) AnnotateBackupEntryInSeedForMigration(ctx context.Context) error

AnnotateBackupEntryInSeedForMigration annotates the BackupEntry with gardener.cloud/operation=migrate

func (*Botanist) AnnotateExtensionCRsForMigration added in v1.5.0

func (b *Botanist) AnnotateExtensionCRsForMigration(ctx context.Context) (err error)

AnnotateExtensionCRsForMigration annotates extension CRs with migrate operation annotation

func (*Botanist) ApplyEncryptionConfiguration

func (b *Botanist) ApplyEncryptionConfiguration(ctx context.Context) error

ApplyEncryptionConfiguration creates or updates a secret on the Seed which contains the encryption configuration that is necessary to encrypt the Kubernetes secrets in etcd.

func (*Botanist) CheckHibernationPossible

func (b *Botanist) CheckHibernationPossible(ctx context.Context, constraint gardencorev1beta1.Condition) (*gardencorev1beta1.Condition, error)

CheckHibernationPossible checks the Shoot for problematic webhooks which could prevent wakeup after hibernation

func (*Botanist) CheckTunnelConnection added in v1.6.0

func (b *Botanist) CheckTunnelConnection(ctx context.Context, logger *logrus.Entry, tunnelName string) (bool, error)

CheckTunnelConnection checks if the tunnel connection between the control plane and the shoot networks is established.

func (*Botanist) CleanExtendedAPIs

func (b *Botanist) CleanExtendedAPIs(ctx context.Context) error

CleanExtendedAPIs removes API extensions like CRDs and API services from the Shoot cluster.

func (*Botanist) CleanKubernetesResources

func (b *Botanist) CleanKubernetesResources(ctx context.Context) error

CleanKubernetesResources deletes all the Kubernetes resources in the Shoot cluster other than those stored in the exceptions map. It will check whether all the Kubernetes resources in the Shoot cluster other than those stored in the exceptions map have been deleted. It will return an error in case it has not finished yet, and nil if all resources are gone.

func (*Botanist) CleanShootNamespaces

func (b *Botanist) CleanShootNamespaces(ctx context.Context) error

CleanShootNamespaces deletes all non-system namespaces in the Shoot cluster. It assumes that all workload resources are cleaned up in previous step(s).

func (*Botanist) CleanWebhooks

func (b *Botanist) CleanWebhooks(ctx context.Context) error

CleanWebhooks deletes all Webhooks in the Shoot cluster that are not being managed by the addon manager.

func (*Botanist) ComputeShootOperatingSystemConfig

func (b *Botanist) ComputeShootOperatingSystemConfig(ctx context.Context) error

ComputeShootOperatingSystemConfig generates the shoot operating system configuration. Both, the downloader and original configuration will be generated and stored in the shoot specific cloud config map for later usage.

func (*Botanist) ConstraintsChecks

func (b *Botanist) ConstraintsChecks(ctx context.Context, initializeShootClients func() error, hibernation gardencorev1beta1.Condition) gardencorev1beta1.Condition

ConstraintsChecks conducts the constraints checks on all the given constraints.

func (*Botanist) CreateETCDSnapshot added in v1.5.0

func (b *Botanist) CreateETCDSnapshot(ctx context.Context) error

CreateETCDSnapshot executes to the ETCD main Pod and triggers snapshot.

func (*Botanist) DefaultExternalDNSEntry added in v1.5.0

func (b *Botanist) DefaultExternalDNSEntry(seedClient client.Client) component.DeployWaiter

DefaultExternalDNSEntry returns DeployWaiter which removes the external DNSEntry.

func (*Botanist) DefaultExternalDNSProvider added in v1.5.0

func (b *Botanist) DefaultExternalDNSProvider(seedClient client.Client) component.DeployWaiter

DefaultExternalDNSProvider returns the external DNSProvider if external DNS is enabled and if not DeployWaiter which removes the external DNSProvider.

func (*Botanist) DefaultInternalDNSEntry added in v1.5.0

func (b *Botanist) DefaultInternalDNSEntry(seedClient client.Client) component.DeployWaiter

DefaultInternalDNSEntry returns DeployWaiter which removes the internal DNSEntry.

func (*Botanist) DefaultInternalDNSProvider added in v1.5.0

func (b *Botanist) DefaultInternalDNSProvider(seedClient client.Client) component.DeployWaiter

DefaultInternalDNSProvider returns the internal DNSProvider if internal DNS is enabled and if not, DeployWaiter which removes the internal DNSProvider.

func (*Botanist) DefaultKubeAPIServerSNI added in v1.7.0

func (b *Botanist) DefaultKubeAPIServerSNI() component.DeployWaiter

DefaultKubeAPIServerSNI returns a deployer for kube-apiserver SNI.

func (*Botanist) DefaultKubeAPIServerService added in v1.7.0

func (b *Botanist) DefaultKubeAPIServerService() component.DeployWaiter

DefaultKubeAPIServerService returns a deployer for kube-apiserver service.

func (*Botanist) DefaultNetwork added in v1.7.0

func (b *Botanist) DefaultNetwork(seedClient client.Client) component.DeployWaiter

DefaultNetwork creates the default deployer for the Network custom resource.

func (*Botanist) DefaultNginxIngressDNSEntry added in v1.5.0

func (b *Botanist) DefaultNginxIngressDNSEntry(seedClient client.Client) component.DeployWaiter

DefaultNginxIngressDNSEntry returns a Deployer which removes existing nginx ingress DNSEntry.

func (*Botanist) DeleteAllContainerRuntimeResources added in v1.3.0

func (b *Botanist) DeleteAllContainerRuntimeResources(ctx context.Context) error

DeleteAllContainerRuntimeResources deletes all container runtime resources from the Shoot namespace in the Seed.

func (*Botanist) DeleteAllExtensionCRs added in v1.5.0

func (b *Botanist) DeleteAllExtensionCRs(ctx context.Context) error

DeleteAllExtensionCRs deletes all extension CRs from the Shoot namespace

func (*Botanist) DeleteAllExtensionResources added in v1.3.0

func (b *Botanist) DeleteAllExtensionResources(ctx context.Context) error

DeleteAllExtensionResources deletes all extension resources from the Shoot namespace in the Seed.

func (*Botanist) DeleteAllManagedResourcesObjects added in v1.5.0

func (b *Botanist) DeleteAllManagedResourcesObjects(ctx context.Context) error

DeleteAllManagedResourcesObjects deletes all managed resources from the Shoot namespace in the Seed.

func (*Botanist) DeleteAllOperatingSystemConfigs added in v1.3.0

func (b *Botanist) DeleteAllOperatingSystemConfigs(ctx context.Context) error

DeleteAllOperatingSystemConfigs deletes all operating system config resources in the shoot namespace in the seed.

func (*Botanist) DeleteBackupEntryFromSeed added in v1.6.0

func (b *Botanist) DeleteBackupEntryFromSeed(ctx context.Context) error

DeleteBackupEntryFromSeed deletes the migrated BackupEntry from the Seed

func (*Botanist) DeleteClusterAutoscaler

func (b *Botanist) DeleteClusterAutoscaler(ctx context.Context) error

DeleteClusterAutoscaler deletes the cluster-autoscaler deployment in the Seed cluster which holds the Shoot's control plane.

func (*Botanist) DeleteDNSProviders added in v1.1.0

func (b *Botanist) DeleteDNSProviders(ctx context.Context) error

DeleteDNSProviders deletes all DNS providers in the shoot namespace of the seed.

func (*Botanist) DeleteKubeAPIServer

func (b *Botanist) DeleteKubeAPIServer(ctx context.Context) error

DeleteKubeAPIServer deletes the kube-apiserver deployment in the Seed cluster which holds the Shoot's control plane.

func (*Botanist) DeleteManagedResources

func (b *Botanist) DeleteManagedResources(ctx context.Context) error

DeleteManagedResources deletes all managed resources labeled with `origin=gardener` from the Shoot namespace in the Seed.

func (*Botanist) DeleteNamespace

func (b *Botanist) DeleteNamespace(ctx context.Context) error

DeleteNamespace deletes the namespace in the Seed cluster which holds the control plane components. The built-in garbage collection in Kubernetes will automatically delete all resources which belong to this namespace. This comprises volumes and load balancers as well.

func (*Botanist) DeleteSeedMonitoring

func (b *Botanist) DeleteSeedMonitoring(ctx context.Context) error

DeleteSeedMonitoring will delete the monitoring stack from the Seed cluster to avoid phantom alerts during the deletion process. More precisely, the Alertmanager and Prometheus StatefulSets will be deleted.

func (*Botanist) DeleteStaleContainerRuntimeResources added in v1.2.0

func (b *Botanist) DeleteStaleContainerRuntimeResources(ctx context.Context) error

DeleteStaleContainerRuntimeResources deletes unused container runtime resources from the shoot namespace in the seed.

func (*Botanist) DeleteStaleExtensionResources

func (b *Botanist) DeleteStaleExtensionResources(ctx context.Context) error

DeleteStaleExtensionResources deletes unused extensions from the shoot namespace in the seed.

func (*Botanist) DeleteStaleOperatingSystemConfigs added in v1.3.0

func (b *Botanist) DeleteStaleOperatingSystemConfigs(ctx context.Context, wantedOSCNames sets.String) error

DeleteStaleOperatingSystemConfigs deletes all unused operating system configs in the shoot seed namespace (i.e., those which are not part of the provided map <usedOscNames>.

func (*Botanist) DeployBackupEntryInGarden

func (b *Botanist) DeployBackupEntryInGarden(ctx context.Context) error

DeployBackupEntryInGarden deploys the BackupEntry resource in garden.

func (*Botanist) DeployCloudProviderSecret

func (b *Botanist) DeployCloudProviderSecret(ctx context.Context) error

DeployCloudProviderSecret creates or updates the cloud provider secret in the Shoot namespace in the Seed cluster.

func (*Botanist) DeployClusterAutoscaler

func (b *Botanist) DeployClusterAutoscaler(ctx context.Context) error

DeployClusterAutoscaler deploys the cluster-autoscaler into the Shoot namespace in the Seed cluster. It is responsible for automatically scaling the worker pools of the Shoot.

func (*Botanist) DeployContainerRuntimeResources added in v1.2.0

func (b *Botanist) DeployContainerRuntimeResources(ctx context.Context) error

DeployContainerRuntimeResources creates a `Container runtime` resource in the shoot namespace in the seed cluster. Deploys one resource per CRI per Worker. Gardener waits until an external controller has reconciled the resources successfully.

func (*Botanist) DeployControlPlane

func (b *Botanist) DeployControlPlane(ctx context.Context) error

DeployControlPlane creates the `ControlPlane` extension resource in the shoot namespace in the seed cluster. Gardener waits until an external controller did reconcile the cluster successfully.

func (*Botanist) DeployControlPlaneExposure

func (b *Botanist) DeployControlPlaneExposure(ctx context.Context) error

DeployControlPlaneExposure creates the `ControlPlane` extension resource with purpose `exposure` in the shoot namespace in the seed cluster. Gardener waits until an external controller did reconcile the cluster successfully.

func (*Botanist) DeployETCD

func (b *Botanist) DeployETCD(ctx context.Context) error

DeployETCD deploys two etcd clusters via StatefulSets. The first etcd cluster (called 'main') is used for all the data the Shoot Kubernetes cluster needs to store, whereas the second etcd luster (called 'events') is only used to store the events data. The objectstore is also set up to store the backups.

func (*Botanist) DeployExtensionResources

func (b *Botanist) DeployExtensionResources(ctx context.Context) error

DeployExtensionResources creates the `Extension` extension resource in the shoot namespace in the seed cluster. Gardener waits until an external controller did reconcile the cluster successfully.

func (*Botanist) DeployExternalDNS added in v1.5.0

func (b *Botanist) DeployExternalDNS(ctx context.Context) error

DeployExternalDNS deploys the external DNSProvider and DNSEntry.

func (*Botanist) DeployGardenerResourceManager

func (b *Botanist) DeployGardenerResourceManager(ctx context.Context) error

DeployGardenerResourceManager deploys the gardener-resource-manager which will use CRD resources in order to ensure that they exist in a cluster/reconcile them in case somebody changed something.

func (*Botanist) DeployInfrastructure

func (b *Botanist) DeployInfrastructure(ctx context.Context) error

DeployInfrastructure creates the `Infrastructure` extension resource in the shoot namespace in the seed cluster. Gardener waits until an external controller did reconcile the cluster successfully.

func (*Botanist) DeployInternalDNS added in v1.5.0

func (b *Botanist) DeployInternalDNS(ctx context.Context) error

DeployInternalDNS deploys the internal DNSProvider and DNSEntry.

func (*Botanist) DeployKubeAPIServer

func (b *Botanist) DeployKubeAPIServer(ctx context.Context) error

DeployKubeAPIServer deploys kube-apiserver deployment.

func (*Botanist) DeployKubeAPIServerSNI added in v1.7.0

func (b *Botanist) DeployKubeAPIServerSNI(ctx context.Context) error

DeployKubeAPIServerSNI deploys the kube-apiserver-sni chart.

func (*Botanist) DeployKubeControllerManager

func (b *Botanist) DeployKubeControllerManager(ctx context.Context) error

DeployKubeControllerManager deploys kube-controller-manager deployment.

func (*Botanist) DeployKubeScheduler

func (b *Botanist) DeployKubeScheduler(ctx context.Context) error

DeployKubeScheduler deploys kube-scheduler deployment.

func (*Botanist) DeployManagedResources

func (b *Botanist) DeployManagedResources(ctx context.Context) error

DeployManagedResources deploys all the ManagedResource CRDs for the gardener-resource-manager.

func (*Botanist) DeployNamespace

func (b *Botanist) DeployNamespace(ctx context.Context) error

DeployNamespace creates a namespace in the Seed cluster which is used to deploy all the control plane components for the Shoot cluster. Moreover, the cloud provider configuration and all the secrets will be stored as ConfigMaps/Secrets.

func (*Botanist) DeployNetwork

func (b *Botanist) DeployNetwork(ctx context.Context) error

DeployNetwork deploys the Network custom resource and triggers the restore operation in case the Shoot is in the restore phase of the control plane migration

func (*Botanist) DeployNetworkPolicies

func (b *Botanist) DeployNetworkPolicies(ctx context.Context) error

DeployNetworkPolicies creates a network policies in a Shoot cluster's namespace that deny all traffic and allow certain components to use annotations to declare their desire to transmit/receive traffic to/from other Pods/IP addresses.

func (*Botanist) DeployReferencedResources added in v1.6.0

func (b *Botanist) DeployReferencedResources(ctx context.Context) error

DeployReferencedResources reads all referenced resources from the Garden cluster and writes a managed resource to the Seed cluster.

func (*Botanist) DeploySecrets

func (b *Botanist) DeploySecrets(ctx context.Context) error

DeploySecrets takes all existing secrets from the ShootState resource and deploys them in the shoot's control plane.

func (*Botanist) DeploySeedLogging

func (b *Botanist) DeploySeedLogging(ctx context.Context) error

DeploySeedLogging will install the Helm release "seed-bootstrap/charts/elastic-kibana-curator" in the Seed clusters.

func (*Botanist) DeploySeedMonitoring

func (b *Botanist) DeploySeedMonitoring(ctx context.Context) error

DeploySeedMonitoring will install the Helm release "seed-monitoring" in the Seed clusters. It comprises components to monitor the Shoot cluster whose control plane runs in the Seed cluster.

func (*Botanist) DeployVerticalPodAutoscaler added in v1.7.0

func (b *Botanist) DeployVerticalPodAutoscaler(ctx context.Context) error

DeployVerticalPodAutoscaler deploys the VPA into the shoot namespace in the seed.

func (*Botanist) DeployWorker

func (b *Botanist) DeployWorker(ctx context.Context) error

DeployWorker creates the `Worker` extension resource in the shoot namespace in the seed cluster. Gardener waits until an external controller did reconcile the resource successfully.

func (*Botanist) DestroyControlPlane

func (b *Botanist) DestroyControlPlane(ctx context.Context) error

DestroyControlPlane deletes the `ControlPlane` extension resource in the shoot namespace in the seed cluster, and it waits for a maximum of 10m until it is deleted.

func (*Botanist) DestroyControlPlaneExposure

func (b *Botanist) DestroyControlPlaneExposure(ctx context.Context) error

DestroyControlPlaneExposure deletes the `ControlPlane` extension resource with purpose `exposure` in the shoot namespace in the seed cluster, and it waits for a maximum of 10m until it is deleted.

func (*Botanist) DestroyInfrastructure

func (b *Botanist) DestroyInfrastructure(ctx context.Context) error

DestroyInfrastructure deletes the `Infrastructure` extension resource in the shoot namespace in the seed cluster, and it waits for a maximum of 10m until it is deleted.

func (*Botanist) DestroyReferencedResources added in v1.6.0

func (b *Botanist) DestroyReferencedResources(ctx context.Context) error

DestroyReferencedResources deletes the managed resource containing referenced resources from the Seed cluster.

func (*Botanist) DestroyWorker

func (b *Botanist) DestroyWorker(ctx context.Context) error

DestroyWorker deletes the `Worker` extension resource in the shoot namespace in the seed cluster, and it waits for a maximum of 5m until it is deleted.

func (*Botanist) EnsureIngressDNSRecord

func (b *Botanist) EnsureIngressDNSRecord(ctx context.Context) error

EnsureIngressDNSRecord ensures the nginx DNSEntry and waits for completion.

func (*Botanist) ExternalDNS added in v1.5.0

func (b *Botanist) ExternalDNS() component.Deployer

ExternalDNS returns the external DNSProvider which deploys / destroys the external DNSProvider and DNSEntry.

func (*Botanist) GenerateAndSaveSecrets added in v1.7.0

func (b *Botanist) GenerateAndSaveSecrets(ctx context.Context) error

GenerateAndSaveSecrets creates a CA certificate for the Shoot cluster and uses it to sign the server certificate used by the kube-apiserver, and all client certificates used for communication. It also creates RSA key pairs for SSH connections to the nodes/VMs and for the VPN tunnel. Moreover, basic authentication credentials are computed which will be used to secure the Ingress resources and the kube-apiserver itself. Server certificates for the exposed monitoring endpoints (via Ingress) are generated as well. In the end it saves the generated secrets in the ShootState

func (*Botanist) GenerateEncryptionConfiguration added in v1.4.0

func (b *Botanist) GenerateEncryptionConfiguration(ctx context.Context) error

GenerateEncryptionConfiguration generates new encryption configuration data or syncs it from the etcd encryption configuration secret if it already exists.

func (*Botanist) GenerateKubernetesDashboardConfig

func (b *Botanist) GenerateKubernetesDashboardConfig() (map[string]interface{}, error)

GenerateKubernetesDashboardConfig generates the values which are required to render the chart of the kubernetes-dashboard properly.

func (*Botanist) GenerateNginxIngressConfig

func (b *Botanist) GenerateNginxIngressConfig() (map[string]interface{}, error)

GenerateNginxIngressConfig generates the values which are required to render the chart of the nginx-ingress properly.

func (*Botanist) HealthChecks

func (b *Botanist) HealthChecks(initializeShootClients func() error, thresholdMappings map[gardencorev1beta1.ConditionType]time.Duration, healthCheckOutdatedThreshold *metav1.Duration, apiserverAvailability, controlPlane, nodes, systemComponents gardencorev1beta1.Condition) (gardencorev1beta1.Condition, gardencorev1beta1.Condition, gardencorev1beta1.Condition, gardencorev1beta1.Condition)

HealthChecks conducts the health checks on all the given conditions.

func (*Botanist) HibernateControlPlane

func (b *Botanist) HibernateControlPlane(ctx context.Context) error

HibernateControlPlane hibernates the entire control plane if the shoot shall be hibernated.

func (*Botanist) InternalDNS added in v1.5.0

func (b *Botanist) InternalDNS() component.Deployer

InternalDNS returns the internal DNSProvider which deploys / destroys the internal DNSProvider and DNSEntry.

func (*Botanist) KeepManagedResourcesObjects added in v1.5.0

func (b *Botanist) KeepManagedResourcesObjects(ctx context.Context) error

KeepManagedResourcesObjects sets ManagedResource.Spec.KeepObjects to true.

func (*Botanist) LoadExistingSecretsIntoShootState added in v1.7.0

func (b *Botanist) LoadExistingSecretsIntoShootState(ctx context.Context) error

LoadExistingSecretsIntoShootState loads secrets which are already present in the Shoot's Control Plane extracts their metadata and saves them into the ShootState. TODO: This step can be removed in a future version, once secrets for all existing shoots have been synced to the ShootState.

func (*Botanist) MaintainShootAnnotations added in v1.0.0

func (b *Botanist) MaintainShootAnnotations(ctx context.Context) error

MaintainShootAnnotations ensures that given deprecated Shoot annotations are maintained also with their new equivalent in the Shoot metadata.

func (*Botanist) NeedsAdditionalDNSProviders added in v1.5.0

func (b *Botanist) NeedsAdditionalDNSProviders() bool

NeedsAdditionalDNSProviders returns true if additional DNS providers are needed.

func (*Botanist) NeedsExternalDNS added in v1.5.0

func (b *Botanist) NeedsExternalDNS() bool

NeedsExternalDNS returns true if the Shoot cluster needs external DNS.

func (*Botanist) NeedsInternalDNS added in v1.5.0

func (b *Botanist) NeedsInternalDNS() bool

NeedsInternalDNS returns true if the Shoot cluster needs internal DNS.

func (*Botanist) PerformGarbageCollectionSeed

func (b *Botanist) PerformGarbageCollectionSeed() error

PerformGarbageCollectionSeed performs garbage collection in the Shoot namespace in the Seed cluster

func (*Botanist) PerformGarbageCollectionShoot

func (b *Botanist) PerformGarbageCollectionShoot() error

PerformGarbageCollectionShoot performs garbage collection in the kube-system namespace in the Shoot cluster, i.e., it deletes evicted pods (mitigation for https://github.com/kubernetes/kubernetes/issues/55051).

func (*Botanist) PersistEncryptionConfiguration added in v1.4.0

func (b *Botanist) PersistEncryptionConfiguration(ctx context.Context) error

PersistEncryptionConfiguration adds the encryption configuration to the ShootState.

func (*Botanist) PrepareKubeAPIServerForMigration added in v1.6.0

func (b *Botanist) PrepareKubeAPIServerForMigration(ctx context.Context) error

PrepareKubeAPIServerForMigration deletes the kube-apiserver and deletes its hvpa

func (*Botanist) RemoveOldETCDEncryptionSecretFromGardener added in v1.4.0

func (b *Botanist) RemoveOldETCDEncryptionSecretFromGardener(ctx context.Context) error

RemoveOldETCDEncryptionSecretFromGardener removes the etcd encryption configuration secret from the Shoot's namespace in the garden cluster as it is no longer necessary. This step can be removed in the future after all secrets have been cleaned up.

func (*Botanist) RequiredExtensionsReady added in v1.3.0

func (b *Botanist) RequiredExtensionsReady(ctx context.Context) error

RequiredExtensionsReady checks whether all required extensions needed for a shoot operation exist and are ready.

func (*Botanist) RestartControlPlanePods added in v1.2.0

func (b *Botanist) RestartControlPlanePods(ctx context.Context) error

RestartControlPlanePods restarts (deletes) pods of the shoot control plane.

func (*Botanist) RewriteShootSecretsIfEncryptionConfigurationChanged

func (b *Botanist) RewriteShootSecretsIfEncryptionConfigurationChanged(ctx context.Context) error

RewriteShootSecretsIfEncryptionConfigurationChanged rewrites the secrets in the Shoot if the etcd encryption configuration changed. Rewriting here means that a patch request is sent that forces the etcd to encrypt them with the new configuration.

func (*Botanist) ScaleETCDToOne added in v1.5.0

func (b *Botanist) ScaleETCDToOne(ctx context.Context) error

ScaleETCDToOne scales ETCD main and events replicas to one

func (*Botanist) ScaleETCDToZero added in v1.5.0

func (b *Botanist) ScaleETCDToZero(ctx context.Context) error

ScaleETCDToZero scales ETCD main and events to zero

func (*Botanist) ScaleGardenerResourceManagerToOne added in v1.5.0

func (b *Botanist) ScaleGardenerResourceManagerToOne(ctx context.Context) error

ScaleGardenerResourceManagerToOne scales the gardener-resource-manager deployment

func (*Botanist) SetNginxIngressAddress added in v1.5.0

func (b *Botanist) SetNginxIngressAddress(address string, seedClient client.Client)

SetNginxIngressAddress sets the IP address of the API server's LoadBalancer.

func (*Botanist) SyncShootCredentialsToGarden

func (b *Botanist) SyncShootCredentialsToGarden(ctx context.Context) error

SyncShootCredentialsToGarden copies the kubeconfig generated for the user, the SSH keypair to the project namespace in the Garden cluster and the monitoring credentials for the user-facing monitoring stack are also copied.

func (*Botanist) UpdateShootAndCluster added in v1.7.0

func (b *Botanist) UpdateShootAndCluster(ctx context.Context, shoot *gardencorev1beta1.Shoot, transform func() error) error

UpdateShootAndCluster updates the given `core.gardener.cloud/v1beta1.Shoot` resource in the garden cluster after applying the given transform function to it. It will also update the `shoot` field in the extensions.gardener.cloud/v1alpha1.Cluster` resource in the seed cluster with the updated shoot information.

func (*Botanist) WaitForBackupEntryOperationMigrateToSucceed added in v1.6.0

func (b *Botanist) WaitForBackupEntryOperationMigrateToSucceed(ctx context.Context) error

WaitForBackupEntryOperationMigrateToSucceed waits until BackupEntry has lastOperation equal to Migrate=Succeeded

func (*Botanist) WaitForControllersToBeActive

func (b *Botanist) WaitForControllersToBeActive(ctx context.Context) error

WaitForControllersToBeActive checks whether kube-controller-manager has recently written to the Endpoint object holding the leader information. If yes, it is active.

func (*Botanist) WaitForExtensionsOperationMigrateToSucceed added in v1.5.0

func (b *Botanist) WaitForExtensionsOperationMigrateToSucceed(ctx context.Context) error

WaitForExtensionsOperationMigrateToSucceed waits until extension CRs has lastOperation Migrate Succeeded

func (*Botanist) WaitUntilAllManagedResourcesDeleted added in v1.5.0

func (b *Botanist) WaitUntilAllManagedResourcesDeleted(ctx context.Context) error

WaitUntilAllManagedResourcesDeleted waits until all managed resources are gone or the context is cancelled.

func (*Botanist) WaitUntilBackupEntryInGardenReconciled

func (b *Botanist) WaitUntilBackupEntryInGardenReconciled(ctx context.Context) error

WaitUntilBackupEntryInGardenReconciled waits until the backup entry within the garden cluster has been reconciled.

func (*Botanist) WaitUntilClusterAutoscalerDeleted

func (b *Botanist) WaitUntilClusterAutoscalerDeleted(ctx context.Context) error

WaitUntilClusterAutoscalerDeleted waits until the cluster-autoscaler deployment within the Seed cluster has been deleted.

func (*Botanist) WaitUntilContainerRuntimeResourcesDeleted added in v1.2.0

func (b *Botanist) WaitUntilContainerRuntimeResourcesDeleted(ctx context.Context) error

WaitUntilContainerRuntimeResourcesDeleted waits until all container runtime resources are gone or the context is cancelled.

func (*Botanist) WaitUntilContainerRuntimeResourcesReady added in v1.2.0

func (b *Botanist) WaitUntilContainerRuntimeResourcesReady(ctx context.Context) error

WaitUntilContainerRuntimeResourcesReady waits until all container runtime resources report `Succeeded` in their last operation state. The state must be reported before the passed context is cancelled or a container runtime's timeout has been reached. As soon as one timeout has been overstepped the function returns an error, further waits on container runtime will be aborted.

func (*Botanist) WaitUntilControlPlaneDeleted

func (b *Botanist) WaitUntilControlPlaneDeleted(ctx context.Context) error

WaitUntilControlPlaneDeleted waits until the control plane resource has been deleted.

func (*Botanist) WaitUntilControlPlaneExposureDeleted

func (b *Botanist) WaitUntilControlPlaneExposureDeleted(ctx context.Context) error

WaitUntilControlPlaneExposureDeleted waits until the control plane resource with purpose `exposure` has been deleted.

func (*Botanist) WaitUntilControlPlaneExposureReady

func (b *Botanist) WaitUntilControlPlaneExposureReady(ctx context.Context) error

WaitUntilControlPlaneExposureReady waits until the control plane resource with purpose `exposure` has been reconciled successfully.

func (*Botanist) WaitUntilControlPlaneReady

func (b *Botanist) WaitUntilControlPlaneReady(ctx context.Context) error

WaitUntilControlPlaneReady waits until the control plane resource has been reconciled successfully.

func (*Botanist) WaitUntilEndpointsDoNotContainPodIPs

func (b *Botanist) WaitUntilEndpointsDoNotContainPodIPs(ctx context.Context) error

WaitUntilEndpointsDoNotContainPodIPs waits until all endpoints in the shoot cluster to not contain any IPs from the Shoot's PodCIDR.

func (*Botanist) WaitUntilEtcdReady

func (b *Botanist) WaitUntilEtcdReady(ctx context.Context) error

WaitUntilEtcdReady waits until the etcd statefulsets indicate readiness in their statuses.

func (*Botanist) WaitUntilExtensionResourcesDeleted

func (b *Botanist) WaitUntilExtensionResourcesDeleted(ctx context.Context) error

WaitUntilExtensionResourcesDeleted waits until all extension resources are gone or the context is cancelled.

func (*Botanist) WaitUntilExtensionResourcesReady

func (b *Botanist) WaitUntilExtensionResourcesReady(ctx context.Context) error

WaitUntilExtensionResourcesReady waits until all extension resources report `Succeeded` in their last operation state. The state must be reported before the passed context is cancelled or an extension's timeout has been reached. As soon as one timeout has been overstepped the function returns an error, further waits on extensions will be aborted.

func (*Botanist) WaitUntilInfrastructureDeleted

func (b *Botanist) WaitUntilInfrastructureDeleted(ctx context.Context) error

WaitUntilInfrastructureDeleted waits until the infrastructure resource has been deleted.

func (*Botanist) WaitUntilInfrastructureReady

func (b *Botanist) WaitUntilInfrastructureReady(ctx context.Context) error

WaitUntilInfrastructureReady waits until the infrastructure resource has been reconciled successfully.

func (*Botanist) WaitUntilKubeAPIServerIsDeleted added in v1.6.0

func (b *Botanist) WaitUntilKubeAPIServerIsDeleted(ctx context.Context) error

WaitUntilKubeAPIServerIsDeleted waits until the kube-apiserver is deleted

func (*Botanist) WaitUntilKubeAPIServerReady

func (b *Botanist) WaitUntilKubeAPIServerReady(ctx context.Context) error

WaitUntilKubeAPIServerReady waits until the kube-apiserver pod(s) indicate readiness in their statuses.

func (*Botanist) WaitUntilManagedResourcesDeleted

func (b *Botanist) WaitUntilManagedResourcesDeleted(ctx context.Context) error

WaitUntilManagedResourcesDeleted waits until all managed resources labeled with `origin=gardener` are gone or the context is cancelled.

func (*Botanist) WaitUntilNginxIngressServiceIsReady added in v1.5.0

func (b *Botanist) WaitUntilNginxIngressServiceIsReady(ctx context.Context) error

WaitUntilNginxIngressServiceIsReady waits until the external load balancer of the nginx ingress controller has been created (i.e., its ingress information has been updated in the service status).

func (*Botanist) WaitUntilNoPodRunning

func (b *Botanist) WaitUntilNoPodRunning(ctx context.Context) error

WaitUntilNoPodRunning waits until there is no running Pod in the shoot cluster.

func (*Botanist) WaitUntilNodesDeleted

func (b *Botanist) WaitUntilNodesDeleted(ctx context.Context) error

WaitUntilNodesDeleted waits until no nodes exist in the shoot cluster anymore.

func (*Botanist) WaitUntilRequiredExtensionsReady added in v1.3.0

func (b *Botanist) WaitUntilRequiredExtensionsReady(ctx context.Context) error

WaitUntilRequiredExtensionsReady waits until all the extensions required for a shoot reconciliation are ready

func (*Botanist) WaitUntilSeedNamespaceDeleted

func (b *Botanist) WaitUntilSeedNamespaceDeleted(ctx context.Context) error

WaitUntilSeedNamespaceDeleted waits until the namespace of the Shoot cluster within the Seed cluster is deleted.

func (*Botanist) WaitUntilTunnelConnectionExists added in v1.6.0

func (b *Botanist) WaitUntilTunnelConnectionExists(ctx context.Context) error

WaitUntilTunnelConnectionExists waits until a port forward connection to the tunnel pod (vpn-shoot or konnectivity-agent) in the kube-system namespace of the Shoot cluster can be established.

func (*Botanist) WaitUntilWorkerDeleted

func (b *Botanist) WaitUntilWorkerDeleted(ctx context.Context) error

WaitUntilWorkerDeleted waits until the worker extension resource has been deleted.

func (*Botanist) WaitUntilWorkerReady

func (b *Botanist) WaitUntilWorkerReady(ctx context.Context) error

WaitUntilWorkerReady waits until the worker extension resource has been successfully reconciled.

func (*Botanist) WakeUpControlPlane

func (b *Botanist) WakeUpControlPlane(ctx context.Context) error

WakeUpControlPlane scales the replicas to 1 for the following deployments which are needed in case of shoot deletion: * etcd-events * etcd-main * kube-apiserver * kube-controller-manager

func (*Botanist) WakeUpKubeAPIServer added in v1.6.0

func (b *Botanist) WakeUpKubeAPIServer(ctx context.Context) error

WakeUpKubeAPIServer creates a service and ensures API Server is scaled up

type ExtensionCondition added in v1.4.0

type ExtensionCondition struct {
	Condition          gardencorev1beta1.Condition
	ExtensionType      string
	ExtensionName      string
	ExtensionNamespace string
}

ExtensionCondition contains information about the extension type, name, namespace and the respective condition object.

type HealthChecker

type HealthChecker struct {
	// contains filtered or unexported fields
}

HealthChecker contains the condition thresholds.

func NewHealthChecker

func NewHealthChecker(conditionThresholds map[gardencorev1beta1.ConditionType]time.Duration, healthCheckOutdatedThreshold *metav1.Duration, lastOperation *gardencorev1beta1.LastOperation) *HealthChecker

NewHealthChecker creates a new health checker.

func (*HealthChecker) CheckClusterNodes

func (b *HealthChecker) CheckClusterNodes(
	workers []gardencorev1beta1.Worker,
	condition gardencorev1beta1.Condition,
	nodeLister kutil.NodeLister,
) (*gardencorev1beta1.Condition, error)

CheckClusterNodes checks whether cluster nodes in the given listers are healthy and within the desired range. Additional checks are executed in the provider extension

func (*HealthChecker) CheckControlPlane

func (b *HealthChecker) CheckControlPlane(
	shoot *gardencorev1beta1.Shoot,
	namespace string,
	condition gardencorev1beta1.Condition,
	deploymentLister kutil.DeploymentLister,
	etcdLister kutil.EtcdLister,
	workerLister kutil.WorkerLister,
) (*gardencorev1beta1.Condition, error)

CheckControlPlane checks whether the control plane components in the given listers are complete and healthy.

func (*HealthChecker) CheckExtensionCondition

func (b *HealthChecker) CheckExtensionCondition(condition gardencorev1beta1.Condition, extensionsConditions []ExtensionCondition) *gardencorev1beta1.Condition

CheckExtensionCondition checks whether the conditions provided by extensions are healthy.

func (*HealthChecker) CheckLoggingControlPlane

func (b *HealthChecker) CheckLoggingControlPlane(
	namespace string,
	isTestingShoot bool,
	condition gardencorev1beta1.Condition,
	deploymentLister kutil.DeploymentLister,
	statefulSetLister kutil.StatefulSetLister,
) (*gardencorev1beta1.Condition, error)

CheckLoggingControlPlane checks whether the logging components in the given listers are complete and healthy.

func (*HealthChecker) CheckManagedResource added in v1.6.0

CheckManagedResource checks the conditions of the given managed resource and reflects the state in the returned condition.

func (*HealthChecker) CheckMonitoringControlPlane

func (b *HealthChecker) CheckMonitoringControlPlane(
	namespace string,
	isTestingShoot bool,
	wantsAlertmanager bool,
	condition gardencorev1beta1.Condition,
	deploymentLister kutil.DeploymentLister,
	statefulSetLister kutil.StatefulSetLister,
) (*gardencorev1beta1.Condition, error)

CheckMonitoringControlPlane checks whether the monitoring in the given listers are complete and healthy.

func (*HealthChecker) FailedCondition

func (b *HealthChecker) FailedCondition(condition gardencorev1beta1.Condition, reason, message string, codes ...gardencorev1beta1.ErrorCode) gardencorev1beta1.Condition

FailedCondition returns a progressing or false condition depending on the progressing threshold.

Directories

Path Synopsis
fake
Package fake is a generated GoMock package.
Package fake is a generated GoMock package.
extensions
dns
this file is copy of https://github.com/kubernetes/kubernetes/blob/f247e75980061d7cf83c63c0fb1f12c7060c599f/staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/rules/rules.go with some modifications for the webhook matching use-case.
this file is copy of https://github.com/kubernetes/kubernetes/blob/f247e75980061d7cf83c63c0fb1f12c7060c599f/staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/rules/rules.go with some modifications for the webhook matching use-case.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL