cluster

package
v1.0.0-alpha.1 Latest Latest
Warning

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

Go to latest
Published: Oct 25, 2024 License: AGPL-3.0 Imports: 50 Imported by: 0

Documentation

Index

Constants

View Source
const (
	NoNeed = iota
	Need
	Maybe
)
View Source
const (
	ComponentNameEmpty = ""
)
View Source
const ConditionsError = "ConditionsError"

ConditionsError cluster displays this status on list cmd when the status of ApplyResources or ProvisioningStarted condition is "False".

Variables

View Source
var CacheFiles []fs.DirEntry
View Source
var CliChartsCacheDir string

CliChartsCacheDir is $HOME/.kbcli/charts by default

View Source
var CliClusterChartConfig string

CliClusterChartConfig is $HOME/.kbcli/cluster_types by default

View Source
var ClusterTypeCharts = map[ClusterType]chartLoader{}

ClusterTypeCharts is the map of the cluster type and the chart config ClusterType is the type of the cluster, the ClusterType t will be used as sub command name, chartLoader is the interface for the chart config, implement this interface to register cluster type.

View Source
var GlobalClusterChartConfig clusterConfig

GlobalClusterChartConfig is kbcli global cluster chart config reference to CliClusterChartConfig

View Source
var StandardSchema = map[string]interface{}{
	"properties": map[string]interface{}{
		"replicas": nil,
		"cpu":      nil,
		"memory":   nil,
		"storage":  nil,
	},
}

Functions

func AddComponentRow

func AddComponentRow(tbl *printer.TablePrinter, objs *ClusterObjects, opt *PrinterOptions)

func AddEventRow

func AddEventRow(tbl *printer.TablePrinter, objs *ClusterObjects, opt *PrinterOptions)

func AddInstanceRow

func AddInstanceRow(tbl *printer.TablePrinter, objs *ClusterObjects, opt *PrinterOptions)

func AddLabelRow

func AddLabelRow(tbl *printer.TablePrinter, objs *ClusterObjects, opt *PrinterOptions)

func BuildShardingComponentName

func BuildShardingComponentName(shardingCompName, componentName string) string

func BuildStorageClass

func BuildStorageClass(storages []StorageInfo) string

func BuildStorageSize

func BuildStorageSize(storages []StorageInfo) string

func ClearCharts

func ClearCharts(c ClusterType)

func CompatibleComponentDefs

func CompatibleComponentDefs(compDefs []string, compDef string) bool

func ComponentNameLabelKey

func ComponentNameLabelKey(cluster *kbappsv1.Cluster, compName string) string

func FindClusterComp

func FindClusterComp(cluster *kbappsv1.Cluster, compDefName string) *kbappsv1.ClusterComponentSpec

FindClusterComp finds component in cluster object based on the component definition name

func GenerateClusterName

func GenerateClusterName(dynamic dynamic.Interface, namespace string) (string, error)

func GenerateName

func GenerateName() string

func GetChartCacheFiles

func GetChartCacheFiles() []fs.DirEntry

func GetClusterByName

func GetClusterByName(dynamic dynamic.Interface, name string, namespace string) (*kbappsv1.Cluster, error)

func GetClusterDefByName

func GetClusterDefByName(dynamic dynamic.Interface, name string) (*kbappsv1.ClusterDefinition, error)

func GetCompSpecAndCheckSharding

func GetCompSpecAndCheckSharding(cluster *kbappsv1.Cluster, componentName string) (*kbappsv1.ClusterComponentSpec, bool)

func GetComponentEndpoints

func GetComponentEndpoints(nodes []*corev1.Node, svcList *corev1.ServiceList, compName string) ([]string, []string)

GetComponentEndpoints gets component internal and external endpoints

func GetComponentServices

func GetComponentServices(svcList *corev1.ServiceList, compName string) ([]*corev1.Service, []*corev1.Service)

GetComponentServices gets component services

func GetComponentSpec

func GetComponentSpec(cluster *kbappsv1.Cluster, compName string) *kbappsv1.ClusterComponentSpec

func GetConfigConstraintByName

func GetConfigConstraintByName(dynamic dynamic.Interface, name string) (*appsv1beta1.ConfigConstraint, error)

func GetConfigMapByName

func GetConfigMapByName(dynamic dynamic.Interface, namespace, name string) (*corev1.ConfigMap, error)

func GetDefaultCompName

func GetDefaultCompName(cd *appsv1alpha1.ClusterDefinition) (string, error)

func GetDefaultServiceRef

func GetDefaultServiceRef(cd *appsv1alpha1.ClusterDefinition) (string, error)

GetDefaultServiceRef will return the ServiceRefDeclarations in cluster-definition when the cluster-definition contains only one ServiceRefDeclaration

func GetEndpointsFromNode

func GetEndpointsFromNode(node *corev1.Node) (string, string)

func GetExternalAddr

func GetExternalAddr(svc *corev1.Service) string

GetExternalAddr gets external IP from service annotation

func GetManifests

func GetManifests(c *chart.Chart, namespace, name, kubeVersion string, values map[string]interface{}) (map[string]string, error)

GetManifests gets the cluster manifests

func GetPodClusterName

func GetPodClusterName(pod *corev1.Pod) string

func GetPodComponentName

func GetPodComponentName(pod *corev1.Pod) string

func GetReadyNodeForNodePort

func GetReadyNodeForNodePort(client *kubernetes.Clientset) (*corev1.Node, error)

func GetServiceRefs

func GetServiceRefs(cd *appsv1alpha1.ClusterDefinition) []string

func IsBuiltinCharts added in v0.7.3

func IsBuiltinCharts(clusterType ClusterType) bool

func IsShardingComponent

func IsShardingComponent(cluster *kbappsv1.Cluster, compName string) bool

func ListShardingComponents

func ListShardingComponents(dynamic dynamic.Interface, clusterName, clusterNamespace, componentName string) ([]*appsv1alpha1.Component, error)

func RegisterCMD

func RegisterCMD(c clusterConfig, configPath string)

RegisterCMD will register all cluster type instances in the config c and auto clear the register failed instances and rewrite config

func ValidateClusterVersionByComponentDef added in v0.7.3

func ValidateClusterVersionByComponentDef(dynamic dynamic.Interface, compDefs []string, cv string) error

func ValidateValues

func ValidateValues(c *ChartInfo, values map[string]interface{}) error

ValidateValues validates the given values against the schema.

Types

type ChartInfo

type ChartInfo struct {
	// Schema is the cluster parent helm chart schema, used to render the command flag
	Schema *spec.Schema

	// SubSchema is the sub chart schema, used to render the command flag
	SubSchema *spec.Schema

	// SubChartName is the name (alias if exists) of the sub chart
	SubChartName string

	// ClusterDef is the cluster definition
	ClusterDef string

	// ComponentDef refer cluster component.spec[x].ComponentDef
	ComponentDef []string

	// Chart is the cluster helm chart object
	Chart *chart.Chart

	// Alias is the alias of the cluster chart, will be used as the command alias
	Alias string
}

func BuildChartInfo

func BuildChartInfo(t ClusterType) (*ChartInfo, error)

func (*ChartInfo) BuildClusterSchema added in v0.7.3

func (c *ChartInfo) BuildClusterSchema() error

BuildClusterSchema build the schema for the given cluster chart.

type ClusterInfo

type ClusterInfo struct {
	Name              string `json:"name,omitempty"`
	Namespace         string `json:"namespace,omitempty"`
	ClusterVersion    string `json:"clusterVersion,omitempty"`
	TerminationPolicy string `json:"terminationPolicy,omitempty"`
	ClusterDefinition string `json:"clusterDefinition,omitempty"`
	Status            string `json:"status,omitempty"`
	InternalEP        string `json:"internalEP,omitempty"`
	ExternalEP        string `json:"externalEP,omitempty"`
	CreatedTime       string `json:"age,omitempty"`
	Labels            string `json:"labels,omitempty"`
}

type ClusterObjects

type ClusterObjects struct {
	Cluster    *kbappsv1.Cluster
	ClusterDef *kbappsv1.ClusterDefinition

	Pods       *corev1.PodList
	Services   *corev1.ServiceList
	Secrets    *corev1.SecretList
	PVCs       *corev1.PersistentVolumeClaimList
	Nodes      []*corev1.Node
	ConfigMaps *corev1.ConfigMapList
	Events     *corev1.EventList

	BackupPolicies  []dpv1alpha1.BackupPolicy
	BackupSchedules []dpv1alpha1.BackupSchedule
	Backups         []dpv1alpha1.Backup

	// 0.8 API
	CompDefs   []*appsv1alpha1.ComponentDefinition
	Components []*appsv1alpha1.Component
}

func FakeClusterObjs

func FakeClusterObjs() *ClusterObjects

func NewClusterObjects

func NewClusterObjects() *ClusterObjects

func (*ClusterObjects) GetClusterInfo

func (o *ClusterObjects) GetClusterInfo() *ClusterInfo

func (*ClusterObjects) GetComponentInfo

func (o *ClusterObjects) GetComponentInfo() []*ComponentInfo

func (*ClusterObjects) GetInstanceInfo

func (o *ClusterObjects) GetInstanceInfo() []*InstanceInfo

type ClusterType

type ClusterType string

func SupportedTypes

func SupportedTypes() []ClusterType

func (ClusterType) String

func (t ClusterType) String() string

type CompInfo

type CompInfo struct {
	Component       *kbappsv1.ClusterComponentSpec
	ComponentStatus *kbappsv1.ClusterComponentStatus
	ComponentDef    *appsv1alpha1.ClusterComponentDefinition
}

func FillCompInfoByName

func FillCompInfoByName(dynamic dynamic.Interface, namespace, clusterName, componentName string) (*CompInfo, error)

type ComponentInfo

type ComponentInfo struct {
	// component name in cluster.spec
	Name                 string `json:"name,omitempty"`
	InstanceTemplateName string `json:"instanceTemplateName,omitempty"`
	NameSpace            string `json:"nameSpace,omitempty"`
	ComponentDef         string `json:"type,omitempty"`
	Cluster              string `json:"cluster,omitempty"`
	Status               string `json:"status,omitempty"`
	Replicas             string `json:"replicas,omitempty"`
	CPU                  string `json:"cpu,omitempty"`
	Memory               string `json:"memory,omitempty"`
	Image                string `json:"image,omitempty"`
	Storage              []StorageInfo
}

type ComponentPair

type ComponentPair struct {
	// a unique name identifier for component object,
	// and labeled with "apps.kubeblocks.io/component-name"
	ComponentName    string
	ComponentDefName string
	ShardingName     string
}

func GetClusterComponentPairs

func GetClusterComponentPairs(dynamicClient dynamic.Interface, cluster *kbappsv1.Cluster) ([]ComponentPair, error)

func GetShardingComponentPairs

func GetShardingComponentPairs(dynamicClient dynamic.Interface, cluster *kbappsv1.Cluster, shardingSpec kbappsv1.ClusterSharding) ([]ComponentPair, error)

type GetOptions

type GetOptions struct {
	WithClusterDef     TypeNeed
	WithConfigMap      TypeNeed
	WithPVC            TypeNeed
	WithService        TypeNeed
	WithSecret         TypeNeed
	WithPod            TypeNeed
	WithEvent          TypeNeed
	WithDataProtection TypeNeed
	WithCompDef        TypeNeed
	WithComp           TypeNeed
}

type InstanceInfo

type InstanceInfo struct {
	Name           string `json:"name,omitempty"`
	Namespace      string `json:"namespace,omitempty"`
	Cluster        string `json:"cluster,omitempty"`
	Component      string `json:"component,omitempty"`
	Status         string `json:"status,omitempty"`
	Role           string `json:"role,omitempty"`
	AccessMode     string `json:"accessMode,omitempty"`
	AZ             string `json:"az,omitempty"`
	Region         string `json:"region,omitempty"`
	CPU            string `json:"cpu,omitempty"`
	Memory         string `json:"memory,omitempty"`
	Storage        []StorageInfo
	Node           string `json:"node,omitempty"`
	CreatedTime    string `json:"age,omitempty"`
	ServiceVersion string `json:"serviceVersion,omitempty"`
}

func GetSimpleInstanceInfos

func GetSimpleInstanceInfos(dynamic dynamic.Interface, name, namespace string) []*InstanceInfo

GetSimpleInstanceInfos returns simple instance info that only contains instance name and role, the default instance should be the first element in the returned array.

func GetSimpleInstanceInfosForComponent

func GetSimpleInstanceInfosForComponent(dynamic dynamic.Interface, name, componentName, namespace string) []*InstanceInfo

GetSimpleInstanceInfosForComponent returns simple instance info that only contains instance name and role for a component

type ObjectsGetter

type ObjectsGetter struct {
	Client    clientset.Interface
	Dynamic   dynamic.Interface
	Name      string
	Namespace string
	GetOptions
}

func (*ObjectsGetter) Get

func (o *ObjectsGetter) Get() (*ClusterObjects, error)

Get all kubernetes objects belonging to the database cluster

type PrintType

type PrintType string
const (
	PrintClusters   PrintType = "clusters"
	PrintWide       PrintType = "wide"
	PrintInstances  PrintType = "instances"
	PrintComponents PrintType = "components"
	PrintEvents     PrintType = "events"
	PrintLabels     PrintType = "label"
)

type Printer

type Printer struct {
	// contains filtered or unexported fields
}

Printer prints cluster info

func NewPrinter

func NewPrinter(out io.Writer, printType PrintType, opt *PrinterOptions) *Printer

func (*Printer) AddRow

func (p *Printer) AddRow(objs *ClusterObjects)

func (*Printer) GetterOptions

func (p *Printer) GetterOptions() GetOptions

func (*Printer) Print

func (p *Printer) Print()

type PrinterOptions

type PrinterOptions struct {
	ShowLabels bool
}

type SchemaPropName

type SchemaPropName string
const (
	VersionSchemaProp SchemaPropName = "version"
)

the common schema property name

func (SchemaPropName) String

func (s SchemaPropName) String() string

type StorageInfo

type StorageInfo struct {
	Name         string
	Size         string
	StorageClass string
	AccessMode   string
}

type TypeInstance

type TypeInstance struct {
	Name  ClusterType `yaml:"name"`
	URL   string      `yaml:"helmChartUrl"`
	Alias string      `yaml:"alias"`
	// chartName is the filename cached locally
	ChartName string `yaml:"chartName"`
}

TypeInstance reference to a cluster type instance in config and implement the cluster.chartLoader interface

func (*TypeInstance) PatchNewClusterType

func (h *TypeInstance) PatchNewClusterType() error

func (*TypeInstance) PreCheck

func (h *TypeInstance) PreCheck() error

PreCheck is used by `cluster register` command

func (*TypeInstance) ValidateChartSchema

func (h *TypeInstance) ValidateChartSchema() (bool, error)

type TypeNeed added in v0.7.3

type TypeNeed int

Jump to

Keyboard shortcuts

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