v1alpha1

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Jun 4, 2022 License: MIT Imports: 10 Imported by: 0

Documentation

Overview

Package v1alpha1 contains API Schema definitions for the k3s v1alpha1 API group +kubebuilder:object:generate=true +groupName=k3s.bbox.kiev.ua

Index

Constants

View Source
const (
	// Base64 implies the contents of the file are encoded as base64.
	Base64 Encoding = "base64"
	// Gzip implies the contents of the file are encoded with gzip.
	Gzip Encoding = "gzip"
	// GzipBase64 implies the contents of the file are first base64 encoded and then gzip encoded.
	GzipBase64 Encoding = "gzip+base64"
	// Local      string   = "local"
	// Public              string = "ExternalIP"
	// Private             string = "InternalIP"
	ExternalIP          string = "ExternalIP"
	ExternalDNS         string = "ExternalDNS"
	InternalIP          string = "InternalIP"
	InternalDNS         string = "InternalDNS"
	SshKeyDefault       string = "~/.ssh/id_rsa"
	SshPortDefault      int32  = 22
	DatastoreMySql      string = "mysql"
	DatastorePostgreSql string = "postgres"
	DatastoreEtcd       string = "etcd"
)
View Source
const DefaultConfigTpl = `---
apiVersion: k3d.io/v1alpha2
kind: Simple
name: %s
servers: 1
agents: 0
image: %s
`

DefaultConfigTpl for printing

Variables

View Source
var (
	// GroupVersion is group version used to register these objects
	GroupVersion = schema.GroupVersion{Group: "k3s.bbox.kiev.ua", Version: "v1alpha1"}

	// SchemeBuilder is used to add go types to the GroupVersionKind scheme
	SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}

	// AddToScheme adds the types in this group-version to the given scheme.
	AddToScheme = SchemeBuilder.AddToScheme
)
View Source
var PrivateHost = []string{InternalIP, InternalDNS}
View Source
var PublicHost = []string{ExternalIP, InternalIP}

Functions

func Find

func Find(slice []string, val string) (string, bool)

Types

type AddonOptions

type AddonOptions struct {
	UpdateStrategy string `mapstructure:"updateStrategy,omitempty" yaml:"updateStrategy,omitempty" json:"updateStrategy,omitempty"` // none, latest
	NoWait         bool   `mapstructure:"noWait" yaml:"noWait" json:"noWait,omitempty"`
}

type Addons

type Addons struct {
	Ingress      Ingress      `mapstructure:"ingress" yaml:"ingress" json:"ingress,omitempty"`
	CertManager  CertManager  `mapstructure:"certManager" yaml:"certManager,omitempty" json:"certManager,omitempty"`
	MetalLB      MetalLB      `mapstructure:"metallb" yaml:"metallb,omitempty" json:"metallb,omitempty"`
	ExternalDns  ExternalDns  `mapstructure:"externalDns" yaml:"externalDns,omitempty" json:"externalDns,omitempty"`
	PulumiModule PulumiModule `mapstructure:"pulumi" yaml:"pulumi,omitempty" json:"pulumi,omitempty"`
	Registries   Registry     `mapstructure:"registries" yaml:"registries,omitempty" json:"registries,omitempty"`
	Options      AddonOptions `mapstructure:"options" yaml:"options" json:"options,omitempty"`
}

func (*Addons) DeepCopy

func (in *Addons) DeepCopy() *Addons

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Addons.

func (*Addons) DeepCopyInto

func (in *Addons) DeepCopyInto(out *Addons)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentOpts

type AgentOpts struct{}

AgentOpts describes some additional agent role specific opts

func (*AgentOpts) DeepCopy

func (in *AgentOpts) DeepCopy() *AgentOpts

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentOpts.

func (*AgentOpts) DeepCopyInto

func (in *AgentOpts) DeepCopyInto(out *AgentOpts)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type BastionNode

type BastionNode struct {
	// Name The bastion Name
	Name string `mapstructure:"name" yaml:"name" json:"name,omitempty"`
	// User Ssh user is empty use bastion name
	// +optional
	User string `mapstructure:"user" yaml:"user" json:"user,omitempty"`
	// Address bastion host
	Address string `mapstructure:"address" yaml:"address" json:"address"`
	// SshPort specifies the port the SSH bastion host.
	// Defaults to 22.
	// +optional
	SshPort int32 `mapstructure:"sshPort" yaml:"sshPort" json:"sshPort,omitempty"`
	// SSHAuthorizedKey specifies a list of ssh authorized keys for the user
	// +optional
	SSHAuthorizedKey string `mapstructure:"sshAuthorizedKey" yaml:"sshAuthorizedKey" json:"sshAuthorizedKey,omitempty"`
	// RemoteConnectionString TODO: tranclate строка подключения к удаленному хосту если через bastion
	// +optional
	RemoteConnectionString string `` /* 127-byte string literal not displayed */
	// RemoteSudo TODO: tranclate если через bastion и пользовател на приватном хосте не root устанавливается true
	// +optional
	RemoteSudo string `mapstructure:"remoteSudo,omitempty" yaml:"remoteSudo,omitempty" json:"remoteSudo,omitempty"`
	// RemoteAddress адрес хоста за бастионом
	// TODO: translate
	// +optional
	RemoteAddress string `mapstructure:"remoteAddress,omitempty" yaml:"remoteAddress,omitempty" json:"remoteAddress,omitempty"`
	// +optional
	RemoteUser string `mapstructure:"remoteUser,omitempty" yaml:"remoteUser,omitempty" json:"remoteUser,omitempty"`
	// +optional
	RemotePort int32 `mapstructure:"remotePort,omitempty" yaml:"remotePort,omitempty" json:"remotePort,omitempty"`
}

func (*BastionNode) DeepCopy

func (in *BastionNode) DeepCopy() *BastionNode

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BastionNode.

func (*BastionNode) DeepCopyInto

func (in *BastionNode) DeepCopyInto(out *BastionNode)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type CertManager

type CertManager struct {
	Name       string            `mapstructure:"name" yaml:"name" json:"name,omitempty"`
	Namespace  string            `mapstructure:"namespace" yaml:"namespace" json:"namespace,omitempty"`
	Disabled   bool              `mapstructure:"disabled" yaml:"disabled" json:"disabled,omitempty"`
	Version    string            `mapstructure:"version" yaml:"version" json:"version,omitempty"`
	URL        string            `mapstructure:"url" yaml:"url" json:"url,omitempty"`
	Values     map[string]string `mapstructure:"values" yaml:"values" json:"values,omitempty"`
	ValuesFile string            `mapstructure:"valuesFile" yaml:"valuesFile" json:"valuesFile,omitempty"`
}

func (*CertManager) DeepCopy

func (in *CertManager) DeepCopy() *CertManager

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CertManager.

func (*CertManager) DeepCopyInto

func (in *CertManager) DeepCopyInto(out *CertManager)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Cluster

type Cluster struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   ClusterSpec   `json:"spec,omitempty"`
	Status ClusterStatus `json:"status,omitempty"`
}

Cluster is the Schema for the clusters API

func (*Cluster) DeepCopy

func (in *Cluster) DeepCopy() *Cluster

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Cluster.

func (*Cluster) DeepCopyInto

func (in *Cluster) DeepCopyInto(out *Cluster)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Cluster) DeepCopyObject

func (in *Cluster) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*Cluster) GetAPIServerAddress

func (r *Cluster) GetAPIServerAddress(node *Node, vpc *Networking) (apiServerAddres string, err error)

GetAPIServerAddress возвращает hostname  or ip API Server

func (*Cluster) GetAPIServerUrl

func (r *Cluster) GetAPIServerUrl(masters []ContrelPlanNodes, vpc *Networking, isExternal bool) (apiServerUrl string, err error)

GetAPIServerUrl url для подключения к API серверу TODO: delete

func (*Cluster) GetBastion

func (r *Cluster) GetBastion(name string, node *Node) (bastion *BastionNode, err error)

GetBastion search and return bastion host для работы через baston смотреть README

func (*Cluster) GetDatastore

func (r *Cluster) GetDatastore(dbPassword string) (string, error)

GetDatastore connection string

func (*Cluster) GetNodeAddress

func (r *Cluster) GetNodeAddress(node *Node, valType string) (string, bool)

GetNodeAddress возращает hostnamr или ip в зависимости от valType (internal|external)

func (*Cluster) GetNodeLabels

func (r *Cluster) GetNodeLabels(node *Node) (cnt int)

func (*Cluster) GetProvider

func (r *Cluster) GetProvider() string

func (*Cluster) GetTlsSan

func (r *Cluster) GetTlsSan(node *Node, vpc *Networking) (tlsSAN []string)

GetTlsSan Add additional hostname or IP as a Subject Alternative Name in the TLS cert

func (*Cluster) GetUser

func (r *Cluster) GetUser(name string) User

type ClusterList

type ClusterList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []Cluster `json:"items"`
}

ClusterList contains a list of Cluster

func (*ClusterList) DeepCopy

func (in *ClusterList) DeepCopy() *ClusterList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterList.

func (*ClusterList) DeepCopyInto

func (in *ClusterList) DeepCopyInto(out *ClusterList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ClusterList) DeepCopyObject

func (in *ClusterList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type ClusterNode

type ClusterNode struct {
	InstanceID              string   `json:"instance-id,omitempty" yaml:"instance-id,omitempty"`
	InstanceStatus          string   `json:"instance-status,omitempty" yaml:"instance-statu,omitempty"`
	ExternalIP              []string `json:"external-ip,omitempty" yaml:"external-ip,omitempty"`
	InternalIP              []string `json:"internal-ip,omitempty" yaml:"internal-ip,omitempty"`
	Roles                   string   `json:"roles,omitempty" yaml:"status,omitempty"`
	Status                  string   `json:"status,omitempty" yaml:"status,omitempty"`
	HostName                string   `json:"hostname,omitempty" yaml:"hostname,omitempty"`
	ContainerRuntimeVersion string   `json:"containerRuntimeVersion,omitempty" yaml:"containerRuntimeVersion,omitempty"`
	Version                 string   `json:"version,omitempty" yaml:"version,omitempty"`
	Master                  bool     `json:"-" yaml:"master,omitempty"`
}

ClusterNode struct for cluster node.

type ClusterSpec

type ClusterSpec struct {
	Region            string                        `mapstructure:"region" yaml:"region" json:"region,omitempty"`
	Provider          string                        `mapstructure:"provider" json:"provider" yaml:"provider"`
	Operator          bool                          `mapstructure:"operator" yaml:"operator" json:"operator,omitempty"`
	Servers           int                           `mapstructure:"servers" yaml:"servers" json:"servers,omitempty"` //nolint:lll    // default 1
	Agents            int                           `mapstructure:"agents" yaml:"agents" json:"agents,omitempty"`    //nolint:lll    // default 0
	ClusterToken      string                        `mapstructure:"clusterToken" yaml:"clusterToken" json:"clusterToken,omitempty"`
	AgentToken        string                        `mapstructure:"agentToken" yaml:"agentToken" json:"agentToken,omitempty"`
	Bastions          []*BastionNode                `mapstructure:"bastions" yaml:"bastions" json:"bastions,omitempty"`
	Nodes             []*Node                       `mapstructure:"nodes" yaml:"nodes" json:"nodes,omitempty"`
	Labels            []LabelWithNodeFilters        `mapstructure:"labels" yaml:"labels" json:"labels,omitempty"`
	Env               []EnvVarWithNodeFilters       `mapstructure:"env" yaml:"env" json:"env,omitempty"`
	Options           Options                       `mapstructure:"options" yaml:"options" json:"options,omitempty"`
	K3sOptions        SimpleConfigOptionsK3s        `mapstructure:"k3s" yaml:"k3s" json:"k3s,omitempty"`
	LoadBalancer      LoadBalancer                  `mapstructure:"loadBalancer" yaml:"loadBalancer" json:"loadBalancer,omitempty"`
	Addons            Addons                        `mapstructure:"addons" yaml:"addons" json:"addons,omitempty"`
	KubeconfigOptions SimpleConfigOptionsKubeconfig `mapstructure:"kubeconfig" yaml:"kubeconfig" json:"kubeconfig,omitempty"`
	Volumes           []VolumeWithNodeFilters       `mapstructure:"volumes" yaml:"volumes" json:"volumes,omitempty"`
	// Host              string                        `mapstructure:"host" yaml:"host,omitempty" json:"host,omitempty"`
	// HostIP            string                        `mapstructure:"hostIP" yaml:"hostIP,omitempty" json:"hostIP,omitempty"`
	// Datastore k3s datastore to enable HA https://rancher.com/docs/k3s/latest/en/installation/datastore/
	// +optional
	Datastore Datastore `mapstructure:"datastore" yaml:"datastore" json:"datastore,omitempty"`
	// The cluster name
	// +optional
	ClusterName string `json:"clusterName,omitempty"`
	// KubernetesVersion is the target version of the control plane.
	// NB: This value defaults to the Machine object spec.kuberentesVersion
	// +optional
	KubernetesVersion string `mapstructure:"kubernetesVersion" yaml:"kubernetesVersion" json:"kubernetesVersion,omitempty"`
	// K3sChannel Release channel: stable, latest, or i.e. v1.19
	// +optional
	K3sChannel string `mapstructure:"channel,omitempty" yaml:"channel,omitempty" json:"channel,omitempty"`
	// Networking holds configuration for the networking topology of the cluster.
	// NB: This value defaults to the Cluster object spec.clusterNetwork.
	// +optional
	Networking Networking `mapstructure:"networking" yaml:"networking" json:"networking,omitempty"`
	// Cluster network configuration.
	// +optional
	// ClusterNetwork *clusterv1.ClusterNetwork `json:"clusterNetwork,omitempty"`
	// CertificatesDir specifies where to store or look for all required certificates.
	// NB: if not provided, this will default to `/etc/kubernetes/pki`
	// +optional
	CertificatesDir string `json:"certificatesDir,omitempty"`
	// Files specifies extra files to be passed to user_data upon creation.
	// +optional
	Files []File `json:"files,omitempty"`
	// PreCommands specifies extra commands to run before kubeadm runs
	// +optional
	PreCommands []string `json:"preCommands,omitempty"`
	// PostCommands specifies extra commands to run after kubeadm runs
	// +optional
	PostCommands []string `json:"postCommands,omitempty"`
	// Users specifies extra users to add
	// +optional
	Users []User `json:"users,omitempty"`
	// NTP specifies NTP configuration
	// +optional
	NTP *NTP `json:"ntp,omitempty"`
}

ClusterSpec defines the desired state of Cluster https://github.com/kubernetes-sigs/cluster-api-bootstrap-provider-kubeadm/blob/master/kubeadm/v1beta1/types.go

func (*ClusterSpec) DeepCopy

func (in *ClusterSpec) DeepCopy() *ClusterSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterSpec.

func (*ClusterSpec) DeepCopyInto

func (in *ClusterSpec) DeepCopyInto(out *ClusterSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ClusterStatus

type ClusterStatus struct {
	// INSERT ADDITIONAL STATUS FIELD - define observed state of cluster
	// Important: Run "make" to regenerate code after modifying this file
	Status      string  `json:"status,omitempty"`
	MasterNodes []*Node `json:"masters,omitempty"`
	WorkerNodes []*Node `json:"workers,omitempty"`
}

ClusterStatus defines the observed state of Cluster

func (*ClusterStatus) DeepCopy

func (in *ClusterStatus) DeepCopy() *ClusterStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterStatus.

func (*ClusterStatus) DeepCopyInto

func (in *ClusterStatus) DeepCopyInto(out *ClusterStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ContrelPlanNodes

type ContrelPlanNodes struct {
	ClusterName     string       `mapstructure:"clusterName" yaml:"clusterName" json:"clusterName,omitempty"`
	ApiServerAddres string       `mapstructure:"apiServerAddres" yaml:"apiServerAddres" json:"apiServerAddres,omitempty"`
	Bastion         *BastionNode `mapstructure:"bastion" yaml:"bastion" json:"bastion"`
	Node            *Node        `mapstructure:"node" yaml:"node" json:"node"`
}

func (*ContrelPlanNodes) DeepCopy

func (in *ContrelPlanNodes) DeepCopy() *ContrelPlanNodes

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContrelPlanNodes.

func (*ContrelPlanNodes) DeepCopyInto

func (in *ContrelPlanNodes) DeepCopyInto(out *ContrelPlanNodes)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Datastore

type Datastore struct {
	// Name Database name ("mysql", "postgresql", "etcd")
	Name string `mapstructure:"name" yaml:"name" json:"name,omitempty"`
	// Provider Database name ("mysql", "postgres", "etcd")
	Provider string `mapstructure:"provider" yaml:"provider" json:"provider,omitempty"`
	Username string `mapstructure:"username" yaml:"username" json:"username,omitempty"`
	Password string `mapstructure:"DB_PASSWORD"`
	Host     string `mapstructure:"host" yaml:"host,omitempty" json:"host,omitempty"`
	// Port DataBase port
	// +optional
	Port int32 `mapstructure:"port" yaml:"port,omitempty" json:"port,omitempty"`
	// CertFile K3S_DATASTORE_CERTFILE='/path/to/client.crt'
	// +optional
	CertFile string `mapstructure:"certFile" yaml:"certFile,omitempty" json:"certFile,omitempty"`
	// KeyFile K3S_DATASTORE_KEYFILE='/path/to/client.key'
	// +optional
	KeyFile string `mapstructure:"keyFile" yaml:"keyFile,omitempty" json:"keyFile,omitempty"`
}

func (*Datastore) DeepCopy

func (in *Datastore) DeepCopy() *Datastore

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Datastore.

func (*Datastore) DeepCopyInto

func (in *Datastore) DeepCopyInto(out *Datastore)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Encoding

type Encoding string

Encoding specifies the cloud-init file encoding. +kubebuilder:validation:Enum=base64;gzip;gzip+base64

type EnvConfig

type EnvConfig struct {
	DBPassword          string `mapstructure:"DB_PASSWORD"`
	HcloudToken         string `mapstructure:"HCLOUD_TOKEN"`
	AwsAccessKeyId      string `mapstructure:"AWS_ACCESS_KEY_ID"`
	AwsSecretAccessKey  string `mapstructure:"AWS_SECRET_ACCESS_KEY"`
	AzureClientId       string `mapstructure:"ARM_CLIENT_ID"`
	AzureClientSecret   string `mapstructure:"ARM_CLIENT_SECRET"`
	AzureTenantId       string `mapstructure:"ARM_TENANT_ID"`
	AzureSubscriptionId string `mapstructure:"ARM_SUBSCRIPTION_ID"`
}

type EnvServer

type EnvServer struct {
	K3sDatastoreEndpoint string `mapstructure:"K3S_DATASTORE_ENDPOINT"`
	K3sDatastoreXafile   string `mapstructure:"K3S_DATASTORE_CAFILE"`
	K3sDatastoreCertfile string `mapstructure:"K3S_DATASTORE_CERTFILE"`
	K3sDatastoreKeyfile  string `mapstructure:"K3S_DATASTORE_KEYFILE"`
	AwsAccessKeyId       string `mapstructure:"AWS_ACCESS_KEY_ID"`
	AwsSecretAccessKey   string `mapstructure:"AWS_SECRET_ACCESS_KEY"`
	K3sToken             string `mapstructure:"K3S_TOKEN"`
	K3sTokenFile         string `mapstructure:"K3S_TOKEN_FILE"`
	K3sKubeconfigOutput  string `mapstructure:"K3S_KUBECONFIG_OUTPUT"`
	K3sKubeconfigMode    string `mapstructure:"K3S_KUBECONFIG_MODE"`
	K3sNodeName          string `mapstructure:"K3S_NODE_NAME"`
	K3sSelinux           string `mapstructure:"K3S_SELINUX"`
	K3sLbServerPort      string `mapstructure:"K3S_LB_SERVER_PORT"`
	K3sResolvConf        string `mapstructure:"K3S_RESOLV_CONF"`
	K3sAgentToken        string `mapstructure:"K3S_AGENT_TOKEN"`
	K3sAgentTokenFile    string `mapstructure:"K3S_AGENT_TOKEN_FILE"`
	K3sUrl               string `mapstructure:"K3S_URL"`
	K3sClusterInit       string `mapstructure:"K3S_CLUSTER_INIT"`
	K3sClusterReset      string `mapstructure:"K3S_CLUSTER_RESET"`
	K3sClusterSecret     string `mapstructure:"K3S_CLUSTER_SECRET"`
}

type EnvVarWithNodeFilters

type EnvVarWithNodeFilters struct {
	EnvVar      string   `mapstructure:"envVar" yaml:"envVar" json:"envVar,omitempty"`
	NodeFilters []string `mapstructure:"nodeFilters" yaml:"nodeFilters" json:"nodeFilters,omitempty"`
}

func (*EnvVarWithNodeFilters) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EnvVarWithNodeFilters.

func (*EnvVarWithNodeFilters) DeepCopyInto

func (in *EnvVarWithNodeFilters) DeepCopyInto(out *EnvVarWithNodeFilters)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ExposureOpts

type ExposureOpts struct {
	nat.PortMapping        // filled automatically (reference to normal portmapping)
	Host            string `yaml:"host,omitempty" json:"host,omitempty"`
}

ExposureOpts describes settings that the user can set for accessing the Kubernetes API

func (*ExposureOpts) DeepCopy

func (in *ExposureOpts) DeepCopy() *ExposureOpts

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExposureOpts.

func (*ExposureOpts) DeepCopyInto

func (in *ExposureOpts) DeepCopyInto(out *ExposureOpts)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ExternalDatastore

type ExternalDatastore struct {
	Endpoint string `yaml:"endpoint" json:"endpoint,omitempty"`
	CAFile   string `yaml:"caFile" json:"caFile,omitempty"`
	CertFile string `yaml:"certFile" json:"certFile,omitempty"`
	KeyFile  string `yaml:"keyFile" json:"keyFile,omitempty"`
	Network  string `yaml:"network" json:"network,omitempty"`
}

ExternalDatastore describes an external datastore used for HA/multi-server clusters

func (*ExternalDatastore) DeepCopy

func (in *ExternalDatastore) DeepCopy() *ExternalDatastore

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalDatastore.

func (*ExternalDatastore) DeepCopyInto

func (in *ExternalDatastore) DeepCopyInto(out *ExternalDatastore)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ExternalDns

type ExternalDns struct {
	Name       string            `mapstructure:"name" yaml:"name" json:"name,omitempty"`
	Namespace  string            `mapstructure:"namespace" yaml:"namespace" json:"namespace,omitempty"`
	Disabled   bool              `mapstructure:"disabled" yaml:"disabled" json:"disabled,omitempty"`
	Version    string            `mapstructure:"version" yaml:"version" json:"version,omitempty"`
	URL        string            `mapstructure:"url" yaml:"url" json:"url,omitempty"`
	Values     map[string]string `mapstructure:"values" yaml:"values" json:"values,omitempty"`
	ValuesFile string            `mapstructure:"valuesFile" yaml:"valuesFile" json:"valuesFile,omitempty"`
}

type File

type File struct {
	// Path specifies the full path on disk where to store the file.
	Path string `json:"path"`

	// Owner specifies the ownership of the file, e.g. "root:root".
	// +optional
	Owner string `json:"owner,omitempty"`

	// Permissions specifies the permissions to assign to the file, e.g. "0640".
	// +optional
	Permissions string `json:"permissions,omitempty"`

	// Encoding specifies the encoding of the file contents.
	// +optional
	Encoding Encoding `json:"encoding,omitempty"`

	// Content is the actual content of the file.
	Content string `json:"content"`
}

File defines the input for generating write_files in cloud-init.

func (*File) DeepCopy

func (in *File) DeepCopy() *File

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new File.

func (*File) DeepCopyInto

func (in *File) DeepCopyInto(out *File)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type HelmInterfaces

type HelmInterfaces struct {
	Name       string            `mapstructure:"name" yaml:"name" json:"name"`
	Namespace  string            `mapstructure:"namespace" yaml:"namespace" json:"namespace"`
	Repo       string            `mapstructure:"repo" yaml:"repo" json:"repo"`
	Url        string            `mapstructure:"url" yaml:"url" json:"url"`
	Revision   int               `mapstructure:"revision" yaml:"revision" json:"revision"`
	Updated    string            `mapstructure:"updated" yaml:"updated" json:"updated"`
	Deleted    bool              `mapstructure:"deleted" yaml:"deleted" json:"deleted,omitempty"`
	Status     string            `mapstructure:"status" yaml:"status" json:"status"`
	Chart      string            `mapstructure:"chart" yaml:"chart" json:"chart"`
	AppVersion string            `mapstructure:"appVersion" yaml:"app_version" json:"app_version"`
	Version    string            `mapstructure:"version" yaml:"version" json:"version"`
	Values     map[string]string `mapstructure:"values" yaml:"values" json:"values,omitempty"`
	ValuesFile string            `mapstructure:"valuesFile" yaml:"valuesFile" json:"valuesFile,omitempty"`
}

func FindRelease added in v0.2.0

func FindRelease(slice []HelmInterfaces, val string) (HelmInterfaces, bool)

FindRelease - Find installed Release

func GetHelmRelease

func GetHelmRelease(name string, releases []HelmInterfaces) (ok bool, result HelmInterfaces)

GetHelmRelease return installed release

type HelmOptions added in v0.2.0

type HelmOptions struct {
	CreateNamespace bool
	KubeconfigPath  string
	Overrides       map[string]string
	NodeArch        string
	Helm            *HelmInterfaces
	Wait            bool
	Verbose         bool
	DryRun          bool
	Secrets         []K8sSecret
}

type HelmRelease

type HelmRelease struct {
	Verbose        bool             `mapstructure:"verbose" yaml:"verbose" json:"verbose,omitempty"`
	Wait           bool             `mapstructure:"wait" yaml:"wait" json:"wait,omitempty"`
	UpdateStrategy string           `mapstructure:"updateStrategy" yaml:"updateStrategy" json:"updateStrategy,omitempty"` // none, latest
	Releases       []HelmInterfaces `mapstructure:"releases" yaml:"releases" json:"releases,omitempty"`
}

type Ingress

type Ingress struct {
	Name       string            `mapstructure:"name" yaml:"name" json:"name,omitempty"`
	Namespace  string            `mapstructure:"namespace" yaml:"namespace" json:"namespace,omitempty"`
	Disabled   bool              `mapstructure:"disabled" yaml:"disabled" json:"disabled,omitempty"`
	HostMode   bool              `mapstructure:"hostMode" yaml:"hostMode" json:"hostMode,omitempty"`
	Version    string            `mapstructure:"version" yaml:"version" json:"version,omitempty"`
	URL        string            `mapstructure:"url" yaml:"url" json:"url,omitempty"`
	Values     map[string]string `mapstructure:"values" yaml:"values" json:"values,omitempty"`
	ValuesFile string            `mapstructure:"valuesFile" yaml:"valuesFile" json:"valuesFile,omitempty"`
}

func (*Ingress) DeepCopy

func (in *Ingress) DeepCopy() *Ingress

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Ingress.

func (*Ingress) DeepCopyInto

func (in *Ingress) DeepCopyInto(out *Ingress)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type K3sIstallOptions

type K3sIstallOptions struct {
	ExecString   string
	LoadBalancer string
	Ingress      string
	CNI          string
	Backend      string
	K3sVersion   string
	K3sChannel   string
	IsCluster    bool
	Node         *Node
}

type K3sWorkerOptions

type K3sWorkerOptions struct {
	JoinAgentCommand string `json:"joinAgentCommand,omitempty"`
	ExecString       string `json:"execString,omitempty"`
	ApiServerAddres  string `json:"apiServerAddres,omitempty"`
	ApiServerPort    int32  `json:"apiServerPort,omitempty"`
	Token            string `json:"token,omitempty"`
	K3sVersion       string `json:"k3sVersion,omitempty"`
	K3sChannel       string `json:"k3sChannel,omitempty"`
}

type K8sSecret added in v0.2.0

type K8sSecret struct {
	Type       string
	Name       string
	SecretData []SecretsData
	Namespace  string
}

type LabelWithNodeFilters

type LabelWithNodeFilters struct {
	Label       string   `mapstructure:"label" yaml:"label" json:"label,omitempty"`
	NodeFilters []string `mapstructure:"nodeFilters" yaml:"nodeFilters" json:"nodeFilters,omitempty"`
}

func (*LabelWithNodeFilters) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LabelWithNodeFilters.

func (*LabelWithNodeFilters) DeepCopyInto

func (in *LabelWithNodeFilters) DeepCopyInto(out *LabelWithNodeFilters)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type LoadBalancer

type LoadBalancer struct {
	MetalLb string `mapstructure:"metalLb" yaml:"metalLb" json:"metalLb,omitempty"`
	KubeVip string `mapstructure:"kubeVip" yaml:"kubeVip" json:"kubeVip,omitempty"`
}

func (*LoadBalancer) DeepCopy

func (in *LoadBalancer) DeepCopy() *LoadBalancer

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LoadBalancer.

func (*LoadBalancer) DeepCopyInto

func (in *LoadBalancer) DeepCopyInto(out *LoadBalancer)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MetalLB

type MetalLB struct {
	Name       string            `mapstructure:"name" yaml:"name" json:"name,omitempty"`
	Namespace  string            `mapstructure:"namespace" yaml:"namespace" json:"namespace,omitempty"`
	Disabled   bool              `mapstructure:"disabled" yaml:"disabled" json:"disabled,omitempty"`
	Version    string            `mapstructure:"version" yaml:"version" json:"version,omitempty"`
	URL        string            `mapstructure:"url" yaml:"url" json:"url,omitempty"`
	Values     map[string]string `mapstructure:"values" yaml:"values" json:"values,omitempty"`
	ValuesFile string            `mapstructure:"valuesFile" yaml:"valuesFile" json:"valuesFile,omitempty"`
}

type NTP

type NTP struct {
	// Servers specifies which NTP servers to use
	// +optional
	Servers []string `json:"servers,omitempty"`

	// Enabled specifies whether NTP should be enabled
	// +optional
	Enabled *bool `json:"enabled,omitempty"`
}

NTP defines input for generated ntp in cloud-init

func (*NTP) DeepCopy

func (in *NTP) DeepCopy() *NTP

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NTP.

func (*NTP) DeepCopyInto

func (in *NTP) DeepCopyInto(out *NTP)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Networking

type Networking struct {
	// APIServerAddresses is a list of addresses assigned to the API Server.
	// +optional
	APIServerAddresses clusterv1.MachineAddresses `json:"apiServerAddresses,omitempty"`
	// APIServerPort specifies the port the API Server should bind to.
	// Defaults to 6443.
	// +optional
	APIServerPort int32 `json:"apiServerPort,omitempty"`
	// ServiceSubnet is the subnet used by k8s services.
	// Defaults to the first element of the Cluster object's spec.clusterNetwork.pods.cidrBlocks field, or
	// to "10.96.0.0/12" if that's unset.
	// +optional
	ServiceSubnet string `json:"serviceSubnet,omitempty"`
	// PodSubnet is the subnet used by pods.
	// If unset, the API server will not allocate CIDR ranges for every node.
	// Defaults to the first element of the Cluster object's spec.clusterNetwork.services.cidrBlocks if that is set
	// +optional
	PodSubnet string `json:"podSubnet,omitempty"`
	// DNSDomain is the dns domain used by k8s services. Defaults to "cluster.local".
	// +optional
	DNSDomain string `json:"dnsDomain,omitempty"`
	// ClusterDns	Cluster IP for coredns service. Should be in your service-cidr range --cluster-dns value	“10.43.0.10”
	// +optional
	ClusterDns string `json:"clusterDns,omitempty"`
	// CNI plugins ("flannel", "calico", "cilium", "aws")
	// +optional
	CNI string `json:"cni,omitempty"`
	// Backend The default backend for flannel is VXLAN
	// --flannel-backend value	“vxlan”	One of ‘none’, ‘vxlan’, ‘ipsec’, ‘host-gw’, or ‘wireguard’
	// Calico "ipip", “vxlan”
	// Cilium "ipip", “vxlan”
	// +optional
	Backend string `json:"backend,omitempty"`
}

Networking contains elements describing cluster's networking configuration

func (*Networking) DeepCopy

func (in *Networking) DeepCopy() *Networking

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Networking.

func (*Networking) DeepCopyInto

func (in *Networking) DeepCopyInto(out *Networking)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Node

type Node struct {
	Name       string            `yaml:"name" json:"name,omitempty"`
	User       string            `yaml:"user" json:"user,omitempty"`
	Role       Role              `yaml:"role" json:"role,omitempty"`
	Image      string            `yaml:"image" json:"image,omitempty"`
	Volumes    []string          `yaml:"volumes" json:"volumes,omitempty"`
	Env        []string          `yaml:"env" json:"env,omitempty"`
	Cmd        []string          // filled automatically based on role
	Args       []string          `yaml:"extraArgs" json:"extraArgs,omitempty"`
	Ports      nat.PortMap       `yaml:"portMappings" json:"portMappings,omitempty"`
	Restart    bool              `yaml:"restart" json:"restart,omitempty"`
	Created    string            `yaml:"created" json:"created,omitempty"`
	Labels     map[string]string // filled automatically
	Networks   []string          // filled automatically
	ExtraHosts []string          // filled automatically
	ServerOpts ServerOpts        `yaml:"serverOpts" json:"serverOpts,omitempty"`
	AgentOpts  AgentOpts         `yaml:"agentOpts" json:"agentOpts,omitempty"`
	GPURequest string            // filled automatically
	Memory     string            // filled automatically
	State      NodeState         // filled automatically
	// Bastion имя ssh bastion сервера если local то запускается на локальном хосте
	// +optional
	Bastion string `yaml:"bastion" json:"bastion,omitempty"`
	// Addresses is a list of addresses assigned to the machine.
	// This field is copied from the infrastructure provider reference.
	// https://github.com/kubernetes-sigs/cluster-api/blob/2cbeb175b243da6953c4edf9e7ec99eac4e2a4a2/api/v1alpha3/common_types.go
	// +optional
	Addresses clusterv1.MachineAddresses `json:"addresses,omitempty"`
}

Node describes a k3d node

func (*Node) DeepCopy

func (in *Node) DeepCopy() *Node

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Node.

func (*Node) DeepCopyInto

func (in *Node) DeepCopyInto(out *Node)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type NodeState

type NodeState struct {
	Running bool
	Status  string
	Started string
}

NodeState describes the current state of a node

func (*NodeState) DeepCopy

func (in *NodeState) DeepCopy() *NodeState

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeState.

func (*NodeState) DeepCopyInto

func (in *NodeState) DeepCopyInto(out *NodeState)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Options

type Options struct {
	Protected           bool          `mapstructure:"protected" yaml:"protected" json:"protected,omitempty"`
	Wait                bool          `mapstructure:"wait" yaml:"wait" json:"wait,omitempty"`
	Timeout             time.Duration `mapstructure:"timeout" yaml:"timeout" json:"timeout,omitempty"`
	DisableLoadbalancer bool          `mapstructure:"disableLoadbalancer" yaml:"disableLoadbalancer" json:"disableLoadbalancer,omitempty"`
	// EnableIngress             bool          `mapstructure:"enableIngress" yaml:"enableIngress" json:"enableIngress,omitempty"`
	DisableImageVolume         bool `mapstructure:"disableImageVolume" yaml:"disableImageVolume" json:"disableImageVolume,omitempty"`
	NoRollback                 bool `mapstructure:"disableRollback" yaml:"disableRollback" json:"disableRollback,omitempty"`
	PrepDisableHostIPInjection bool `mapstructure:"disableHostIPInjection" yaml:"disableHostIPInjection" json:"disableHostIPInjection,omitempty"`
	// SELinux To leverage SELinux, specify the --selinux flag when starting K3s servers and agents.
	// https://rancher.com/docs/k3s/latest/en/advanced/
	// +optional
	SELinux bool `mapstructure:"selinux" yaml:"selinux" json:"selinux,omitempty"`
	// Rootless --rootless Running Servers and Agents with Rootless
	// k3s Experimental Options
	// +optional
	Rootless bool `mapstructure:"rootless" yaml:"rootless" json:"rootless,omitempty"`
	// SecretsEncryption --secrets-encryption	Enable Secret encryption at rest
	// +optional
	SecretsEncryption bool `mapstructure:"secretsEncryption" yaml:"secretsEncryption" json:"secretsEncryption,omitempty"`
}

func (*Options) DeepCopy

func (in *Options) DeepCopy() *Options

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Options.

func (*Options) DeepCopyInto

func (in *Options) DeepCopyInto(out *Options)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PulumiModule

type PulumiModule struct {
	Name       string            `mapstructure:"name" yaml:"name" json:"name,omitempty"`
	Namespace  string            `mapstructure:"namespace" yaml:"namespace" json:"namespace,omitempty"`
	Disabled   bool              `mapstructure:"disabled" yaml:"disabled" json:"disabled,omitempty"`
	Version    string            `mapstructure:"version" yaml:"version" json:"version,omitempty"`
	URL        string            `mapstructure:"url" yaml:"url" json:"url,omitempty"`
	Values     map[string]string `mapstructure:"values" yaml:"values" json:"values,omitempty"`
	ValuesFile string            `mapstructure:"valuesFile" yaml:"valuesFile" json:"valuesFile,omitempty"`
}

type Registry

type Registry struct {
	Name      string   `mapstructure:"name" yaml:"name" json:"name,omitempty"`
	Namespace string   `mapstructure:"namespace" yaml:"namespace" json:"namespace,omitempty"`
	Type      string   `mapstructure:"type" yaml:"type" json:"type,omitempty"` // helm, manifest, orchestration
	Use       []string `mapstructure:"use" yaml:"use" json:"use,omitempty"`
	Create    bool     `mapstructure:"create" yaml:"create" json:"create,omitempty"`
	Config    string   `mapstructure:"config" yaml:"config" json:"config,omitempty"` // registries.yaml (k3s config for containerd registry override)
}

func (*Registry) DeepCopy

func (in *Registry) DeepCopy() *Registry

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Registry.

func (*Registry) DeepCopyInto

func (in *Registry) DeepCopyInto(out *Registry)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Role

type Role string

Role defines a k3s node role

type SecretsData added in v0.2.0

type SecretsData struct {
	Type  string // file or literal
	Key   string
	Value string
}

type ServerOpts

type ServerOpts struct {
	IsInit  bool          `yaml:"isInitializingServer" json:"isInitializingServer,omitempty"`
	KubeAPI *ExposureOpts `yaml:"kubeAPI" json:"kubeAPI"`
}

ServerOpts describes some additional server role specific opts

func (*ServerOpts) DeepCopy

func (in *ServerOpts) DeepCopy() *ServerOpts

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerOpts.

func (*ServerOpts) DeepCopyInto

func (in *ServerOpts) DeepCopyInto(out *ServerOpts)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SimpleConfigOptionsK3s

type SimpleConfigOptionsK3s struct {
	ExtraServerArgs []string `mapstructure:"extraServerArgs" yaml:"extraServerArgs"`
	ExtraAgentArgs  []string `mapstructure:"extraAgentArgs" yaml:"extraAgentArgs"`
}

K3sOptions k3s options for generate config

func (*SimpleConfigOptionsK3s) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SimpleConfigOptionsK3s.

func (*SimpleConfigOptionsK3s) DeepCopyInto

func (in *SimpleConfigOptionsK3s) DeepCopyInto(out *SimpleConfigOptionsK3s)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SimpleConfigOptionsKubeconfig

type SimpleConfigOptionsKubeconfig struct {
	// kubeconfig connection from k3ctl to server ExternalIP | InternalIP
	ConnectType             string `mapstructure:"connectType" yaml:"connectType" json:"connectType,omitempty"`
	Patch                   string `mapstructure:"patch" yaml:"patch" json:"patch,omitempty"`
	UpdateDefaultKubeconfig bool   `mapstructure:"updateDefaultKubeconfig" yaml:"updateDefaultKubeconfig" json:"updateDefaultKubeconfig,omitempty"` // default: true
	SwitchCurrentContext    bool   `mapstructure:"switchCurrentContext" yaml:"switchCurrentContext" json:"switchCurrentContext,omitempty"`          //nolint:lll    // default: true
}

SimpleConfigOptionsKubeconfig describes the set of options referring to the kubeconfig during cluster creation.

func (*SimpleConfigOptionsKubeconfig) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SimpleConfigOptionsKubeconfig.

func (*SimpleConfigOptionsKubeconfig) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type User

type User struct {
	// Name specifies the user name
	Name string `json:"name"`

	// Gecos specifies the gecos to use for the user
	// +optional
	Gecos *string `json:"gecos,omitempty"`

	// Groups specifies the additional groups for the user
	// +optional
	Groups *string `json:"groups,omitempty"`

	// HomeDir specifies the home directory to use for the user
	// +optional
	HomeDir *string `json:"homeDir,omitempty"`

	// Inactive specifies whether to mark the user as inactive
	// +optional
	Inactive *bool `json:"inactive,omitempty"`

	// Shell specifies the user's shell
	// +optional
	Shell *string `json:"shell,omitempty"`

	// Passwd specifies a hashed password for the user
	// +optional
	Passwd *string `json:"passwd,omitempty"`

	// PrimaryGroup specifies the primary group for the user
	// +optional
	PrimaryGroup *string `json:"primaryGroup,omitempty"`

	// LockPassword specifies if password login should be disabled
	// +optional
	LockPassword *bool `json:"lockPassword,omitempty"`

	// Sudo specifies a sudo role for the user
	// +optional
	Sudo *string `json:"sudo,omitempty"`

	// SSHAuthorizedKey specifies a list of ssh authorized keys for the user
	// +optional
	SSHAuthorizedKey string `yaml:"sshAuthorizedKey" json:"sshAuthorizedKey,omitempty"`
}

User defines the input for a generated user in cloud-init.

func (*User) DeepCopy

func (in *User) DeepCopy() *User

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new User.

func (*User) DeepCopyInto

func (in *User) DeepCopyInto(out *User)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type VolumeWithNodeFilters

type VolumeWithNodeFilters struct {
	Volume      string   `mapstructure:"volume" yaml:"volume" json:"volume,omitempty"`
	NodeFilters []string `mapstructure:"nodeFilters" yaml:"nodeFilters" json:"nodeFilters,omitempty"`
}

func (*VolumeWithNodeFilters) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeWithNodeFilters.

func (*VolumeWithNodeFilters) DeepCopyInto

func (in *VolumeWithNodeFilters) DeepCopyInto(out *VolumeWithNodeFilters)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

Jump to

Keyboard shortcuts

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