mirror of https://github.com/k3s-io/k3s
92 lines
5.3 KiB
Go
92 lines
5.3 KiB
Go
![]() |
/*
|
||
![]() |
Copyright 2016 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 options
|
||
|
|
||
|
import (
|
||
|
"time"
|
||
|
|
||
|
"github.com/spf13/pflag"
|
||
|
)
|
||
|
|
||
|
// VolumeConfigFlags is used to bind CLI flags to variables. This top-level struct contains *all* enumerated
|
||
|
// CLI flags meant to configure all volume plugins. From this config, the binary will create many instances
|
||
|
// of volume.VolumeConfig which are then passed to the appropriate plugin. The ControllerManager binary is the only
|
||
|
// part of the code which knows what plugins are supported and which CLI flags correspond to each plugin.
|
||
|
type VolumeConfigFlags struct {
|
||
![]() |
PersistentVolumeRecyclerMaximumRetry int
|
||
![]() |
PersistentVolumeRecyclerMinimumTimeoutNFS int
|
||
|
PersistentVolumeRecyclerPodTemplateFilePathNFS string
|
||
|
PersistentVolumeRecyclerIncrementTimeoutNFS int
|
||
|
PersistentVolumeRecyclerPodTemplateFilePathHostPath string
|
||
|
PersistentVolumeRecyclerMinimumTimeoutHostPath int
|
||
|
PersistentVolumeRecyclerIncrementTimeoutHostPath int
|
||
|
EnableHostPathProvisioning bool
|
||
![]() |
EnableDynamicProvisioning bool
|
||
![]() |
}
|
||
|
|
||
|
type PersistentVolumeControllerOptions struct {
|
||
|
PVClaimBinderSyncPeriod time.Duration
|
||
|
VolumeConfigFlags VolumeConfigFlags
|
||
|
}
|
||
|
|
||
|
func NewPersistentVolumeControllerOptions() PersistentVolumeControllerOptions {
|
||
|
return PersistentVolumeControllerOptions{
|
||
![]() |
PVClaimBinderSyncPeriod: 15 * time.Second,
|
||
![]() |
VolumeConfigFlags: VolumeConfigFlags{
|
||
|
// default values here
|
||
![]() |
PersistentVolumeRecyclerMaximumRetry: 3,
|
||
![]() |
PersistentVolumeRecyclerMinimumTimeoutNFS: 300,
|
||
|
PersistentVolumeRecyclerIncrementTimeoutNFS: 30,
|
||
|
PersistentVolumeRecyclerMinimumTimeoutHostPath: 60,
|
||
|
PersistentVolumeRecyclerIncrementTimeoutHostPath: 30,
|
||
|
EnableHostPathProvisioning: false,
|
||
![]() |
EnableDynamicProvisioning: true,
|
||
![]() |
},
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (o *PersistentVolumeControllerOptions) AddFlags(fs *pflag.FlagSet) {
|
||
|
fs.DurationVar(&o.PVClaimBinderSyncPeriod, "pvclaimbinder-sync-period", o.PVClaimBinderSyncPeriod,
|
||
|
"The period for syncing persistent volumes and persistent volume claims")
|
||
|
fs.StringVar(&o.VolumeConfigFlags.PersistentVolumeRecyclerPodTemplateFilePathNFS,
|
||
|
"pv-recycler-pod-template-filepath-nfs", o.VolumeConfigFlags.PersistentVolumeRecyclerPodTemplateFilePathNFS,
|
||
|
"The file path to a pod definition used as a template for NFS persistent volume recycling")
|
||
|
fs.IntVar(&o.VolumeConfigFlags.PersistentVolumeRecyclerMinimumTimeoutNFS, "pv-recycler-minimum-timeout-nfs",
|
||
|
o.VolumeConfigFlags.PersistentVolumeRecyclerMinimumTimeoutNFS, "The minimum ActiveDeadlineSeconds to use for an NFS Recycler pod")
|
||
|
fs.IntVar(&o.VolumeConfigFlags.PersistentVolumeRecyclerIncrementTimeoutNFS, "pv-recycler-increment-timeout-nfs",
|
||
|
o.VolumeConfigFlags.PersistentVolumeRecyclerIncrementTimeoutNFS, "the increment of time added per Gi to ActiveDeadlineSeconds for an NFS scrubber pod")
|
||
|
fs.StringVar(&o.VolumeConfigFlags.PersistentVolumeRecyclerPodTemplateFilePathHostPath, "pv-recycler-pod-template-filepath-hostpath",
|
||
|
o.VolumeConfigFlags.PersistentVolumeRecyclerPodTemplateFilePathHostPath,
|
||
|
"The file path to a pod definition used as a template for HostPath persistent volume recycling. "+
|
||
|
"This is for development and testing only and will not work in a multi-node cluster.")
|
||
|
fs.IntVar(&o.VolumeConfigFlags.PersistentVolumeRecyclerMinimumTimeoutHostPath, "pv-recycler-minimum-timeout-hostpath",
|
||
|
o.VolumeConfigFlags.PersistentVolumeRecyclerMinimumTimeoutHostPath,
|
||
|
"The minimum ActiveDeadlineSeconds to use for a HostPath Recycler pod. This is for development and testing only and will not work in a multi-node cluster.")
|
||
|
fs.IntVar(&o.VolumeConfigFlags.PersistentVolumeRecyclerIncrementTimeoutHostPath, "pv-recycler-timeout-increment-hostpath",
|
||
|
o.VolumeConfigFlags.PersistentVolumeRecyclerIncrementTimeoutHostPath,
|
||
|
"the increment of time added per Gi to ActiveDeadlineSeconds for a HostPath scrubber pod. "+
|
||
|
"This is for development and testing only and will not work in a multi-node cluster.")
|
||
![]() |
fs.IntVar(&o.VolumeConfigFlags.PersistentVolumeRecyclerMaximumRetry, "pv-recycler-maximum-retry",
|
||
|
o.VolumeConfigFlags.PersistentVolumeRecyclerMaximumRetry,
|
||
|
"Maximum number of attempts to recycle or delete a persistent volume")
|
||
![]() |
fs.BoolVar(&o.VolumeConfigFlags.EnableHostPathProvisioning, "enable-hostpath-provisioner", o.VolumeConfigFlags.EnableHostPathProvisioning,
|
||
|
"Enable HostPath PV provisioning when running without a cloud provider. This allows testing and development of provisioning features. "+
|
||
|
"HostPath provisioning is not supported in any way, won't work in a multi-node cluster, and should not be used for anything other than testing or development.")
|
||
![]() |
fs.BoolVar(&o.VolumeConfigFlags.EnableDynamicProvisioning, "enable-dynamic-provisioning", o.VolumeConfigFlags.EnableDynamicProvisioning,
|
||
|
"Enable dynamic provisioning for environments that support it.")
|
||
![]() |
}
|