88 lines
5.7 KiB
Go
88 lines
5.7 KiB
Go
/*
|
|
Copyright 2023 The Kubernetes Authors.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
package names
|
|
|
|
// Canonical controller names
|
|
//
|
|
// NAMING CONVENTIONS
|
|
// 1. naming should be consistent across the controllers
|
|
// 2. use of shortcuts should be avoided, unless they are well-known non-Kubernetes shortcuts
|
|
// 3. Kubernetes' resources should be written together without a hyphen ("-")
|
|
//
|
|
// CHANGE POLICY
|
|
// The controller names should be treated as IDs.
|
|
// They can only be changed if absolutely necessary. For example if an inappropriate name was chosen in the past, or if the scope of the controller changes.
|
|
// When a name is changed, the old name should be aliased in app.ControllerDescriptor#GetAliases, while preserving all old aliases.
|
|
// This is done to achieve backwards compatibility
|
|
//
|
|
// USE CASES
|
|
// The following places should use the controller name constants, when:
|
|
// 1. defining a new app.ControllerDescriptor so it can be used in app.NewControllerDescriptors or app.KnownControllers:
|
|
// 2. used anywhere inside the controller itself:
|
|
// 2.1. [TODO] logging should use a canonical controller name when referencing a controller (Eg. Starting X, Shutting down X)
|
|
// 2.2. [TODO] emitted events should have an EventSource.Component set to the controller name (usually when initializing an EventRecorder)
|
|
// 2.3. [TODO] registering ControllerManagerMetrics with ControllerStarted and ControllerStopped
|
|
// 2.4. [TODO] calling WaitForNamedCacheSync
|
|
// 3. defining controller options for "--help" command or generated documentation
|
|
// 3.1. controller name should be used to create a pflag.FlagSet when registering controller options (the name is rendered in a controller flag group header) in options.KubeControllerManagerOptions
|
|
// 3.2. when defined flag's help mentions a controller name
|
|
// 4. defining a new service account for a new controller (old controllers may have inconsistent service accounts to stay backwards compatible)
|
|
const (
|
|
ServiceAccountTokenController = "serviceaccount-token-controller"
|
|
EndpointsController = "endpoints-controller"
|
|
EndpointSliceController = "endpointslice-controller"
|
|
EndpointSliceMirroringController = "endpointslice-mirroring-controller"
|
|
ReplicationControllerController = "replicationcontroller-controller"
|
|
PodGarbageCollectorController = "pod-garbage-collector-controller"
|
|
ResourceQuotaController = "resourcequota-controller"
|
|
NamespaceController = "namespace-controller"
|
|
ServiceAccountController = "serviceaccount-controller"
|
|
GarbageCollectorController = "garbage-collector-controller"
|
|
DaemonSetController = "daemonset-controller"
|
|
JobController = "job-controller"
|
|
DeploymentController = "deployment-controller"
|
|
ReplicaSetController = "replicaset-controller"
|
|
HorizontalPodAutoscalerController = "horizontal-pod-autoscaler-controller"
|
|
DisruptionController = "disruption-controller"
|
|
StatefulSetController = "statefulset-controller"
|
|
CronJobController = "cronjob-controller"
|
|
CertificateSigningRequestSigningController = "certificatesigningrequest-signing-controller"
|
|
CertificateSigningRequestApprovingController = "certificatesigningrequest-approving-controller"
|
|
CertificateSigningRequestCleanerController = "certificatesigningrequest-cleaner-controller"
|
|
TTLController = "ttl-controller"
|
|
BootstrapSignerController = "bootstrap-signer-controller"
|
|
TokenCleanerController = "token-cleaner-controller"
|
|
NodeIpamController = "node-ipam-controller"
|
|
NodeLifecycleController = "node-lifecycle-controller"
|
|
TaintEvictionController = "taint-eviction-controller"
|
|
PersistentVolumeBinderController = "persistentvolume-binder-controller"
|
|
PersistentVolumeAttachDetachController = "persistentvolume-attach-detach-controller"
|
|
PersistentVolumeExpanderController = "persistentvolume-expander-controller"
|
|
ClusterRoleAggregationController = "clusterrole-aggregation-controller"
|
|
PersistentVolumeClaimProtectionController = "persistentvolumeclaim-protection-controller"
|
|
PersistentVolumeProtectionController = "persistentvolume-protection-controller"
|
|
TTLAfterFinishedController = "ttl-after-finished-controller"
|
|
RootCACertificatePublisherController = "root-ca-certificate-publisher-controller"
|
|
EphemeralVolumeController = "ephemeral-volume-controller"
|
|
StorageVersionGarbageCollectorController = "storageversion-garbage-collector-controller"
|
|
ResourceClaimController = "resourceclaim-controller"
|
|
LegacyServiceAccountTokenCleanerController = "legacy-serviceaccount-token-cleaner-controller"
|
|
ValidatingAdmissionPolicyStatusController = "validatingadmissionpolicy-status-controller"
|
|
ServiceCIDRController = "service-cidr-controller"
|
|
StorageVersionMigratorController = "storage-version-migrator-controller"
|
|
)
|