mirror of
https://github.com/rancher/rke.git
synced 2025-04-27 03:11:03 +00:00
Move rke types from rancher/types to ./types
This commit is contained in:
parent
e2b5828e5b
commit
6220341b4a
7
generate.go
Normal file
7
generate.go
Normal file
@ -0,0 +1,7 @@
|
||||
// +build vendor
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
_ "k8s.io/gengo/examples/deepcopy-gen"
|
||||
)
|
16
scripts/boilerplate.go.txt
Normal file
16
scripts/boilerplate.go.txt
Normal file
@ -0,0 +1,16 @@
|
||||
/*
|
||||
Copyright YEAR Rancher Labs, Inc.
|
||||
|
||||
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.
|
||||
*/
|
||||
|
75
types/backup_types.go
Normal file
75
types/backup_types.go
Normal file
@ -0,0 +1,75 @@
|
||||
package types
|
||||
|
||||
import (
|
||||
"github.com/rancher/norman/condition"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
)
|
||||
|
||||
const (
|
||||
BackupConditionCreated condition.Cond = "Created"
|
||||
BackupConditionCompleted condition.Cond = "Completed"
|
||||
)
|
||||
|
||||
type BackupConfig struct {
|
||||
// Enable or disable recurring backups in rancher
|
||||
Enabled *bool `yaml:"enabled" json:"enabled,omitempty" norman:"default=true"`
|
||||
// Backup interval in hours
|
||||
IntervalHours int `yaml:"interval_hours" json:"intervalHours,omitempty" norman:"default=12"`
|
||||
// Number of backups to keep
|
||||
Retention int `yaml:"retention" json:"retention,omitempty" norman:"default=6"`
|
||||
// s3 target
|
||||
S3BackupConfig *S3BackupConfig `yaml:",omitempty" json:"s3BackupConfig"`
|
||||
// replace special characters in snapshot names
|
||||
SafeTimestamp bool `yaml:"safe_timestamp" json:"safeTimestamp,omitempty"`
|
||||
}
|
||||
|
||||
type S3BackupConfig struct {
|
||||
// Access key ID
|
||||
AccessKey string `yaml:"access_key" json:"accessKey,omitempty"`
|
||||
// Secret access key
|
||||
SecretKey string `yaml:"secret_key" json:"secretKey,omitempty" norman:"type=password" `
|
||||
// name of the bucket to use for backup
|
||||
BucketName string `yaml:"bucket_name" json:"bucketName,omitempty"`
|
||||
// AWS Region, AWS spcific
|
||||
Region string `yaml:"region" json:"region,omitempty"`
|
||||
// Endpoint is used if this is not an AWS API
|
||||
Endpoint string `yaml:"endpoint" json:"endpoint"`
|
||||
// CustomCA is used to connect to custom s3 endpoints
|
||||
CustomCA string `yaml:"custom_ca" json:"customCa,omitempty"`
|
||||
// Folder to place the files
|
||||
Folder string `yaml:"folder" json:"folder,omitempty"`
|
||||
}
|
||||
|
||||
type EtcdBackupSpec struct {
|
||||
// cluster ID
|
||||
ClusterID string `json:"clusterId,omitempty" norman:"required,type=reference[cluster],noupdate"`
|
||||
// manual backup flag
|
||||
Manual bool `yaml:"manual" json:"manual,omitempty"`
|
||||
// actual file name on the target
|
||||
Filename string `yaml:"filename" json:"filename,omitempty" norman:"noupdate"`
|
||||
// backupConfig
|
||||
BackupConfig BackupConfig `yaml:",omitempty" json:"backupConfig,omitempty" norman:"noupdate"`
|
||||
}
|
||||
|
||||
type EtcdBackupStatus struct {
|
||||
Conditions []EtcdBackupCondition `json:"conditions"`
|
||||
// version of k8s in the backup pulled from rke config
|
||||
KubernetesVersion string `yaml:"kubernetesVersion" json:"kubernetesVersion,omitempty" norman:"noupdate"`
|
||||
// json + gzipped + base64 backup of the cluster object when the backup was created
|
||||
ClusterObject string `yaml:"clusterObject" json:"clusterObject,omitempty" norman:"type=password,noupdate"`
|
||||
}
|
||||
|
||||
type EtcdBackupCondition struct {
|
||||
// Type of condition.
|
||||
Type string `json:"type"`
|
||||
// Status of the condition, one of True, False, Unknown.
|
||||
Status v1.ConditionStatus `json:"status"`
|
||||
// The last time this condition was updated.
|
||||
LastUpdateTime string `json:"lastUpdateTime,omitempty"`
|
||||
// Last time the condition transitioned from one status to another.
|
||||
LastTransitionTime string `json:"lastTransitionTime,omitempty"`
|
||||
// The reason for the condition's last transition.
|
||||
Reason string `json:"reason,omitempty"`
|
||||
// Human-readable message indicating details about last transition
|
||||
Message string `json:"message,omitempty"`
|
||||
}
|
3
types/doc.go
Normal file
3
types/doc.go
Normal file
@ -0,0 +1,3 @@
|
||||
// +k8s:deepcopy-gen=package
|
||||
|
||||
package types
|
85
types/eventratelimit.go
Normal file
85
types/eventratelimit.go
Normal file
@ -0,0 +1,85 @@
|
||||
/*
|
||||
Copyright 2017 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 types
|
||||
|
||||
import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
|
||||
// LimitType is the type of the limit (e.g., per-namespace)
|
||||
type LimitType string
|
||||
|
||||
const (
|
||||
// ServerLimitType is a type of limit where there is one bucket shared by
|
||||
// all of the event queries received by the API Server.
|
||||
ServerLimitType LimitType = "Server"
|
||||
// NamespaceLimitType is a type of limit where there is one bucket used by
|
||||
// each namespace
|
||||
NamespaceLimitType LimitType = "Namespace"
|
||||
// UserLimitType is a type of limit where there is one bucket used by each
|
||||
// user
|
||||
UserLimitType LimitType = "User"
|
||||
// SourceAndObjectLimitType is a type of limit where there is one bucket used
|
||||
// by each combination of source and involved object of the event.
|
||||
SourceAndObjectLimitType LimitType = "SourceAndObject"
|
||||
)
|
||||
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
|
||||
// Configuration provides configuration for the EventRateLimit admission
|
||||
// controller.
|
||||
type Configuration struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
|
||||
// limits are the limits to place on event queries received.
|
||||
// Limits can be placed on events received server-wide, per namespace,
|
||||
// per user, and per source+object.
|
||||
// At least one limit is required.
|
||||
Limits []Limit `json:"limits"`
|
||||
}
|
||||
|
||||
// Limit is the configuration for a particular limit type
|
||||
type Limit struct {
|
||||
// type is the type of limit to which this configuration applies
|
||||
Type LimitType `json:"type"`
|
||||
|
||||
// qps is the number of event queries per second that are allowed for this
|
||||
// type of limit. The qps and burst fields are used together to determine if
|
||||
// a particular event query is accepted. The qps determines how many queries
|
||||
// are accepted once the burst amount of queries has been exhausted.
|
||||
QPS int32 `json:"qps"`
|
||||
|
||||
// burst is the burst number of event queries that are allowed for this type
|
||||
// of limit. The qps and burst fields are used together to determine if a
|
||||
// particular event query is accepted. The burst determines the maximum size
|
||||
// of the allowance granted for a particular bucket. For example, if the burst
|
||||
// is 10 and the qps is 3, then the admission control will accept 10 queries
|
||||
// before blocking any queries. Every second, 3 more queries will be allowed.
|
||||
// If some of that allowance is not used, then it will roll over to the next
|
||||
// second, until the maximum allowance of 10 is reached.
|
||||
Burst int32 `json:"burst"`
|
||||
|
||||
// cacheSize is the size of the LRU cache for this type of limit. If a bucket
|
||||
// is evicted from the cache, then the allowance for that bucket is reset. If
|
||||
// more queries are later received for an evicted bucket, then that bucket
|
||||
// will re-enter the cache with a clean slate, giving that bucket a full
|
||||
// allowance of burst queries.
|
||||
//
|
||||
// The default cache size is 4096.
|
||||
//
|
||||
// If limitType is 'server', then cacheSize is ignored.
|
||||
// +optional
|
||||
CacheSize int32 `json:"cacheSize,omitempty"`
|
||||
}
|
30
types/image/mirror.go
Normal file
30
types/image/mirror.go
Normal file
@ -0,0 +1,30 @@
|
||||
package image
|
||||
|
||||
import "strings"
|
||||
|
||||
var Mirrors = map[string]string{}
|
||||
|
||||
func Mirror(image string) string {
|
||||
orig := image
|
||||
if strings.HasPrefix(image, "weaveworks") {
|
||||
return image
|
||||
}
|
||||
|
||||
image = strings.Replace(image, "gcr.io/google_containers", "rancher", 1)
|
||||
image = strings.Replace(image, "quay.io/coreos/", "rancher/coreos-", 1)
|
||||
image = strings.Replace(image, "quay.io/calico/", "rancher/calico-", 1)
|
||||
image = strings.Replace(image, "plugins/docker", "rancher/plugins-docker", 1)
|
||||
image = strings.Replace(image, "k8s.gcr.io/defaultbackend", "rancher/nginx-ingress-controller-defaultbackend", 1)
|
||||
image = strings.Replace(image, "k8s.gcr.io/k8s-dns-node-cache", "rancher/k8s-dns-node-cache", 1)
|
||||
image = strings.Replace(image, "plugins/docker", "rancher/plugins-docker", 1)
|
||||
image = strings.Replace(image, "kibana", "rancher/kibana", 1)
|
||||
image = strings.Replace(image, "jenkins/", "rancher/jenkins-", 1)
|
||||
image = strings.Replace(image, "alpine/git", "rancher/alpine-git", 1)
|
||||
image = strings.Replace(image, "prom/", "rancher/prom-", 1)
|
||||
image = strings.Replace(image, "quay.io/pires", "rancher", 1)
|
||||
image = strings.Replace(image, "coredns/", "rancher/coredns-", 1)
|
||||
image = strings.Replace(image, "minio/", "rancher/minio-", 1)
|
||||
|
||||
Mirrors[image] = orig
|
||||
return image
|
||||
}
|
3
types/kdm/doc.go
Normal file
3
types/kdm/doc.go
Normal file
@ -0,0 +1,3 @@
|
||||
// +k8s:deepcopy-gen=package
|
||||
|
||||
package kdm
|
71
types/kdm/kdm.go
Normal file
71
types/kdm/kdm.go
Normal file
@ -0,0 +1,71 @@
|
||||
package kdm
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
v3 "github.com/rancher/rke/types"
|
||||
)
|
||||
|
||||
const (
|
||||
Calico = "calico"
|
||||
Canal = "canal"
|
||||
Flannel = "flannel"
|
||||
Weave = "weave"
|
||||
CoreDNS = "coreDNS"
|
||||
KubeDNS = "kubeDNS"
|
||||
MetricsServer = "metricsServer"
|
||||
NginxIngress = "nginxIngress"
|
||||
Nodelocal = "nodelocal"
|
||||
TemplateKeys = "templateKeys"
|
||||
)
|
||||
|
||||
// +k8s:deepcopy-gen=false
|
||||
|
||||
type Data struct {
|
||||
// K8sVersionServiceOptions - service options per k8s version
|
||||
K8sVersionServiceOptions map[string]v3.KubernetesServicesOptions
|
||||
K8sVersionRKESystemImages map[string]v3.RKESystemImages
|
||||
|
||||
// Addon Templates per K8s version ("default" where nothing changes for k8s version)
|
||||
K8sVersionedTemplates map[string]map[string]string
|
||||
|
||||
// K8sVersionInfo - min/max RKE+Rancher versions per k8s version
|
||||
K8sVersionInfo map[string]v3.K8sVersionInfo
|
||||
|
||||
//Default K8s version for every rancher version
|
||||
RancherDefaultK8sVersions map[string]string
|
||||
|
||||
//Default K8s version for every rke version
|
||||
RKEDefaultK8sVersions map[string]string
|
||||
|
||||
K8sVersionDockerInfo map[string][]string
|
||||
|
||||
// K8sVersionWindowsServiceOptions - service options per windows k8s version
|
||||
K8sVersionWindowsServiceOptions map[string]v3.KubernetesServicesOptions
|
||||
|
||||
CisConfigParams map[string]CisConfigParams
|
||||
CisBenchmarkVersionInfo map[string]CisBenchmarkVersionInfo
|
||||
|
||||
// K3S specific data, opaque and defined by the config file in kdm
|
||||
K3S map[string]interface{} `json:"k3s,omitempty"`
|
||||
}
|
||||
|
||||
func FromData(b []byte) (Data, error) {
|
||||
d := &Data{}
|
||||
|
||||
if err := json.Unmarshal(b, d); err != nil {
|
||||
return Data{}, err
|
||||
}
|
||||
return *d, nil
|
||||
}
|
||||
|
||||
type CisBenchmarkVersionInfo struct {
|
||||
Managed bool `yaml:"managed" json:"managed"`
|
||||
MinKubernetesVersion string `yaml:"min_kubernetes_version" json:"minKubernetesVersion"`
|
||||
SkippedChecks map[string]string `yaml:"skipped_checks" json:"skippedChecks"`
|
||||
NotApplicableChecks map[string]string `yaml:"not_applicable_checks" json:"notApplicableChecks"`
|
||||
}
|
||||
|
||||
type CisConfigParams struct {
|
||||
BenchmarkVersion string `yaml:"benchmark_version" json:"benchmarkVersion"`
|
||||
}
|
879
types/rke_types.go
Normal file
879
types/rke_types.go
Normal file
@ -0,0 +1,879 @@
|
||||
package types
|
||||
|
||||
import (
|
||||
v1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
apiserverv1alpha1 "k8s.io/apiserver/pkg/apis/apiserver/v1alpha1"
|
||||
auditv1 "k8s.io/apiserver/pkg/apis/audit/v1"
|
||||
apiserverconfig "k8s.io/apiserver/pkg/apis/config"
|
||||
)
|
||||
|
||||
type RancherKubernetesEngineConfig struct {
|
||||
// Kubernetes nodes
|
||||
Nodes []RKEConfigNode `yaml:"nodes" json:"nodes,omitempty"`
|
||||
// Kubernetes components
|
||||
Services RKEConfigServices `yaml:"services" json:"services,omitempty"`
|
||||
// Network configuration used in the kubernetes cluster (flannel, calico)
|
||||
Network NetworkConfig `yaml:"network" json:"network,omitempty"`
|
||||
// Authentication configuration used in the cluster (default: x509)
|
||||
Authentication AuthnConfig `yaml:"authentication" json:"authentication,omitempty"`
|
||||
// YAML manifest for user provided addons to be deployed on the cluster
|
||||
Addons string `yaml:"addons" json:"addons,omitempty"`
|
||||
// List of urls or paths for addons
|
||||
AddonsInclude []string `yaml:"addons_include" json:"addonsInclude,omitempty"`
|
||||
// List of images used internally for proxy, cert downlaod and kubedns
|
||||
SystemImages RKESystemImages `yaml:"system_images" json:"systemImages,omitempty"`
|
||||
// SSH Private Key Path
|
||||
SSHKeyPath string `yaml:"ssh_key_path" json:"sshKeyPath,omitempty" norman:"nocreate,noupdate"`
|
||||
// SSH Certificate Path
|
||||
SSHCertPath string `yaml:"ssh_cert_path" json:"sshCertPath,omitempty" norman:"nocreate,noupdate"`
|
||||
// SSH Agent Auth enable
|
||||
SSHAgentAuth bool `yaml:"ssh_agent_auth" json:"sshAgentAuth"`
|
||||
// Authorization mode configuration used in the cluster
|
||||
Authorization AuthzConfig `yaml:"authorization" json:"authorization,omitempty"`
|
||||
// Enable/disable strict docker version checking
|
||||
IgnoreDockerVersion *bool `yaml:"ignore_docker_version" json:"ignoreDockerVersion" norman:"default=true"`
|
||||
// Kubernetes version to use (if kubernetes image is specifed, image version takes precedence)
|
||||
Version string `yaml:"kubernetes_version" json:"kubernetesVersion,omitempty"`
|
||||
// List of private registries and their credentials
|
||||
PrivateRegistries []PrivateRegistry `yaml:"private_registries" json:"privateRegistries,omitempty"`
|
||||
// Ingress controller used in the cluster
|
||||
Ingress IngressConfig `yaml:"ingress" json:"ingress,omitempty"`
|
||||
// Cluster Name used in the kube config
|
||||
ClusterName string `yaml:"cluster_name" json:"clusterName,omitempty"`
|
||||
// Cloud Provider options
|
||||
CloudProvider CloudProvider `yaml:"cloud_provider" json:"cloudProvider,omitempty"`
|
||||
// kubernetes directory path
|
||||
PrefixPath string `yaml:"prefix_path" json:"prefixPath,omitempty"`
|
||||
// Timeout in seconds for status check on addon deployment jobs
|
||||
AddonJobTimeout int `yaml:"addon_job_timeout" json:"addonJobTimeout,omitempty" norman:"default=30"`
|
||||
// Bastion/Jump Host configuration
|
||||
BastionHost BastionHost `yaml:"bastion_host" json:"bastionHost,omitempty"`
|
||||
// Monitoring Config
|
||||
Monitoring MonitoringConfig `yaml:"monitoring" json:"monitoring,omitempty"`
|
||||
// RestoreCluster flag
|
||||
Restore RestoreConfig `yaml:"restore" json:"restore,omitempty"`
|
||||
// Rotating Certificates Option
|
||||
RotateCertificates *RotateCertificates `yaml:"rotate_certificates,omitempty" json:"rotateCertificates,omitempty"`
|
||||
// DNS Config
|
||||
DNS *DNSConfig `yaml:"dns" json:"dns,omitempty"`
|
||||
// Upgrade Strategy for the cluster
|
||||
UpgradeStrategy *NodeUpgradeStrategy `yaml:"upgrade_strategy,omitempty" json:"upgradeStrategy,omitempty"`
|
||||
}
|
||||
|
||||
func (r *RancherKubernetesEngineConfig) ObjClusterName() string {
|
||||
return r.ClusterName
|
||||
}
|
||||
|
||||
type NodeUpgradeStrategy struct {
|
||||
// MaxUnavailableWorker input can be a number of nodes or a percentage of nodes (example, max_unavailable_worker: 2 OR max_unavailable_worker: 20%)
|
||||
MaxUnavailableWorker string `yaml:"max_unavailable_worker" json:"maxUnavailableWorker,omitempty" norman:"min=1,default=10%"`
|
||||
// MaxUnavailableControlplane input can be a number of nodes or a percentage of nodes
|
||||
MaxUnavailableControlplane string `yaml:"max_unavailable_controlplane" json:"maxUnavailableControlplane,omitempty" norman:"min=1,default=1"`
|
||||
Drain bool `yaml:"drain" json:"drain,omitempty"`
|
||||
DrainInput *NodeDrainInput `yaml:"node_drain_input" json:"nodeDrainInput,omitempty"`
|
||||
}
|
||||
|
||||
type BastionHost struct {
|
||||
// Address of Bastion Host
|
||||
Address string `yaml:"address" json:"address,omitempty"`
|
||||
// SSH Port of Bastion Host
|
||||
Port string `yaml:"port" json:"port,omitempty"`
|
||||
// ssh User to Bastion Host
|
||||
User string `yaml:"user" json:"user,omitempty"`
|
||||
// SSH Agent Auth enable
|
||||
SSHAgentAuth bool `yaml:"ssh_agent_auth,omitempty" json:"sshAgentAuth,omitempty"`
|
||||
// SSH Private Key
|
||||
SSHKey string `yaml:"ssh_key" json:"sshKey,omitempty" norman:"type=password"`
|
||||
// SSH Private Key Path
|
||||
SSHKeyPath string `yaml:"ssh_key_path" json:"sshKeyPath,omitempty"`
|
||||
// SSH Certificate
|
||||
SSHCert string `yaml:"ssh_cert" json:"sshCert,omitempty"`
|
||||
// SSH Certificate Path
|
||||
SSHCertPath string `yaml:"ssh_cert_path" json:"sshCertPath,omitempty"`
|
||||
}
|
||||
|
||||
type PrivateRegistry struct {
|
||||
// URL for the registry
|
||||
URL string `yaml:"url" json:"url,omitempty"`
|
||||
// User name for registry acces
|
||||
User string `yaml:"user" json:"user,omitempty"`
|
||||
// Password for registry access
|
||||
Password string `yaml:"password" json:"password,omitempty" norman:"type=password"`
|
||||
// Default registry
|
||||
IsDefault bool `yaml:"is_default" json:"isDefault,omitempty"`
|
||||
}
|
||||
|
||||
type RKESystemImages struct {
|
||||
// etcd image
|
||||
Etcd string `yaml:"etcd" json:"etcd,omitempty"`
|
||||
// Alpine image
|
||||
Alpine string `yaml:"alpine" json:"alpine,omitempty"`
|
||||
// rke-nginx-proxy image
|
||||
NginxProxy string `yaml:"nginx_proxy" json:"nginxProxy,omitempty"`
|
||||
// rke-cert-deployer image
|
||||
CertDownloader string `yaml:"cert_downloader" json:"certDownloader,omitempty"`
|
||||
// rke-service-sidekick image
|
||||
KubernetesServicesSidecar string `yaml:"kubernetes_services_sidecar" json:"kubernetesServicesSidecar,omitempty"`
|
||||
// KubeDNS image
|
||||
KubeDNS string `yaml:"kubedns" json:"kubedns,omitempty"`
|
||||
// DNSMasq image
|
||||
DNSmasq string `yaml:"dnsmasq" json:"dnsmasq,omitempty"`
|
||||
// KubeDNS side car image
|
||||
KubeDNSSidecar string `yaml:"kubedns_sidecar" json:"kubednsSidecar,omitempty"`
|
||||
// KubeDNS autoscaler image
|
||||
KubeDNSAutoscaler string `yaml:"kubedns_autoscaler" json:"kubednsAutoscaler,omitempty"`
|
||||
// CoreDNS image
|
||||
CoreDNS string `yaml:"coredns" json:"coredns,omitempty"`
|
||||
// CoreDNS autoscaler image
|
||||
CoreDNSAutoscaler string `yaml:"coredns_autoscaler" json:"corednsAutoscaler,omitempty"`
|
||||
// Nodelocal image
|
||||
Nodelocal string `yaml:"nodelocal" json:"nodelocal,omitempty"`
|
||||
// Kubernetes image
|
||||
Kubernetes string `yaml:"kubernetes" json:"kubernetes,omitempty"`
|
||||
// Flannel image
|
||||
Flannel string `yaml:"flannel" json:"flannel,omitempty"`
|
||||
// Flannel CNI image
|
||||
FlannelCNI string `yaml:"flannel_cni" json:"flannelCni,omitempty"`
|
||||
// Calico Node image
|
||||
CalicoNode string `yaml:"calico_node" json:"calicoNode,omitempty"`
|
||||
// Calico CNI image
|
||||
CalicoCNI string `yaml:"calico_cni" json:"calicoCni,omitempty"`
|
||||
// Calico Controllers image
|
||||
CalicoControllers string `yaml:"calico_controllers" json:"calicoControllers,omitempty"`
|
||||
// Calicoctl image
|
||||
CalicoCtl string `yaml:"calico_ctl" json:"calicoCtl,omitempty"`
|
||||
//CalicoFlexVol image
|
||||
CalicoFlexVol string `yaml:"calico_flexvol" json:"calicoFlexVol,omitempty"`
|
||||
// Canal Node Image
|
||||
CanalNode string `yaml:"canal_node" json:"canalNode,omitempty"`
|
||||
// Canal CNI image
|
||||
CanalCNI string `yaml:"canal_cni" json:"canalCni,omitempty"`
|
||||
//CanalFlannel image
|
||||
CanalFlannel string `yaml:"canal_flannel" json:"canalFlannel,omitempty"`
|
||||
//CanalFlexVol image
|
||||
CanalFlexVol string `yaml:"canal_flexvol" json:"canalFlexVol,omitempty"`
|
||||
//Weave Node image
|
||||
WeaveNode string `yaml:"weave_node" json:"weaveNode,omitempty"`
|
||||
// Weave CNI image
|
||||
WeaveCNI string `yaml:"weave_cni" json:"weaveCni,omitempty"`
|
||||
// Pod infra container image
|
||||
PodInfraContainer string `yaml:"pod_infra_container" json:"podInfraContainer,omitempty"`
|
||||
// Ingress Controller image
|
||||
Ingress string `yaml:"ingress" json:"ingress,omitempty"`
|
||||
// Ingress Controller Backend image
|
||||
IngressBackend string `yaml:"ingress_backend" json:"ingressBackend,omitempty"`
|
||||
// Metrics Server image
|
||||
MetricsServer string `yaml:"metrics_server" json:"metricsServer,omitempty"`
|
||||
// Pod infra container image for Windows
|
||||
WindowsPodInfraContainer string `yaml:"windows_pod_infra_container" json:"windowsPodInfraContainer,omitempty"`
|
||||
}
|
||||
|
||||
type RKEConfigNode struct {
|
||||
// Name of the host provisioned via docker machine
|
||||
NodeName string `yaml:"nodeName,omitempty" json:"nodeName,omitempty" norman:"type=reference[node]"`
|
||||
// IP or FQDN that is fully resolvable and used for SSH communication
|
||||
Address string `yaml:"address" json:"address,omitempty"`
|
||||
// Port used for SSH communication
|
||||
Port string `yaml:"port" json:"port,omitempty"`
|
||||
// Optional - Internal address that will be used for components communication
|
||||
InternalAddress string `yaml:"internal_address" json:"internalAddress,omitempty"`
|
||||
// Node role in kubernetes cluster (controlplane, worker, or etcd)
|
||||
Role []string `yaml:"role" json:"role,omitempty" norman:"type=array[enum],options=etcd|worker|controlplane"`
|
||||
// Optional - Hostname of the node
|
||||
HostnameOverride string `yaml:"hostname_override" json:"hostnameOverride,omitempty"`
|
||||
// SSH usesr that will be used by RKE
|
||||
User string `yaml:"user" json:"user,omitempty"`
|
||||
// Optional - Docker socket on the node that will be used in tunneling
|
||||
DockerSocket string `yaml:"docker_socket" json:"dockerSocket,omitempty"`
|
||||
// SSH Agent Auth enable
|
||||
SSHAgentAuth bool `yaml:"ssh_agent_auth,omitempty" json:"sshAgentAuth,omitempty"`
|
||||
// SSH Private Key
|
||||
SSHKey string `yaml:"ssh_key" json:"sshKey,omitempty" norman:"type=password"`
|
||||
// SSH Private Key Path
|
||||
SSHKeyPath string `yaml:"ssh_key_path" json:"sshKeyPath,omitempty"`
|
||||
// SSH Certificate
|
||||
SSHCert string `yaml:"ssh_cert" json:"sshCert,omitempty"`
|
||||
// SSH Certificate Path
|
||||
SSHCertPath string `yaml:"ssh_cert_path" json:"sshCertPath,omitempty"`
|
||||
// Node Labels
|
||||
Labels map[string]string `yaml:"labels" json:"labels,omitempty"`
|
||||
// Node Taints
|
||||
Taints []RKETaint `yaml:"taints" json:"taints,omitempty"`
|
||||
}
|
||||
|
||||
type K8sVersionInfo struct {
|
||||
MinRKEVersion string `yaml:"min_rke_version" json:"minRKEVersion,omitempty"`
|
||||
MaxRKEVersion string `yaml:"max_rke_version" json:"maxRKEVersion,omitempty"`
|
||||
DeprecateRKEVersion string `yaml:"deprecate_rke_version" json:"deprecateRKEVersion,omitempty"`
|
||||
|
||||
MinRancherVersion string `yaml:"min_rancher_version" json:"minRancherVersion,omitempty"`
|
||||
MaxRancherVersion string `yaml:"max_rancher_version" json:"maxRancherVersion,omitempty"`
|
||||
DeprecateRancherVersion string `yaml:"deprecate_rancher_version" json:"deprecateRancherVersion,omitempty"`
|
||||
}
|
||||
|
||||
type RKEConfigServices struct {
|
||||
// Etcd Service
|
||||
Etcd ETCDService `yaml:"etcd" json:"etcd,omitempty"`
|
||||
// KubeAPI Service
|
||||
KubeAPI KubeAPIService `yaml:"kube-api" json:"kubeApi,omitempty"`
|
||||
// KubeController Service
|
||||
KubeController KubeControllerService `yaml:"kube-controller" json:"kubeController,omitempty"`
|
||||
// Scheduler Service
|
||||
Scheduler SchedulerService `yaml:"scheduler" json:"scheduler,omitempty"`
|
||||
// Kubelet Service
|
||||
Kubelet KubeletService `yaml:"kubelet" json:"kubelet,omitempty"`
|
||||
// KubeProxy Service
|
||||
Kubeproxy KubeproxyService `yaml:"kubeproxy" json:"kubeproxy,omitempty"`
|
||||
}
|
||||
|
||||
type ETCDService struct {
|
||||
// Base service properties
|
||||
BaseService `yaml:",inline" json:",inline"`
|
||||
// List of etcd urls
|
||||
ExternalURLs []string `yaml:"external_urls" json:"externalUrls,omitempty"`
|
||||
// External CA certificate
|
||||
CACert string `yaml:"ca_cert" json:"caCert,omitempty"`
|
||||
// External Client certificate
|
||||
Cert string `yaml:"cert" json:"cert,omitempty"`
|
||||
// External Client key
|
||||
Key string `yaml:"key" json:"key,omitempty"`
|
||||
// External etcd prefix
|
||||
Path string `yaml:"path" json:"path,omitempty"`
|
||||
// UID to run etcd container as
|
||||
UID int `yaml:"uid" json:"uid,omitempty"`
|
||||
// GID to run etcd container as
|
||||
GID int `yaml:"gid" json:"gid,omitempty"`
|
||||
|
||||
// Etcd Recurring snapshot Service, used by rke only
|
||||
Snapshot *bool `yaml:"snapshot" json:"snapshot,omitempty" norman:"default=false"`
|
||||
// Etcd snapshot Retention period
|
||||
Retention string `yaml:"retention" json:"retention,omitempty" norman:"default=72h"`
|
||||
// Etcd snapshot Creation period
|
||||
Creation string `yaml:"creation" json:"creation,omitempty" norman:"default=12h"`
|
||||
// Backup backend for etcd snapshots
|
||||
BackupConfig *BackupConfig `yaml:"backup_config" json:"backupConfig,omitempty"`
|
||||
}
|
||||
|
||||
type KubeAPIService struct {
|
||||
// Base service properties
|
||||
BaseService `yaml:",inline" json:",inline"`
|
||||
// Virtual IP range that will be used by Kubernetes services
|
||||
ServiceClusterIPRange string `yaml:"service_cluster_ip_range" json:"serviceClusterIpRange,omitempty"`
|
||||
// Port range for services defined with NodePort type
|
||||
ServiceNodePortRange string `yaml:"service_node_port_range" json:"serviceNodePortRange,omitempty" norman:"default=30000-32767"`
|
||||
// Enabled/Disable PodSecurityPolicy
|
||||
PodSecurityPolicy bool `yaml:"pod_security_policy" json:"podSecurityPolicy,omitempty"`
|
||||
// Enable/Disable AlwaysPullImages admissions plugin
|
||||
AlwaysPullImages bool `yaml:"always_pull_images" json:"alwaysPullImages,omitempty"`
|
||||
// Secrets encryption provider config
|
||||
SecretsEncryptionConfig *SecretsEncryptionConfig `yaml:"secrets_encryption_config" json:"secretsEncryptionConfig,omitempty"`
|
||||
// Audit Log Configuration
|
||||
AuditLog *AuditLog `yaml:"audit_log" json:"auditLog,omitempty"`
|
||||
// AdmissionConfiguration
|
||||
AdmissionConfiguration *apiserverv1alpha1.AdmissionConfiguration `yaml:"admission_configuration" json:"admissionConfiguration,omitempty" norman:"type=map[json]"`
|
||||
// Event Rate Limit configuration
|
||||
EventRateLimit *EventRateLimit `yaml:"event_rate_limit" json:"eventRateLimit,omitempty"`
|
||||
}
|
||||
|
||||
type EventRateLimit struct {
|
||||
Enabled bool `yaml:"enabled" json:"enabled,omitempty"`
|
||||
Configuration *Configuration `yaml:"configuration" json:"configuration,omitempty" norman:"type=map[json]"`
|
||||
}
|
||||
|
||||
type AuditLog struct {
|
||||
Enabled bool `yaml:"enabled" json:"enabled,omitempty"`
|
||||
Configuration *AuditLogConfig `yaml:"configuration" json:"configuration,omitempty"`
|
||||
}
|
||||
|
||||
type AuditLogConfig struct {
|
||||
MaxAge int `yaml:"max_age" json:"maxAge,omitempty"`
|
||||
MaxBackup int `yaml:"max_backup" json:"maxBackup,omitempty"`
|
||||
MaxSize int `yaml:"max_size" json:"maxSize,omitempty"`
|
||||
Path string `yaml:"path" json:"path,omitempty"`
|
||||
Format string `yaml:"format" json:"format,omitempty"`
|
||||
Policy *auditv1.Policy `yaml:"policy" json:"policy,omitempty" norman:"type=map[json]"`
|
||||
}
|
||||
|
||||
type KubeControllerService struct {
|
||||
// Base service properties
|
||||
BaseService `yaml:",inline" json:",inline"`
|
||||
// CIDR Range for Pods in cluster
|
||||
ClusterCIDR string `yaml:"cluster_cidr" json:"clusterCidr,omitempty"`
|
||||
// Virtual IP range that will be used by Kubernetes services
|
||||
ServiceClusterIPRange string `yaml:"service_cluster_ip_range" json:"serviceClusterIpRange,omitempty"`
|
||||
}
|
||||
|
||||
type KubeletService struct {
|
||||
// Base service properties
|
||||
BaseService `yaml:",inline" json:",inline"`
|
||||
// Domain of the cluster (default: "cluster.local")
|
||||
ClusterDomain string `yaml:"cluster_domain" json:"clusterDomain,omitempty"`
|
||||
// The image whose network/ipc namespaces containers in each pod will use
|
||||
InfraContainerImage string `yaml:"infra_container_image" json:"infraContainerImage,omitempty"`
|
||||
// Cluster DNS service ip
|
||||
ClusterDNSServer string `yaml:"cluster_dns_server" json:"clusterDnsServer,omitempty"`
|
||||
// Fail if swap is enabled
|
||||
FailSwapOn bool `yaml:"fail_swap_on" json:"failSwapOn,omitempty"`
|
||||
// Generate per node kubelet serving certificates created using kube-ca
|
||||
GenerateServingCertificate bool `yaml:"generate_serving_certificate" json:"generateServingCertificate,omitempty"`
|
||||
}
|
||||
|
||||
type KubeproxyService struct {
|
||||
// Base service properties
|
||||
BaseService `yaml:",inline" json:",inline"`
|
||||
}
|
||||
|
||||
type SchedulerService struct {
|
||||
// Base service properties
|
||||
BaseService `yaml:",inline" json:",inline"`
|
||||
}
|
||||
|
||||
type BaseService struct {
|
||||
// Docker image of the service
|
||||
Image string `yaml:"image" json:"image,omitempty"`
|
||||
// Extra arguments that are added to the services
|
||||
ExtraArgs map[string]string `yaml:"extra_args" json:"extraArgs,omitempty"`
|
||||
// Extra binds added to the nodes
|
||||
ExtraBinds []string `yaml:"extra_binds" json:"extraBinds,omitempty"`
|
||||
// this is to provide extra env variable to the docker container running kubernetes service
|
||||
ExtraEnv []string `yaml:"extra_env" json:"extraEnv,omitempty"`
|
||||
}
|
||||
|
||||
type NetworkConfig struct {
|
||||
// Network Plugin That will be used in kubernetes cluster
|
||||
Plugin string `yaml:"plugin" json:"plugin,omitempty" norman:"default=canal"`
|
||||
// Plugin options to configure network properties
|
||||
Options map[string]string `yaml:"options" json:"options,omitempty"`
|
||||
// Set MTU for CNI provider
|
||||
MTU int `yaml:"mtu" json:"mtu,omitempty"`
|
||||
// CalicoNetworkProvider
|
||||
CalicoNetworkProvider *CalicoNetworkProvider `yaml:"calico_network_provider,omitempty" json:"calicoNetworkProvider,omitempty"`
|
||||
// CanalNetworkProvider
|
||||
CanalNetworkProvider *CanalNetworkProvider `yaml:"canal_network_provider,omitempty" json:"canalNetworkProvider,omitempty"`
|
||||
// FlannelNetworkProvider
|
||||
FlannelNetworkProvider *FlannelNetworkProvider `yaml:"flannel_network_provider,omitempty" json:"flannelNetworkProvider,omitempty"`
|
||||
// WeaveNetworkProvider
|
||||
WeaveNetworkProvider *WeaveNetworkProvider `yaml:"weave_network_provider,omitempty" json:"weaveNetworkProvider,omitempty"`
|
||||
// NodeSelector key pair
|
||||
NodeSelector map[string]string `yaml:"node_selector" json:"nodeSelector,omitempty"`
|
||||
// Network plugin daemonset upgrade strategy
|
||||
UpdateStrategy *DaemonSetUpdateStrategy `yaml:"update_strategy" json:"updateStrategy,omitempty"`
|
||||
}
|
||||
|
||||
type AuthWebhookConfig struct {
|
||||
// ConfigFile is a multiline string that represent a custom webhook config file
|
||||
ConfigFile string `yaml:"config_file" json:"configFile,omitempty"`
|
||||
// CacheTimeout controls how long to cache authentication decisions
|
||||
CacheTimeout string `yaml:"cache_timeout" json:"cacheTimeout,omitempty"`
|
||||
}
|
||||
|
||||
type AuthnConfig struct {
|
||||
// Authentication strategy that will be used in kubernetes cluster
|
||||
Strategy string `yaml:"strategy" json:"strategy,omitempty" norman:"default=x509"`
|
||||
// List of additional hostnames and IPs to include in the api server PKI cert
|
||||
SANs []string `yaml:"sans" json:"sans,omitempty"`
|
||||
// Webhook configuration options
|
||||
Webhook *AuthWebhookConfig `yaml:"webhook" json:"webhook,omitempty"`
|
||||
}
|
||||
|
||||
type AuthzConfig struct {
|
||||
// Authorization mode used by kubernetes
|
||||
Mode string `yaml:"mode" json:"mode,omitempty"`
|
||||
// Authorization mode options
|
||||
Options map[string]string `yaml:"options" json:"options,omitempty"`
|
||||
}
|
||||
|
||||
type IngressConfig struct {
|
||||
// Ingress controller type used by kubernetes
|
||||
Provider string `yaml:"provider" json:"provider,omitempty" norman:"default=nginx"`
|
||||
// Ingress controller options
|
||||
Options map[string]string `yaml:"options" json:"options,omitempty"`
|
||||
// NodeSelector key pair
|
||||
NodeSelector map[string]string `yaml:"node_selector" json:"nodeSelector,omitempty"`
|
||||
// Ingress controller extra arguments
|
||||
ExtraArgs map[string]string `yaml:"extra_args" json:"extraArgs,omitempty"`
|
||||
// DNS Policy
|
||||
DNSPolicy string `yaml:"dns_policy" json:"dnsPolicy,omitempty"`
|
||||
// Extra Env vars
|
||||
ExtraEnvs []ExtraEnv `yaml:"extra_envs" json:"extraEnvs,omitempty" norman:"type=array[json]"`
|
||||
// Extra volumes
|
||||
ExtraVolumes []ExtraVolume `yaml:"extra_volumes" json:"extraVolumes,omitempty" norman:"type=array[json]"`
|
||||
// Extra volume mounts
|
||||
ExtraVolumeMounts []ExtraVolumeMount `yaml:"extra_volume_mounts" json:"extraVolumeMounts,omitempty" norman:"type=array[json]"`
|
||||
// nginx daemonset upgrade strategy
|
||||
UpdateStrategy *DaemonSetUpdateStrategy `yaml:"update_strategy" json:"updateStrategy,omitempty"`
|
||||
}
|
||||
|
||||
type ExtraEnv struct {
|
||||
v1.EnvVar
|
||||
}
|
||||
|
||||
type ExtraVolume struct {
|
||||
v1.Volume
|
||||
}
|
||||
|
||||
type ExtraVolumeMount struct {
|
||||
v1.VolumeMount
|
||||
}
|
||||
|
||||
type RKEPlan struct {
|
||||
// List of node Plans
|
||||
Nodes []RKEConfigNodePlan `json:"nodes,omitempty"`
|
||||
}
|
||||
|
||||
type RKEConfigNodePlan struct {
|
||||
// Node address
|
||||
Address string `json:"address,omitempty"`
|
||||
// map of named processes that should run on the node
|
||||
Processes map[string]Process `json:"processes,omitempty"`
|
||||
// List of portchecks that should be open on the node
|
||||
PortChecks []PortCheck `json:"portChecks,omitempty"`
|
||||
// List of files to deploy on the node
|
||||
Files []File `json:"files,omitempty"`
|
||||
// Node Annotations
|
||||
Annotations map[string]string `json:"annotations,omitempty"`
|
||||
// Node Labels
|
||||
Labels map[string]string `json:"labels,omitempty"`
|
||||
// Node Taints
|
||||
Taints []RKETaint `json:"taints,omitempty"`
|
||||
}
|
||||
|
||||
type Process struct {
|
||||
// Process name, this should be the container name
|
||||
Name string `json:"name,omitempty"`
|
||||
// Process Entrypoint command
|
||||
Command []string `json:"command,omitempty"`
|
||||
// Process args
|
||||
Args []string `json:"args,omitempty"`
|
||||
// Environment variables list
|
||||
Env []string `json:"env,omitempty"`
|
||||
// Process docker image
|
||||
Image string `json:"image,omitempty"`
|
||||
//AuthConfig for image private registry
|
||||
ImageRegistryAuthConfig string `json:"imageRegistryAuthConfig,omitempty"`
|
||||
// Process docker image VolumesFrom
|
||||
VolumesFrom []string `json:"volumesFrom,omitempty"`
|
||||
// Process docker container bind mounts
|
||||
Binds []string `json:"binds,omitempty"`
|
||||
// Process docker container netwotk mode
|
||||
NetworkMode string `json:"networkMode,omitempty"`
|
||||
// Process container restart policy
|
||||
RestartPolicy string `json:"restartPolicy,omitempty"`
|
||||
// Process container pid mode
|
||||
PidMode string `json:"pidMode,omitempty"`
|
||||
// Run process in privileged container
|
||||
Privileged bool `json:"privileged,omitempty"`
|
||||
// Process healthcheck
|
||||
HealthCheck HealthCheck `json:"healthCheck,omitempty"`
|
||||
// Process docker container Labels
|
||||
Labels map[string]string `json:"labels,omitempty"`
|
||||
// Process docker publish container's port to host
|
||||
Publish []string `json:"publish,omitempty"`
|
||||
// docker will run the container with this user
|
||||
User string `json:"user,omitempty"`
|
||||
}
|
||||
|
||||
type HealthCheck struct {
|
||||
// Healthcheck URL
|
||||
URL string `json:"url,omitempty"`
|
||||
}
|
||||
|
||||
type PortCheck struct {
|
||||
// Portcheck address to check.
|
||||
Address string `json:"address,omitempty"`
|
||||
// Port number
|
||||
Port int `json:"port,omitempty"`
|
||||
// Port Protocol
|
||||
Protocol string `json:"protocol,omitempty"`
|
||||
}
|
||||
|
||||
type CloudProvider struct {
|
||||
// Name of the Cloud Provider
|
||||
Name string `yaml:"name" json:"name,omitempty"`
|
||||
// AWSCloudProvider
|
||||
AWSCloudProvider *AWSCloudProvider `yaml:"awsCloudProvider,omitempty" json:"awsCloudProvider,omitempty"`
|
||||
// AzureCloudProvider
|
||||
AzureCloudProvider *AzureCloudProvider `yaml:"azureCloudProvider,omitempty" json:"azureCloudProvider,omitempty"`
|
||||
// OpenstackCloudProvider
|
||||
OpenstackCloudProvider *OpenstackCloudProvider `yaml:"openstackCloudProvider,omitempty" json:"openstackCloudProvider,omitempty"`
|
||||
// VsphereCloudProvider
|
||||
VsphereCloudProvider *VsphereCloudProvider `yaml:"vsphereCloudProvider,omitempty" json:"vsphereCloudProvider,omitempty"`
|
||||
// CustomCloudProvider is a multiline string that represent a custom cloud config file
|
||||
CustomCloudProvider string `yaml:"customCloudProvider,omitempty" json:"customCloudProvider,omitempty"`
|
||||
}
|
||||
|
||||
type CalicoNetworkProvider struct {
|
||||
// Cloud provider type used with calico
|
||||
CloudProvider string `json:"cloudProvider"`
|
||||
}
|
||||
|
||||
type FlannelNetworkProvider struct {
|
||||
// Alternate cloud interface for flannel
|
||||
Iface string `json:"iface"`
|
||||
}
|
||||
|
||||
type CanalNetworkProvider struct {
|
||||
FlannelNetworkProvider `yaml:",inline" json:",inline"`
|
||||
}
|
||||
|
||||
type WeaveNetworkProvider struct {
|
||||
Password string `yaml:"password,omitempty" json:"password,omitempty" norman:"type=password"`
|
||||
}
|
||||
|
||||
type KubernetesServicesOptions struct {
|
||||
// Additional options passed to Etcd
|
||||
Etcd map[string]string `json:"etcd"`
|
||||
// Additional options passed to KubeAPI
|
||||
KubeAPI map[string]string `json:"kubeapi"`
|
||||
// Additional options passed to Kubelet
|
||||
Kubelet map[string]string `json:"kubelet"`
|
||||
// Additional options passed to Kubeproxy
|
||||
Kubeproxy map[string]string `json:"kubeproxy"`
|
||||
// Additional options passed to KubeController
|
||||
KubeController map[string]string `json:"kubeController"`
|
||||
// Additional options passed to Scheduler
|
||||
Scheduler map[string]string `json:"scheduler"`
|
||||
}
|
||||
|
||||
// VsphereCloudProvider options
|
||||
type VsphereCloudProvider struct {
|
||||
Global GlobalVsphereOpts `json:"global,omitempty" yaml:"global,omitempty" ini:"Global,omitempty"`
|
||||
VirtualCenter map[string]VirtualCenterConfig `json:"virtualCenter,omitempty" yaml:"virtual_center,omitempty" ini:"VirtualCenter,omitempty"`
|
||||
Network NetworkVshpereOpts `json:"network,omitempty" yaml:"network,omitempty" ini:"Network,omitempty"`
|
||||
Disk DiskVsphereOpts `json:"disk,omitempty" yaml:"disk,omitempty" ini:"Disk,omitempty"`
|
||||
Workspace WorkspaceVsphereOpts `json:"workspace,omitempty" yaml:"workspace,omitempty" ini:"Workspace,omitempty"`
|
||||
}
|
||||
|
||||
type GlobalVsphereOpts struct {
|
||||
User string `json:"user,omitempty" yaml:"user,omitempty" ini:"user,omitempty"`
|
||||
Password string `json:"password,omitempty" yaml:"password,omitempty" ini:"password,omitempty" norman:"type=password"`
|
||||
VCenterIP string `json:"server,omitempty" yaml:"server,omitempty" ini:"server,omitempty"`
|
||||
VCenterPort string `json:"port,omitempty" yaml:"port,omitempty" ini:"port,omitempty"`
|
||||
InsecureFlag bool `json:"insecure-flag,omitempty" yaml:"insecure-flag,omitempty" ini:"insecure-flag,omitempty"`
|
||||
Datacenter string `json:"datacenter,omitempty" yaml:"datacenter,omitempty" ini:"datacenter,omitempty"`
|
||||
Datacenters string `json:"datacenters,omitempty" yaml:"datacenters,omitempty" ini:"datacenters,omitempty"`
|
||||
DefaultDatastore string `json:"datastore,omitempty" yaml:"datastore,omitempty" ini:"datastore,omitempty"`
|
||||
WorkingDir string `json:"working-dir,omitempty" yaml:"working-dir,omitempty" ini:"working-dir,omitempty"`
|
||||
RoundTripperCount int `json:"soap-roundtrip-count,omitempty" yaml:"soap-roundtrip-count,omitempty" ini:"soap-roundtrip-count,omitempty"`
|
||||
VMUUID string `json:"vm-uuid,omitempty" yaml:"vm-uuid,omitempty" ini:"vm-uuid,omitempty"`
|
||||
VMName string `json:"vm-name,omitempty" yaml:"vm-name,omitempty" ini:"vm-name,omitempty"`
|
||||
}
|
||||
|
||||
type VirtualCenterConfig struct {
|
||||
User string `json:"user,omitempty" yaml:"user,omitempty" ini:"user,omitempty"`
|
||||
Password string `json:"password,omitempty" yaml:"password,omitempty" ini:"password,omitempty" norman:"type=password"`
|
||||
VCenterPort string `json:"port,omitempty" yaml:"port,omitempty" ini:"port,omitempty"`
|
||||
Datacenters string `json:"datacenters,omitempty" yaml:"datacenters,omitempty" ini:"datacenters,omitempty"`
|
||||
RoundTripperCount int `json:"soap-roundtrip-count,omitempty" yaml:"soap-roundtrip-count,omitempty" ini:"soap-roundtrip-count,omitempty"`
|
||||
}
|
||||
|
||||
type NetworkVshpereOpts struct {
|
||||
PublicNetwork string `json:"public-network,omitempty" yaml:"public-network,omitempty" ini:"public-network,omitempty"`
|
||||
}
|
||||
|
||||
type DiskVsphereOpts struct {
|
||||
SCSIControllerType string `json:"scsicontrollertype,omitempty" yaml:"scsicontrollertype,omitempty" ini:"scsicontrollertype,omitempty"`
|
||||
}
|
||||
|
||||
type WorkspaceVsphereOpts struct {
|
||||
VCenterIP string `json:"server,omitempty" yaml:"server,omitempty" ini:"server,omitempty"`
|
||||
Datacenter string `json:"datacenter,omitempty" yaml:"datacenter,omitempty" ini:"datacenter,omitempty"`
|
||||
Folder string `json:"folder,omitempty" yaml:"folder,omitempty" ini:"folder,omitempty"`
|
||||
DefaultDatastore string `json:"default-datastore,omitempty" yaml:"default-datastore,omitempty" ini:"default-datastore,omitempty"`
|
||||
ResourcePoolPath string `json:"resourcepool-path,omitempty" yaml:"resourcepool-path,omitempty" ini:"resourcepool-path,omitempty"`
|
||||
}
|
||||
|
||||
// OpenstackCloudProvider options
|
||||
type OpenstackCloudProvider struct {
|
||||
Global GlobalOpenstackOpts `json:"global" yaml:"global" ini:"Global,omitempty"`
|
||||
LoadBalancer LoadBalancerOpenstackOpts `json:"loadBalancer" yaml:"load_balancer" ini:"LoadBalancer,omitempty"`
|
||||
BlockStorage BlockStorageOpenstackOpts `json:"blockStorage" yaml:"block_storage" ini:"BlockStorage,omitempty"`
|
||||
Route RouteOpenstackOpts `json:"route" yaml:"route" ini:"Route,omitempty"`
|
||||
Metadata MetadataOpenstackOpts `json:"metadata" yaml:"metadata" ini:"Metadata,omitempty"`
|
||||
}
|
||||
|
||||
type GlobalOpenstackOpts struct {
|
||||
AuthURL string `json:"auth-url" yaml:"auth-url" ini:"auth-url,omitempty"`
|
||||
Username string `json:"username" yaml:"username" ini:"username,omitempty"`
|
||||
UserID string `json:"user-id" yaml:"user-id" ini:"user-id,omitempty"`
|
||||
Password string `json:"password" yaml:"password" ini:"password,omitempty" norman:"type=password"`
|
||||
TenantID string `json:"tenant-id" yaml:"tenant-id" ini:"tenant-id,omitempty"`
|
||||
TenantName string `json:"tenant-name" yaml:"tenant-name" ini:"tenant-name,omitempty"`
|
||||
TrustID string `json:"trust-id" yaml:"trust-id" ini:"trust-id,omitempty"`
|
||||
DomainID string `json:"domain-id" yaml:"domain-id" ini:"domain-id,omitempty"`
|
||||
DomainName string `json:"domain-name" yaml:"domain-name" ini:"domain-name,omitempty"`
|
||||
Region string `json:"region" yaml:"region" ini:"region,omitempty"`
|
||||
CAFile string `json:"ca-file" yaml:"ca-file" ini:"ca-file,omitempty"`
|
||||
}
|
||||
|
||||
type LoadBalancerOpenstackOpts struct {
|
||||
LBVersion string `json:"lb-version" yaml:"lb-version" ini:"lb-version,omitempty"` // overrides autodetection. Only support v2.
|
||||
UseOctavia bool `json:"use-octavia" yaml:"use-octavia" ini:"use-octavia,omitempty"` // uses Octavia V2 service catalog endpoint
|
||||
SubnetID string `json:"subnet-id" yaml:"subnet-id" ini:"subnet-id,omitempty"` // overrides autodetection.
|
||||
FloatingNetworkID string `json:"floating-network-id" yaml:"floating-network-id" ini:"floating-network-id,omitempty"` // If specified, will create floating ip for loadbalancer, or do not create floating ip.
|
||||
LBMethod string `json:"lb-method" yaml:"lb-method" ini:"lb-method,omitempty"` // default to ROUND_ROBIN.
|
||||
LBProvider string `json:"lb-provider" yaml:"lb-provider" ini:"lb-provider,omitempty"`
|
||||
CreateMonitor bool `json:"create-monitor" yaml:"create-monitor" ini:"create-monitor,omitempty"`
|
||||
MonitorDelay string `json:"monitor-delay" yaml:"monitor-delay" ini:"monitor-delay,omitempty"`
|
||||
MonitorTimeout string `json:"monitor-timeout" yaml:"monitor-timeout" ini:"monitor-timeout,omitempty"`
|
||||
MonitorMaxRetries int `json:"monitor-max-retries" yaml:"monitor-max-retries" ini:"monitor-max-retries,omitempty"`
|
||||
ManageSecurityGroups bool `json:"manage-security-groups" yaml:"manage-security-groups" ini:"manage-security-groups,omitempty"`
|
||||
}
|
||||
|
||||
type BlockStorageOpenstackOpts struct {
|
||||
BSVersion string `json:"bs-version" yaml:"bs-version" ini:"bs-version,omitempty"` // overrides autodetection. v1 or v2. Defaults to auto
|
||||
TrustDevicePath bool `json:"trust-device-path" yaml:"trust-device-path" ini:"trust-device-path,omitempty"` // See Issue #33128
|
||||
IgnoreVolumeAZ bool `json:"ignore-volume-az" yaml:"ignore-volume-az" ini:"ignore-volume-az,omitempty"`
|
||||
}
|
||||
|
||||
type RouteOpenstackOpts struct {
|
||||
RouterID string `json:"router-id" yaml:"router-id" ini:"router-id,omitempty"` // required
|
||||
}
|
||||
|
||||
type MetadataOpenstackOpts struct {
|
||||
SearchOrder string `json:"search-order" yaml:"search-order" ini:"search-order,omitempty"`
|
||||
RequestTimeout int `json:"request-timeout" yaml:"request-timeout" ini:"request-timeout,omitempty"`
|
||||
}
|
||||
|
||||
// AzureCloudProvider options
|
||||
type AzureCloudProvider struct {
|
||||
// The cloud environment identifier. Takes values from https://github.com/Azure/go-autorest/blob/ec5f4903f77ed9927ac95b19ab8e44ada64c1356/autorest/azure/environments.go#L13
|
||||
Cloud string `json:"cloud" yaml:"cloud"`
|
||||
// The AAD Tenant ID for the Subscription that the cluster is deployed in
|
||||
TenantID string `json:"tenantId" yaml:"tenantId"`
|
||||
// The ID of the Azure Subscription that the cluster is deployed in
|
||||
SubscriptionID string `json:"subscriptionId" yaml:"subscriptionId"`
|
||||
// The name of the resource group that the cluster is deployed in
|
||||
ResourceGroup string `json:"resourceGroup" yaml:"resourceGroup"`
|
||||
// The location of the resource group that the cluster is deployed in
|
||||
Location string `json:"location" yaml:"location"`
|
||||
// The name of the VNet that the cluster is deployed in
|
||||
VnetName string `json:"vnetName" yaml:"vnetName"`
|
||||
// The name of the resource group that the Vnet is deployed in
|
||||
VnetResourceGroup string `json:"vnetResourceGroup" yaml:"vnetResourceGroup"`
|
||||
// The name of the subnet that the cluster is deployed in
|
||||
SubnetName string `json:"subnetName" yaml:"subnetName"`
|
||||
// The name of the security group attached to the cluster's subnet
|
||||
SecurityGroupName string `json:"securityGroupName" yaml:"securityGroupName"`
|
||||
// (Optional in 1.6) The name of the route table attached to the subnet that the cluster is deployed in
|
||||
RouteTableName string `json:"routeTableName" yaml:"routeTableName"`
|
||||
// (Optional) The name of the availability set that should be used as the load balancer backend
|
||||
// If this is set, the Azure cloudprovider will only add nodes from that availability set to the load
|
||||
// balancer backend pool. If this is not set, and multiple agent pools (availability sets) are used, then
|
||||
// the cloudprovider will try to add all nodes to a single backend pool which is forbidden.
|
||||
// In other words, if you use multiple agent pools (availability sets), you MUST set this field.
|
||||
PrimaryAvailabilitySetName string `json:"primaryAvailabilitySetName" yaml:"primaryAvailabilitySetName"`
|
||||
// The type of azure nodes. Candidate valudes are: vmss and standard.
|
||||
// If not set, it will be default to standard.
|
||||
VMType string `json:"vmType" yaml:"vmType"`
|
||||
// The name of the scale set that should be used as the load balancer backend.
|
||||
// If this is set, the Azure cloudprovider will only add nodes from that scale set to the load
|
||||
// balancer backend pool. If this is not set, and multiple agent pools (scale sets) are used, then
|
||||
// the cloudprovider will try to add all nodes to a single backend pool which is forbidden.
|
||||
// In other words, if you use multiple agent pools (scale sets), you MUST set this field.
|
||||
PrimaryScaleSetName string `json:"primaryScaleSetName" yaml:"primaryScaleSetName"`
|
||||
// The ClientID for an AAD application with RBAC access to talk to Azure RM APIs
|
||||
// This's used for service principal authentication: https://github.com/Azure/aks-engine/blob/master/docs/topics/service-principals.md
|
||||
AADClientID string `json:"aadClientId" yaml:"aadClientId"`
|
||||
// The ClientSecret for an AAD application with RBAC access to talk to Azure RM APIs
|
||||
// This's used for service principal authentication: https://github.com/Azure/aks-engine/blob/master/docs/topics/service-principals.md
|
||||
AADClientSecret string `json:"aadClientSecret" yaml:"aadClientSecret" norman:"type=password"`
|
||||
// The path of a client certificate for an AAD application with RBAC access to talk to Azure RM APIs
|
||||
// This's used for client certificate authentication: https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-protocols-oauth-service-to-service
|
||||
AADClientCertPath string `json:"aadClientCertPath" yaml:"aadClientCertPath"`
|
||||
// The password of the client certificate for an AAD application with RBAC access to talk to Azure RM APIs
|
||||
// This's used for client certificate authentication: https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-protocols-oauth-service-to-service
|
||||
AADClientCertPassword string `json:"aadClientCertPassword" yaml:"aadClientCertPassword" norman:"type=password"`
|
||||
// Enable exponential backoff to manage resource request retries
|
||||
CloudProviderBackoff bool `json:"cloudProviderBackoff" yaml:"cloudProviderBackoff"`
|
||||
// Backoff retry limit
|
||||
CloudProviderBackoffRetries int `json:"cloudProviderBackoffRetries" yaml:"cloudProviderBackoffRetries"`
|
||||
// Backoff exponent
|
||||
CloudProviderBackoffExponent int `json:"cloudProviderBackoffExponent" yaml:"cloudProviderBackoffExponent"`
|
||||
// Backoff duration
|
||||
CloudProviderBackoffDuration int `json:"cloudProviderBackoffDuration" yaml:"cloudProviderBackoffDuration"`
|
||||
// Backoff jitter
|
||||
CloudProviderBackoffJitter int `json:"cloudProviderBackoffJitter" yaml:"cloudProviderBackoffJitter"`
|
||||
// Enable rate limiting
|
||||
CloudProviderRateLimit bool `json:"cloudProviderRateLimit" yaml:"cloudProviderRateLimit"`
|
||||
// Rate limit QPS
|
||||
CloudProviderRateLimitQPS int `json:"cloudProviderRateLimitQPS" yaml:"cloudProviderRateLimitQPS"`
|
||||
// Rate limit Bucket Size
|
||||
CloudProviderRateLimitBucket int `json:"cloudProviderRateLimitBucket" yaml:"cloudProviderRateLimitBucket"`
|
||||
// Use instance metadata service where possible
|
||||
UseInstanceMetadata bool `json:"useInstanceMetadata" yaml:"useInstanceMetadata"`
|
||||
// Use managed service identity for the virtual machine to access Azure ARM APIs
|
||||
// This's used for managed identity authentication: https://docs.microsoft.com/en-us/azure/active-directory/managed-service-identity/overview
|
||||
// For user-assigned managed identity, need to set the below UserAssignedIdentityID
|
||||
UseManagedIdentityExtension bool `json:"useManagedIdentityExtension" yaml:"useManagedIdentityExtension"`
|
||||
// The Client ID of the user assigned MSI which is assigned to the underlying VMs
|
||||
// This's used for managed identity authentication: https://docs.microsoft.com/en-us/azure/active-directory/managed-service-identity/overview
|
||||
UserAssignedIdentityID string `json:"userAssignedIdentityID,omitempty" yaml:"userAssignedIdentityID,omitempty"`
|
||||
// Maximum allowed LoadBalancer Rule Count is the limit enforced by Azure Load balancer, default(0) to 148
|
||||
MaximumLoadBalancerRuleCount int `json:"maximumLoadBalancerRuleCount" yaml:"maximumLoadBalancerRuleCount"`
|
||||
// Sku of Load Balancer and Public IP: `basic` or `standard`, default(blank) to `basic`
|
||||
LoadBalancerSku string `json:"loadBalancerSku,omitempty" yaml:"loadBalancerSku,omitempty"`
|
||||
// Excludes master nodes (labeled with `node-role.kubernetes.io/master`) from the backend pool of Azure standard loadbalancer, default(nil) to `true`
|
||||
// If want adding the master nodes to ALB, this should be set to `false` and remove the `node-role.kubernetes.io/master` label from master nodes
|
||||
ExcludeMasterFromStandardLB *bool `json:"excludeMasterFromStandardLB,omitempty" yaml:"excludeMasterFromStandardLB,omitempty"`
|
||||
}
|
||||
|
||||
// AWSCloudProvider options
|
||||
type AWSCloudProvider struct {
|
||||
Global GlobalAwsOpts `json:"global" yaml:"global" ini:"Global,omitempty"`
|
||||
ServiceOverride map[string]ServiceOverride `json:"serviceOverride,omitempty" yaml:"service_override,omitempty" ini:"ServiceOverride,omitempty"`
|
||||
}
|
||||
|
||||
type ServiceOverride struct {
|
||||
Service string `json:"service" yaml:"service" ini:"Service,omitempty"`
|
||||
Region string `json:"region" yaml:"region" ini:"Region,omitempty"`
|
||||
URL string `json:"url" yaml:"url" ini:"URL,omitempty"`
|
||||
SigningRegion string `json:"signing-region" yaml:"signing-region" ini:"SigningRegion,omitempty"`
|
||||
SigningMethod string `json:"signing-method" yaml:"signing-method" ini:"SigningMethod,omitempty"`
|
||||
SigningName string `json:"signing-name" yaml:"signing-name" ini:"SigningName,omitempty"`
|
||||
}
|
||||
|
||||
type GlobalAwsOpts struct {
|
||||
// TODO: Is there any use for this? We can get it from the instance metadata service
|
||||
// Maybe if we're not running on AWS, e.g. bootstrap; for now it is not very useful
|
||||
Zone string `json:"zone" yaml:"zone" ini:"Zone,omitempty"`
|
||||
|
||||
// The AWS VPC flag enables the possibility to run the master components
|
||||
// on a different aws account, on a different cloud provider or on-premises.
|
||||
// If the flag is set also the KubernetesClusterTag must be provided
|
||||
VPC string `json:"vpc" yaml:"vpc" ini:"VPC,omitempty"`
|
||||
// SubnetID enables using a specific subnet to use for ELB's
|
||||
SubnetID string `json:"subnet-id" yaml:"subnet-id" ini:"SubnetID,omitempty"`
|
||||
// RouteTableID enables using a specific RouteTable
|
||||
RouteTableID string `json:"routetable-id" yaml:"routetable-id" ini:"RouteTableID,omitempty"`
|
||||
|
||||
// RoleARN is the IAM role to assume when interaction with AWS APIs.
|
||||
RoleARN string `json:"role-arn" yaml:"role-arn" ini:"RoleARN,omitempty"`
|
||||
|
||||
// KubernetesClusterTag is the legacy cluster id we'll use to identify our cluster resources
|
||||
KubernetesClusterTag string `json:"kubernetes-cluster-tag" yaml:"kubernetes-cluster-tag" ini:"KubernetesClusterTag,omitempty"`
|
||||
// KubernetesClusterID is the cluster id we'll use to identify our cluster resources
|
||||
KubernetesClusterID string `json:"kubernetes-cluster-id" yaml:"kubernetes-cluster-id" ini:"KubernetesClusterID,omitempty"`
|
||||
|
||||
//The aws provider creates an inbound rule per load balancer on the node security
|
||||
//group. However, this can run into the AWS security group rule limit of 50 if
|
||||
//many LoadBalancers are created.
|
||||
//
|
||||
//This flag disables the automatic ingress creation. It requires that the user
|
||||
//has setup a rule that allows inbound traffic on kubelet ports from the
|
||||
//local VPC subnet (so load balancers can access it). E.g. 10.82.0.0/16 30000-32000.
|
||||
DisableSecurityGroupIngress bool `json:"disable-security-group-ingress" yaml:"disable-security-group-ingress" ini:"DisableSecurityGroupIngress,omitempty"`
|
||||
|
||||
//AWS has a hard limit of 500 security groups. For large clusters creating a security group for each ELB
|
||||
//can cause the max number of security groups to be reached. If this is set instead of creating a new
|
||||
//Security group for each ELB this security group will be used instead.
|
||||
ElbSecurityGroup string `json:"elb-security-group" yaml:"elb-security-group" ini:"ElbSecurityGroup,omitempty"`
|
||||
|
||||
//During the instantiation of an new AWS cloud provider, the detected region
|
||||
//is validated against a known set of regions.
|
||||
//
|
||||
//In a non-standard, AWS like environment (e.g. Eucalyptus), this check may
|
||||
//be undesirable. Setting this to true will disable the check and provide
|
||||
//a warning that the check was skipped. Please note that this is an
|
||||
//experimental feature and work-in-progress for the moment. If you find
|
||||
//yourself in an non-AWS cloud and open an issue, please indicate that in the
|
||||
//issue body.
|
||||
DisableStrictZoneCheck bool `json:"disable-strict-zone-check" yaml:"disable-strict-zone-check" ini:"DisableStrictZoneCheck,omitempty"`
|
||||
}
|
||||
|
||||
type MonitoringConfig struct {
|
||||
// Monitoring server provider
|
||||
Provider string `yaml:"provider" json:"provider,omitempty" norman:"default=metrics-server"`
|
||||
// Metrics server options
|
||||
Options map[string]string `yaml:"options" json:"options,omitempty"`
|
||||
// NodeSelector key pair
|
||||
NodeSelector map[string]string `yaml:"node_selector" json:"nodeSelector,omitempty"`
|
||||
// Update strategy
|
||||
UpdateStrategy *DeploymentStrategy `yaml:"update_strategy" json:"updateStrategy,omitempty"`
|
||||
// Number of monitoring addon pods
|
||||
Replicas *int32 `yaml:"replicas" json:"replicas,omitempty" norman:"default=1"`
|
||||
}
|
||||
|
||||
type RestoreConfig struct {
|
||||
Restore bool `yaml:"restore" json:"restore,omitempty"`
|
||||
SnapshotName string `yaml:"snapshot_name" json:"snapshotName,omitempty"`
|
||||
}
|
||||
type RotateCertificates struct {
|
||||
// Rotate CA Certificates
|
||||
CACertificates bool `json:"caCertificates,omitempty"`
|
||||
// Services to rotate their certs
|
||||
Services []string `json:"services,omitempty" norman:"type=enum,options=etcd|kubelet|kube-apiserver|kube-proxy|kube-scheduler|kube-controller-manager"`
|
||||
}
|
||||
|
||||
type DNSConfig struct {
|
||||
// DNS provider
|
||||
Provider string `yaml:"provider" json:"provider,omitempty"`
|
||||
// Upstream nameservers
|
||||
UpstreamNameservers []string `yaml:"upstreamnameservers" json:"upstreamnameservers,omitempty"`
|
||||
// ReverseCIDRs
|
||||
ReverseCIDRs []string `yaml:"reversecidrs" json:"reversecidrs,omitempty"`
|
||||
// Stubdomains
|
||||
StubDomains map[string][]string `yaml:"stubdomains" json:"stubdomains,omitempty"`
|
||||
// NodeSelector key pair
|
||||
NodeSelector map[string]string `yaml:"node_selector" json:"nodeSelector,omitempty"`
|
||||
// Nodelocal DNS
|
||||
Nodelocal *Nodelocal `yaml:"nodelocal" json:"nodelocal,omitempy"`
|
||||
// Update strategy
|
||||
UpdateStrategy *DeploymentStrategy `yaml:"update_strategy" json:"updateStrategy,omitempty"`
|
||||
// Autoscaler fields to determine number of dns replicas
|
||||
LinearAutoscalerParams *LinearAutoscalerParams `yaml:"linear_autoscaler_params" json:"linearAutoscalerParams,omitempty"`
|
||||
}
|
||||
|
||||
type Nodelocal struct {
|
||||
// link-local IP for nodelocal DNS
|
||||
IPAddress string `yaml:"ip_address" json:"ipAddress,omitempy"`
|
||||
// Nodelocal DNS daemonset upgrade strategy
|
||||
UpdateStrategy *DaemonSetUpdateStrategy `yaml:"update_strategy" json:"updateStrategy,omitempty"`
|
||||
// NodeSelector key pair
|
||||
NodeSelector map[string]string `yaml:"node_selector" json:"nodeSelector,omitempty"`
|
||||
}
|
||||
|
||||
// LinearAutoscalerParams contains fields expected by the cluster-proportional-autoscaler https://github.com/kubernetes-incubator/cluster-proportional-autoscaler/blob/0c61e63fc81449abdd52315aa27179a17e5d1580/pkg/autoscaler/controller/linearcontroller/linear_controller.go#L50
|
||||
type LinearAutoscalerParams struct {
|
||||
CoresPerReplica float64 `yaml:"cores_per_replica" json:"coresPerReplica,omitempty" norman:"default=128"`
|
||||
NodesPerReplica float64 `yaml:"nodes_per_replica" json:"nodesPerReplica,omitempty" norman:"default=4"`
|
||||
Min int `yaml:"min" json:"min,omitempty" norman:"default=1"`
|
||||
Max int `yaml:"max" json:"max,omitempty"`
|
||||
PreventSinglePointFailure bool `yaml:"prevent_single_point_failure" json:"preventSinglePointFailure,omitempty" norman:"default=true"`
|
||||
}
|
||||
|
||||
type RKETaint struct {
|
||||
Key string `json:"key,omitempty" yaml:"key"`
|
||||
Value string `json:"value,omitempty" yaml:"value"`
|
||||
Effect v1.TaintEffect `json:"effect,omitempty" yaml:"effect"`
|
||||
TimeAdded *metav1.Time `json:"timeAdded,omitempty" yaml:"timeAdded,omitempty"`
|
||||
}
|
||||
|
||||
type SecretsEncryptionConfig struct {
|
||||
// Enable/disable secrets encryption provider config
|
||||
Enabled bool `yaml:"enabled" json:"enabled,omitempty"`
|
||||
// Custom Encryption Provider configuration object
|
||||
CustomConfig *apiserverconfig.EncryptionConfiguration `yaml:"custom_config" json:"customConfig,omitempty" norman:"type=map[json]"`
|
||||
}
|
||||
|
||||
type File struct {
|
||||
Name string `json:"name,omitempty"`
|
||||
Contents string `json:"contents,omitempty"`
|
||||
}
|
||||
|
||||
type NodeDrainInput struct {
|
||||
// Drain node even if there are pods not managed by a ReplicationController, Job, or DaemonSet
|
||||
// Drain will not proceed without Force set to true if there are such pods
|
||||
Force bool `yaml:"force" json:"force,omitempty"`
|
||||
// If there are DaemonSet-managed pods, drain will not proceed without IgnoreDaemonSets set to true
|
||||
// (even when set to true, kubectl won't delete pods - so setting default to true)
|
||||
IgnoreDaemonSets *bool `yaml:"ignore_daemonsets" json:"ignoreDaemonSets,omitempty" norman:"default=true"`
|
||||
// Continue even if there are pods using emptyDir
|
||||
DeleteLocalData bool `yaml:"delete_local_data" json:"deleteLocalData,omitempty"`
|
||||
//Period of time in seconds given to each pod to terminate gracefully.
|
||||
// If negative, the default value specified in the pod will be used
|
||||
GracePeriod int `yaml:"grace_period" json:"gracePeriod,omitempty" norman:"default=-1"`
|
||||
// Time to wait (in seconds) before giving up for one try
|
||||
Timeout int `yaml:"timeout" json:"timeout" norman:"min=1,max=10800,default=120"`
|
||||
}
|
38
types/update_strategy_types.go
Normal file
38
types/update_strategy_types.go
Normal file
@ -0,0 +1,38 @@
|
||||
package types
|
||||
|
||||
import (
|
||||
appsv1 "k8s.io/api/apps/v1"
|
||||
)
|
||||
|
||||
/* All fields in this file are copied over from apps/v1. Referencing k8s fields caused problems because of the "Type" field in
|
||||
DeploymentStrategy and DaemonSetUpdateStrategy*/
|
||||
|
||||
// DeploymentStrategy describes how to replace existing pods with new ones.
|
||||
type DeploymentStrategy struct {
|
||||
// Type of deployment. Can be "Recreate" or "RollingUpdate". Default is RollingUpdate.
|
||||
// +optional
|
||||
Strategy appsv1.DeploymentStrategyType `json:"strategy,omitempty" protobuf:"bytes,1,opt,name=type,casttype=DeploymentStrategyType"`
|
||||
|
||||
// Rolling update config params. Present only if DeploymentStrategyType =
|
||||
// RollingUpdate.
|
||||
//---
|
||||
// TODO: Update this to follow our convention for oneOf, whatever we decide it
|
||||
// to be.
|
||||
// +optional
|
||||
RollingUpdate *appsv1.RollingUpdateDeployment `json:"rollingUpdate,omitempty" protobuf:"bytes,2,opt,name=rollingUpdate"`
|
||||
}
|
||||
|
||||
// DaemonSetUpdateStrategy is a struct used to control the update strategy for a DaemonSet.
|
||||
type DaemonSetUpdateStrategy struct {
|
||||
// Type of daemon set update. Can be "RollingUpdate" or "OnDelete". Default is RollingUpdate.
|
||||
// +optional
|
||||
Strategy appsv1.DaemonSetUpdateStrategyType `json:"strategy,omitempty" protobuf:"bytes,1,opt,name=type"`
|
||||
|
||||
// Rolling update config params. Present only if type = "RollingUpdate".
|
||||
//---
|
||||
// TODO: Update this to follow our convention for oneOf, whatever we decide it
|
||||
// to be. Same as Deployment `strategy.rollingUpdate`.
|
||||
// See https://github.com/kubernetes/kubernetes/issues/35345
|
||||
// +optional
|
||||
RollingUpdate *appsv1.RollingUpdateDaemonSet `json:"rollingUpdate,omitempty" protobuf:"bytes,2,opt,name=rollingUpdate"`
|
||||
}
|
Loading…
Reference in New Issue
Block a user