Documentation ¶
Overview ¶
Package featureflag implements simple feature-flagging. Feature flags can become an anti-pattern if abused. We should try to use them for two use-cases:
- `Preview` feature flags enable a piece of functionality we haven't yet fully baked. The user needs to 'opt-in'. We expect these flags to be removed at some time. Normally these will default to false.
- Escape-hatch feature flags turn off a default that we consider risky (e.g. pre-creating DNS records). This lets us ship a behaviour, and if we encounter unusual circumstances in the field, we can allow the user to turn the behaviour off. Normally these will default to true.
Index ¶
Constants ¶
View Source
const (
// Name is the name of the environment variable which encapsulates feature flags
Name = "KOPS_FEATURE_FLAGS"
)
Variables ¶
View Source
var ( // DNSPreCreate controls whether we pre-create DNS records. DNSPreCreate = New("DNSPreCreate", Bool(true)) // DrainAndValidateRollingUpdate if set will use new rolling update code that will drain and validate. DrainAndValidateRollingUpdate = New("DrainAndValidateRollingUpdate", Bool(true)) // EnableLaunchTemplates indicates we wish to switch to using launch templates rather than launchconfigurations EnableLaunchTemplates = New("EnableLaunchTemplates", Bool(false)) //EnableExternalCloudController toggles the use of cloud-controller-manager introduced in v1.7 EnableExternalCloudController = New("EnableExternalCloudController", Bool(false)) // EnableExternalDNS enables external DNS EnableExternalDNS = New("EnableExternalDNS", Bool(false)) // EnableNodeAuthorization enables the node authorization features EnableNodeAuthorization = New("EnableNodeAuthorization", Bool(false)) // EnableSeparateConfigBase allows a config-base that is different from the state store EnableSeparateConfigBase = New("EnableSeparateConfigBase", Bool(false)) // ExperimentalClusterDNS allows for setting the kubelet dns flag to experimental values. ExperimentalClusterDNS = New("ExperimentalClusterDNS", Bool(false)) // GoogleCloudBucketACL means the ACL will be set on a bucket when using GCS GoogleCloudBucketACL = New("GoogleCloudBucketAcl", Bool(false)) // KeepLaunchConfigurations can be set to prevent garbage collection of old launch configurations KeepLaunchConfigurations = New("KeepLaunchConfigurations", Bool(false)) // SkipTerraformFormat if set means we will not `tf fmt` the generated terraform. // However we should no longer need it, with the keyset.yaml fix // In particular, this is the only (?) way to grant the bucket.list permission // It allows for experiments with alternative DNS configurations - in particular local proxies. SkipTerraformFormat = New("SkipTerraformFormat", Bool(false)) // SpecOverrideFlag allows setting spec values on create SpecOverrideFlag = New("SpecOverrideFlag", Bool(false)) // Spotinst toggles the use of Spotinst integration. Spotinst = New("Spotinst", Bool(false)) // SpotinstOcean toggles the use of Spotinst Ocean instance group implementation. SpotinstOcean = New("SpotinstOcean", Bool(false)) // VPCSkipEnableDNSSupport if set will make that a VPC does not need DNSSupport enabled. VPCSkipEnableDNSSupport = New("VPCSkipEnableDNSSupport", Bool(false)) // VSphereCloudProvider enables the vsphere cloud provider VSphereCloudProvider = New("VSphereCloudProvider", Bool(false)) // SkipEtcdVersionCheck will bypass the check that etcd-manager is using a supported etcd version SkipEtcdVersionCheck = New("SkipEtcdVersionCheck", Bool(false)) )
Functions ¶
func ParseFlags ¶
func ParseFlags(f string)
ParseFlags responsible for parse out the feature flag usage
Types ¶
type FeatureFlag ¶
type FeatureFlag struct { Key string // contains filtered or unexported fields }
FeatureFlag defines a feature flag
func (*FeatureFlag) Enabled ¶
func (f *FeatureFlag) Enabled() bool
Enabled checks if the flag is enabled
Click to show internal directories.
Click to hide internal directories.