v1beta1

package
v0.9.0 Latest Latest
Warning

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

Go to latest
Published: Oct 18, 2024 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Overview

Package v1beta1 contains API Schema definitions for the v1beta1 API group +kubebuilder:object:generate=true +groupName=claudie.io

Index

Constants

View Source
const (
	SEPARATOR = "/"
	// Claudie cluster statuses
	// IN_PROGRESS is a helper status that indicates that the cluster is currently being build.
	STATUS_IN_PROGRESS = "IN_PROGRESS"
	// ERROR indicates that an error occurred while building the cluster.
	STATUS_ERROR = "ERROR"
	// DONE indicates that the workflow has finished.
	STATUS_DONE = "DONE"
	// STATUS_NEW is a helper status that indicates that the resource was recently created
	STATUS_NEW = "NEW"
	// SCHEDULED_FOR_DELETION
	STATUS_SCHEDULED_FOR_DELETION = "SCHEDULED_FOR_DELETION"
)

Variables

View Source
var (
	// GroupVersion is group version used to register these objects
	GroupVersion = schema.GroupVersion{Group: "claudie.io", Version: "v1beta1"}

	// 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
)

Functions

This section is empty.

Types

type ClustersStatus

type ClustersStatus struct {
	State   string `json:"state,omitempty"`
	Phase   string `json:"phase,omitempty"`
	Message string `json:"message,omitempty"`
}

type InputManifest

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

	Spec   InputManifestSpec   `json:"spec,omitempty"`
	Status InputManifestStatus `json:"status,omitempty"`
}

InputManifest is a definition of the user's infrastructure. It contains cloud provider specification, nodepool specification, Kubernetes and loadbalancer clusters.

func (*InputManifest) DeepCopy

func (in *InputManifest) DeepCopy() *InputManifest

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

func (*InputManifest) DeepCopyInto

func (in *InputManifest) DeepCopyInto(out *InputManifest)

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

func (*InputManifest) DeepCopyObject

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

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

func (*InputManifest) GetNamespacedName

func (im *InputManifest) GetNamespacedName() string

GetNamespacedName returns a string in Namespace/Name format

func (*InputManifest) GetNamespacedNameDashed

func (im *InputManifest) GetNamespacedNameDashed() string

GetNamespacedNameDashed returns a string in Namespace-Name format

func (*InputManifest) GetStatuses

func (im *InputManifest) GetStatuses() InputManifestStatus

GetStatuses returns the inputmanifest.Status field

func (*InputManifest) SetDeletingStatus

func (im *InputManifest) SetDeletingStatus()

func (*InputManifest) SetNewResourceStatus

func (im *InputManifest) SetNewResourceStatus()

func (*InputManifest) SetUpdateResourceStatus

func (im *InputManifest) SetUpdateResourceStatus(newStatus InputManifestStatus)

type InputManifestList

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

InputManifestList contains a list of InputManifest

func (*InputManifestList) DeepCopy

func (in *InputManifestList) DeepCopy() *InputManifestList

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

func (*InputManifestList) DeepCopyInto

func (in *InputManifestList) DeepCopyInto(out *InputManifestList)

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

func (*InputManifestList) DeepCopyObject

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

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

type InputManifestSpec

type InputManifestSpec struct {
	// Providers list of defined cloud provider configuration
	// that will be used while infrastructure provisioning.
	// +optional
	Providers []Provider `json:"providers,omitempty"`
	// +optional
	NodePools NodePool `json:"nodePools,omitempty"`
	// +optional
	Kubernetes manifest.Kubernetes `json:"kubernetes,omitempty"`
	// +optional
	LoadBalancer manifest.LoadBalancer `json:"loadBalancers,omitempty"`
}

Specification of the desired behaviour of the InputManifest

func (*InputManifestSpec) DeepCopy

func (in *InputManifestSpec) DeepCopy() *InputManifestSpec

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

func (*InputManifestSpec) DeepCopyInto

func (in *InputManifestSpec) DeepCopyInto(out *InputManifestSpec)

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

type InputManifestStatus

type InputManifestStatus struct {
	State    string                    `json:"state,omitempty"`
	Clusters map[string]ClustersStatus `json:"clusters,omitempty"`
}

Most recently observed status of the InputManifest

func (*InputManifestStatus) DeepCopy

func (in *InputManifestStatus) DeepCopy() *InputManifestStatus

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

func (*InputManifestStatus) DeepCopyInto

func (in *InputManifestStatus) DeepCopyInto(out *InputManifestStatus)

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

type NodePool

type NodePool struct {
	// Dynamic nodepools define nodepools dynamically created by Claudie.
	// +optional
	Dynamic []manifest.DynamicNodePool `json:"dynamic"`
	// Static nodepools define nodepools of already existing nodes.
	// +optional
	Static []StaticNodePool `json:"static"`
}

NodePool is a map of dynamic nodepools and static nodepools which will be used to form kubernetes or loadbalancer clusters.

type Provider

type Provider struct {
	// Name is the name of the provider specification. It has to be unique across all providers.
	// +kubebuilder:validation:MaxLength=32
	// +kubebuilder:validation:MinLength=1
	ProviderName string `json:"name"`
	// +kubebuilder:validation:Enum=gcp;hetzner;aws;oci;azure;cloudflare;hetznerdns;genesiscloud;
	ProviderType ProviderType           `json:"providerType"`
	SecretRef    corev1.SecretReference `json:"secretRef"`
	// External templates for building the cluster infrastructure.
	// +optional
	Templates *manifest.TemplateRepository `json:"templates"`
}

Providers list of defined cloud provider configuration that will be used while infrastructure provisioning.

type ProviderType

type ProviderType string

ProviderType type of a provider. A list of available providers can be found at https://docs.claudie.io/v0.8.1/input-manifest/providers/aws/

const (
	AWS           ProviderType = "aws"
	AZURE         ProviderType = "azure"
	CLOUDFLARE    ProviderType = "cloudflare"
	GCP           ProviderType = "gcp"
	GENESIS_CLOUD ProviderType = "genesiscloud"
	HETZNER       ProviderType = "hetzner"
	HETZNER_DNS   ProviderType = "hetznerdns"
	OCI           ProviderType = "oci"
)

type ProviderWithData

type ProviderWithData struct {
	ProviderName string
	ProviderType ProviderType
	Secret       corev1.Secret
	Templates    *manifest.TemplateRepository
}

ProviderWithData helper type that assist in conversion from SecretReference to Secret

func (*ProviderWithData) GetSecretField

func (pwd *ProviderWithData) GetSecretField(name SecretField) (string, error)

GetSecretField takes an ENUM string type of SecretField, and returns the value of the that field from the ProviderWithData struct it is also validating if the string is a proper UTF-8 string

type SecretField

type SecretField string
const (
	AWS_ACCESS_KEY        SecretField = "accesskey"
	AWS_SECRET_KEY        SecretField = "secretkey"
	AZURE_CLIENT_SECRET   SecretField = "clientsecret"
	AZURE_SUBSCRIPTION_ID SecretField = "subscriptionid"
	AZURE_TENANT_ID       SecretField = "tenantid"
	AZURE_CLIENT_ID       SecretField = "clientid"
	CF_API_TOKEN          SecretField = "apitoken"
	GCP_CREDENTIALS       SecretField = "credentials"
	GCP_GCP_PROJECT       SecretField = "gcpproject"
	HETZNER_CREDENTIALS   SecretField = "credentials"
	HETZNER_DNS_API_TOKEN SecretField = "apitoken"
	OCI_PRIVATE_KEY       SecretField = "privatekey"
	OCI_KEY_FINGERPRINT   SecretField = "keyfingerprint"
	OCI_TENANCT_OCID      SecretField = "tenancyocid"
	OCI_USER_OCID         SecretField = "userocid"
	OCI_COMPARTMENT_OCID  SecretField = "compartmentocid"
	PRIVATE_KEY           SecretField = "privatekey"
	GEN_C_API_TOKEN       SecretField = "apitoken"
)

type StaticNode

type StaticNode struct {
	// Endpoint under which Claudie will access this node.
	Endpoint string `json:"endpoint"`
	// Secret reference to the private key of the node.
	SecretRef corev1.SecretReference `json:"secretRef"`
	// Username with root access. Used in SSH connection also.
	Username string `json:"username,omitempty"`
}

StaticNode defines a single static node for a particular static nodepool.

type StaticNodePool

type StaticNodePool struct {
	// Name of the nodepool.
	Name string `json:"name"`
	// List of static nodes for a particular static nodepool.
	Nodes []StaticNode `json:"nodes"`
	// +optional
	Labels map[string]string `json:"labels"`
	// +optional
	Annotations map[string]string `json:"annotations"`
	// +optional
	Taints []corev1.Taint `json:"taints"`
}

StaticNodePool defines nodepool of already existing nodes, managed outside of Claudie.

type StaticNodeWithData

type StaticNodeWithData struct {
	Endpoint string
	Username string
	Secret   corev1.Secret
}

Jump to

Keyboard shortcuts

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