kubernetes

package
v0.8.0 Latest Latest
Warning

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

Go to latest
Published: Feb 14, 2024 License: Apache-2.0 Imports: 34 Imported by: 0

Documentation

Overview

Package kubernetes ...

Package kubernetes ...

Package kubernetes ...

Package kubernetes ...

Package kubernetes provides functionality for kubernetes.

Package kubernetes ...

Package kubernetes ...

Package kubernetes ...

Package kubernetes ...

Index

Constants

View Source
const (
	// ClusterTypeUnknown is for unknown type.
	ClusterTypeUnknown ClusterType = "unknown"
	// ClusterTypeMinikube is for minikube.
	ClusterTypeMinikube ClusterType = "minikube"
	// ClusterTypeEKS is for EKS.
	ClusterTypeEKS ClusterType = "eks"
	// ClusterTypeGeneric is a generic type.
	ClusterTypeGeneric ClusterType = "generic"

	// PerconaEverestDeploymentName stores the name of everest backend deployment.
	PerconaEverestDeploymentName = "percona-everest"
	// EverestOperatorDeploymentName is the name of the deployment for everest operator.
	EverestOperatorDeploymentName = "everest-operator-controller-manager"

	// EverestDBNamespacesEnvVar is the name of the environment variable that
	// contains the list of monitored namespaces.
	EverestDBNamespacesEnvVar = "DB_NAMESPACES"

	// ContainerStateWaiting represents a state when container requires some
	// operations being done in order to complete start up.
	ContainerStateWaiting ContainerState = "waiting"
	// ContainerStateTerminated indicates that container began execution and
	// then either ran to completion or failed for some reason.
	ContainerStateTerminated ContainerState = "terminated"

	// OLMNamespace is the namespace where OLM is installed.
	OLMNamespace = "everest-olm"

	// APIVersionCoreosV1 constant for some API requests.
	APIVersionCoreosV1 = "operators.coreos.com/v1"
)

Variables

View Source
var (
	// ErrEmptyVersionTag Got an empty version tag from GitHub API.
	ErrEmptyVersionTag error = errors.New("got an empty version tag from Github")
)

Functions

func IsContainerInState

func IsContainerInState(containerStatuses []corev1.ContainerStatus, state ContainerState) bool

IsContainerInState returns true if container is in give state, otherwise false.

func IsNodeInCondition

func IsNodeInCondition(node corev1.Node, conditionType corev1.NodeConditionType) bool

IsNodeInCondition returns true if node's condition given as an argument has status "True". Otherwise it returns false.

Types

type ClusterType

type ClusterType string

ClusterType defines type of cluster.

type ContainerState

type ContainerState string

ContainerState describes container's state - waiting, running, terminated.

type InstallOperatorRequest

type InstallOperatorRequest struct {
	Namespace              string
	Name                   string
	OperatorGroup          string
	CatalogSource          string
	CatalogSourceNamespace string
	Channel                string
	InstallPlanApproval    olmv1alpha1.Approval
	StartingCSV            string
	TargetNamespaces       []string
	SubscriptionConfig     *olmv1alpha1.SubscriptionConfig
}

InstallOperatorRequest holds the fields to make an operator install request.

type Kubernetes

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

Kubernetes is a client for Kubernetes.

func New

func New(kubeconfigPath string, l *zap.SugaredLogger) (*Kubernetes, error)

New returns new Kubernetes object.

func NewEmpty

func NewEmpty(l *zap.SugaredLogger) *Kubernetes

NewEmpty returns new Kubernetes object.

func (*Kubernetes) ApplyObject added in v0.4.0

func (k *Kubernetes) ApplyObject(obj runtime.Object) error

ApplyObject applies object.

func (*Kubernetes) ClusterName

func (k *Kubernetes) ClusterName() string

ClusterName returns the name of the k8s cluster.

func (*Kubernetes) Config added in v0.5.0

func (k *Kubernetes) Config() *rest.Config

Config returns *rest.Config.

func (*Kubernetes) CreateBackupStorage added in v0.8.0

func (k *Kubernetes) CreateBackupStorage(ctx context.Context, storage *everestv1alpha1.BackupStorage) error

CreateBackupStorage returns backup storages by provided name.

func (*Kubernetes) CreateClusterRole

func (k *Kubernetes) CreateClusterRole(name string, rules []rbac.PolicyRule) error

CreateClusterRole creates a new cluster role.

func (*Kubernetes) CreateClusterRoleBinding

func (k *Kubernetes) CreateClusterRoleBinding(namespace, name, roleName, serviceAccountName string) error

CreateClusterRoleBinding binds a cluster role to a service account.

func (*Kubernetes) CreateDatabaseCluster

func (k *Kubernetes) CreateDatabaseCluster(cluster *everestv1alpha1.DatabaseCluster) error

CreateDatabaseCluster creates database cluster.

func (*Kubernetes) CreateMonitoringConfig added in v0.8.0

func (k *Kubernetes) CreateMonitoringConfig(ctx context.Context, storage *everestv1alpha1.MonitoringConfig) error

CreateMonitoringConfig returns monitoring configs by provided name.

func (*Kubernetes) CreateNamespace

func (k *Kubernetes) CreateNamespace(name string) error

CreateNamespace creates a new namespace.

func (*Kubernetes) CreateOperatorGroup added in v0.8.0

func (k *Kubernetes) CreateOperatorGroup(ctx context.Context, name, namespace string, targetNamespaces []string) error

CreateOperatorGroup creates operator group in the given namespace.

func (*Kubernetes) CreatePMMSecret

func (k *Kubernetes) CreatePMMSecret(namespace, secretName string, secrets map[string][]byte) error

CreatePMMSecret creates pmm secret in kubernetes.

func (*Kubernetes) CreateRestore

func (k *Kubernetes) CreateRestore(restore *everestv1alpha1.DatabaseClusterRestore) error

CreateRestore creates a restore.

func (*Kubernetes) CreateRole

func (k *Kubernetes) CreateRole(namespace, name string, rules []rbac.PolicyRule) error

CreateRole creates a new role.

func (*Kubernetes) CreateRoleBinding

func (k *Kubernetes) CreateRoleBinding(namespace, name, roleName, serviceAccountName string) error

CreateRoleBinding binds a role to a service account.

func (*Kubernetes) CreateServiceAccount

func (k *Kubernetes) CreateServiceAccount(name, namespace string) error

CreateServiceAccount creates a new service account.

func (*Kubernetes) CreateServiceAccountToken

func (k *Kubernetes) CreateServiceAccountToken(serviceAccountName, secretName, namespace string) error

CreateServiceAccountToken creates a new secret with service account token.

func (*Kubernetes) DeleteAllMonitoringResources

func (k *Kubernetes) DeleteAllMonitoringResources(ctx context.Context, namespace string) error

DeleteAllMonitoringResources deletes all resources related to monitoring from k8s cluster. If namespace is empty, a default namespace is used.

func (*Kubernetes) DeleteBackupStorage added in v0.8.0

func (k *Kubernetes) DeleteBackupStorage(ctx context.Context, namespace, name string) error

DeleteBackupStorage returns backup storages by provided name.

func (*Kubernetes) DeleteClusterServiceVersion added in v0.8.0

func (k *Kubernetes) DeleteClusterServiceVersion(
	ctx context.Context,
	key types.NamespacedName,
) error

DeleteClusterServiceVersion deletes a ClusterServiceVersion.

func (*Kubernetes) DeleteDatabaseCluster

func (k *Kubernetes) DeleteDatabaseCluster(ctx context.Context, namespace, name string) error

DeleteDatabaseCluster deletes database cluster.

func (*Kubernetes) DeleteEverest added in v0.5.0

func (k *Kubernetes) DeleteEverest(ctx context.Context, namespace string) error

DeleteEverest downloads the manifest file and deletes it from provisioned k8s cluster.

func (*Kubernetes) DeleteMonitoringConfig added in v0.8.0

func (k *Kubernetes) DeleteMonitoringConfig(ctx context.Context, namespace, name string) error

DeleteMonitoringConfig returns monitoring configs by provided name.

func (*Kubernetes) DeleteNamespace added in v0.8.0

func (k *Kubernetes) DeleteNamespace(ctx context.Context, name string) error

DeleteNamespace deletes a namespace.

func (*Kubernetes) DeleteObject

func (k *Kubernetes) DeleteObject(obj runtime.Object) error

DeleteObject deletes an object.

func (*Kubernetes) GenerateKubeConfigWithToken

func (k *Kubernetes) GenerateKubeConfigWithToken(user string, secret *corev1.Secret) (string, error)

GenerateKubeConfigWithToken returns a kubeconfig with the token as provided in the secret.

func (*Kubernetes) GetBackupStorage added in v0.8.0

func (k *Kubernetes) GetBackupStorage(ctx context.Context, namespace, name string) (*everestv1alpha1.BackupStorage, error)

GetBackupStorage returns backup storages by provided name.

func (*Kubernetes) GetClusterServiceVersion

func (k *Kubernetes) GetClusterServiceVersion(
	ctx context.Context,
	key types.NamespacedName,
) (*olmv1alpha1.ClusterServiceVersion, error)

GetClusterServiceVersion retrieves a ClusterServiceVersion by namespaced name.

func (*Kubernetes) GetClusterType

func (k *Kubernetes) GetClusterType(ctx context.Context) (ClusterType, error)

GetClusterType tries to guess the underlying kubernetes cluster based on storage class.

func (*Kubernetes) GetDBNamespaces added in v0.8.0

func (k *Kubernetes) GetDBNamespaces(ctx context.Context, namespace string) ([]string, error)

GetDBNamespaces returns a list of namespaces that are monitored by the Everest operator.

func (*Kubernetes) GetDBaaSOperatorVersion

func (k *Kubernetes) GetDBaaSOperatorVersion(ctx context.Context) (string, error)

GetDBaaSOperatorVersion parses DBaaS operator version from operator deployment.

func (*Kubernetes) GetDatabaseCluster

func (k *Kubernetes) GetDatabaseCluster(ctx context.Context, namespace, name string) (*everestv1alpha1.DatabaseCluster, error)

GetDatabaseCluster returns database clusters by provided name.

func (*Kubernetes) GetDatabaseClusterBackup added in v0.8.0

func (k *Kubernetes) GetDatabaseClusterBackup(ctx context.Context, namespace, name string) (*everestv1alpha1.DatabaseClusterBackup, error)

GetDatabaseClusterBackup returns database cluster backup by name.

func (*Kubernetes) GetDatabaseClusterRestore added in v0.8.0

func (k *Kubernetes) GetDatabaseClusterRestore(ctx context.Context, namespace, name string) (*everestv1alpha1.DatabaseClusterRestore, error)

GetDatabaseClusterRestore returns database cluster restore by name.

func (*Kubernetes) GetDatabaseEngine added in v0.8.0

func (k *Kubernetes) GetDatabaseEngine(ctx context.Context, namespace, name string) (*everestv1alpha1.DatabaseEngine, error)

GetDatabaseEngine returns database clusters by provided name.

func (*Kubernetes) GetDefaultStorageClassName

func (k *Kubernetes) GetDefaultStorageClassName(ctx context.Context) (string, error)

GetDefaultStorageClassName returns first storageClassName from kubernetes cluster.

func (*Kubernetes) GetDeployment added in v0.5.0

func (k *Kubernetes) GetDeployment(ctx context.Context, name, namespace string) (*appsv1.Deployment, error)

GetDeployment returns k8s deployment by provided name and namespace.

func (*Kubernetes) GetEvents

func (k *Kubernetes) GetEvents(ctx context.Context, pod string) ([]string, error)

GetEvents returns pod's events as a slice of strings.

func (*Kubernetes) GetLogs

func (k *Kubernetes) GetLogs(
	ctx context.Context,
	containerStatuses []corev1.ContainerStatus,
	pod,
	container string,
) ([]string, error)

GetLogs returns logs as slice of log lines - strings - for given pod's container.

func (*Kubernetes) GetMonitoringConfig added in v0.8.0

func (k *Kubernetes) GetMonitoringConfig(ctx context.Context, namespace, name string) (*everestv1alpha1.MonitoringConfig, error)

GetMonitoringConfig returns monitoring configs by provided name.

func (*Kubernetes) GetMonitoringConfigsBySecretName added in v0.8.0

func (k *Kubernetes) GetMonitoringConfigsBySecretName(
	ctx context.Context, namespace, secretName string,
) ([]*everestv1alpha1.MonitoringConfig, error)

GetMonitoringConfigsBySecretName returns a list of monitoring configs which use the provided secret name.

func (*Kubernetes) GetNamespace added in v0.2.0

func (k *Kubernetes) GetNamespace(ctx context.Context, name string) (*corev1.Namespace, error)

GetNamespace returns a namespace.

func (*Kubernetes) GetPSMDBOperatorVersion

func (k *Kubernetes) GetPSMDBOperatorVersion(ctx context.Context) (string, error)

GetPSMDBOperatorVersion parses PSMDB operator version from operator deployment.

func (*Kubernetes) GetPXCOperatorVersion

func (k *Kubernetes) GetPXCOperatorVersion(ctx context.Context) (string, error)

GetPXCOperatorVersion parses PXC operator version from operator deployment.

func (*Kubernetes) GetPersistentVolumes

func (k *Kubernetes) GetPersistentVolumes(ctx context.Context) (*corev1.PersistentVolumeList, error)

GetPersistentVolumes returns list of persistent volumes.

func (*Kubernetes) GetPods

func (k *Kubernetes) GetPods(
	ctx context.Context,
	namespace string,
	labelSelector *metav1.LabelSelector,
) (*corev1.PodList, error)

GetPods returns list of pods.

func (*Kubernetes) GetSecret

func (k *Kubernetes) GetSecret(ctx context.Context, name, namespace string) (*corev1.Secret, error)

GetSecret returns secret by name.

func (*Kubernetes) GetServerVersion

func (k *Kubernetes) GetServerVersion() (*version.Info, error)

GetServerVersion returns server version.

func (*Kubernetes) GetStorageClasses

func (k *Kubernetes) GetStorageClasses(ctx context.Context) (*storagev1.StorageClassList, error)

GetStorageClasses returns all storage classes available in the cluster.

func (*Kubernetes) GetWorkerNodes

func (k *Kubernetes) GetWorkerNodes(ctx context.Context) ([]corev1.Node, error)

GetWorkerNodes returns list of cluster workers nodes.

func (*Kubernetes) InstallEverest added in v0.5.0

func (k *Kubernetes) InstallEverest(ctx context.Context, namespace string) error

InstallEverest downloads the manifest file and applies it against provisioned k8s cluster.

func (*Kubernetes) InstallOLMOperator

func (k *Kubernetes) InstallOLMOperator(ctx context.Context, upgrade bool) error

InstallOLMOperator installs the OLM in the Kubernetes cluster.

func (*Kubernetes) InstallOperator

func (k *Kubernetes) InstallOperator(ctx context.Context, req InstallOperatorRequest) error

InstallOperator installs an operator via OLM.

func (*Kubernetes) InstallPerconaCatalog

func (k *Kubernetes) InstallPerconaCatalog(ctx context.Context) error

InstallPerconaCatalog installs percona catalog and ensures that packages are available.

func (*Kubernetes) IsBackupStorageUsed added in v0.8.0

func (k *Kubernetes) IsBackupStorageUsed(ctx context.Context, namespace, backupStorageName string) (bool, error)

IsBackupStorageUsed checks that a backup storage by provided name is used across k8s cluster.

func (*Kubernetes) ListBackupStorages added in v0.8.0

func (k *Kubernetes) ListBackupStorages(ctx context.Context, namespace string) (*everestv1alpha1.BackupStorageList, error)

ListBackupStorages returns list of managed backup storages.

func (*Kubernetes) ListClusterServiceVersion

func (k *Kubernetes) ListClusterServiceVersion(
	ctx context.Context,
	namespace string,
) (*olmv1alpha1.ClusterServiceVersionList, error)

ListClusterServiceVersion list all CSVs for the given namespace.

func (*Kubernetes) ListDatabaseClusterBackups added in v0.8.0

func (k *Kubernetes) ListDatabaseClusterBackups(ctx context.Context, namespace string, options metav1.ListOptions) (*everestv1alpha1.DatabaseClusterBackupList, error)

ListDatabaseClusterBackups returns database cluster backups.

func (*Kubernetes) ListDatabaseClusterRestores added in v0.8.0

func (k *Kubernetes) ListDatabaseClusterRestores(ctx context.Context, namespace string, options metav1.ListOptions) (*everestv1alpha1.DatabaseClusterRestoreList, error)

ListDatabaseClusterRestores returns database cluster restores.

func (*Kubernetes) ListDatabaseClusters

func (k *Kubernetes) ListDatabaseClusters(ctx context.Context, namespace string) (*everestv1alpha1.DatabaseClusterList, error)

ListDatabaseClusters returns list of managed database clusters.

func (*Kubernetes) ListDatabaseEngines added in v0.8.0

func (k *Kubernetes) ListDatabaseEngines(ctx context.Context, namespace string) (*everestv1alpha1.DatabaseEngineList, error)

ListDatabaseEngines returns list of managed database clusters.

func (*Kubernetes) ListEngineDeploymentNames added in v0.4.0

func (k *Kubernetes) ListEngineDeploymentNames(ctx context.Context, namespace string) ([]string, error)

ListEngineDeploymentNames returns a string array containing found engine deployments for the Everest.

func (*Kubernetes) ListMonitoringConfigs added in v0.8.0

func (k *Kubernetes) ListMonitoringConfigs(ctx context.Context, namespace string) (*everestv1alpha1.MonitoringConfigList, error)

ListMonitoringConfigs returns list of managed monitoring configs.

func (*Kubernetes) ListSecrets

func (k *Kubernetes) ListSecrets(ctx context.Context) (*corev1.SecretList, error)

ListSecrets returns secret by name.

func (*Kubernetes) ListSubscriptions

func (k *Kubernetes) ListSubscriptions(ctx context.Context, namespace string) (*olmv1alpha1.SubscriptionList, error)

ListSubscriptions all the subscriptions in the namespace.

func (*Kubernetes) PatchDatabaseCluster

func (k *Kubernetes) PatchDatabaseCluster(cluster *everestv1alpha1.DatabaseCluster) error

PatchDatabaseCluster patches CR of managed Database cluster.

func (*Kubernetes) ProvisionMonitoring

func (k *Kubernetes) ProvisionMonitoring(namespace string) error

ProvisionMonitoring provisions PMM monitoring.

func (*Kubernetes) RestartEverest added in v0.5.0

func (k *Kubernetes) RestartEverest(ctx context.Context, name, namespace string) error

RestartEverest restarts everest pod.

func (*Kubernetes) SetSecret added in v0.6.0

func (k *Kubernetes) SetSecret(secret *corev1.Secret) error

SetSecret creates or updates an existing secret.

func (*Kubernetes) UpdateBackupStorage added in v0.8.0

func (k *Kubernetes) UpdateBackupStorage(ctx context.Context, storage *everestv1alpha1.BackupStorage) error

UpdateBackupStorage returns backup storages by provided name.

func (*Kubernetes) UpdateClusterRoleBinding added in v0.8.0

func (k *Kubernetes) UpdateClusterRoleBinding(ctx context.Context, name string, namespaces []string) error

UpdateClusterRoleBinding updates namespaces list for the cluster role by provided name.

func (*Kubernetes) UpdateMonitoringConfig added in v0.8.0

func (k *Kubernetes) UpdateMonitoringConfig(ctx context.Context, storage *everestv1alpha1.MonitoringConfig) error

UpdateMonitoringConfig returns monitoring configs by provided name.

func (*Kubernetes) UpgradeOperator

func (k *Kubernetes) UpgradeOperator(ctx context.Context, namespace, name string) error

UpgradeOperator upgrades an operator to the next available version.

func (*Kubernetes) WaitForRollout added in v0.6.0

func (k *Kubernetes) WaitForRollout(ctx context.Context, name, namespace string) error

WaitForRollout waits for rollout of a provided deployment in the provided namespace.

type NodeFileSystemSummary

type NodeFileSystemSummary struct {
	UsedBytes uint64 `json:"usedBytes,omitempty"`
}

NodeFileSystemSummary holds a summary of Node's filesystem.

type NodeSummary

type NodeSummary struct {
	Node NodeSummaryNode `json:"node,omitempty"`
}

NodeSummary holds summary of the Node. One gets this by requesting Kubernetes API endpoint: /v1/nodes/<node-name>/proxy/stats/summary.

type NodeSummaryNode

type NodeSummaryNode struct {
	FileSystem NodeFileSystemSummary `json:"fs,omitempty"`
}

NodeSummaryNode holds information about Node inside Node's summary.

type OperatorServiceManager

type OperatorServiceManager interface {
	// SetKubeConfig receives a new config and establish a new connection to the K8 cluster.
	SetKubeConfig(kubeConfig string) error
	// InstallOLMOperator installs the OLM in the Kubernetes cluster.
	InstallOLMOperator(ctx context.Context) error
	// InstallOperator installs an operator via OLM.
	InstallOperator(ctx context.Context, req InstallOperatorRequest) error
	// ListSubscriptions all the subscriptions in the namespace.
	ListSubscriptions(ctx context.Context, namespace string) (*v1alpha1.SubscriptionList, error)
	// UpgradeOperator upgrades an operator to the next available version.
	UpgradeOperator(ctx context.Context, namespace, name string) error
}

OperatorServiceManager ...

Directories

Path Synopsis
Package client ...
Package client ...
customresources
Package customresources provides methods to work with custom everest k8s resources.
Package customresources provides methods to work with custom everest k8s resources.
database
Package database TODO
Package database TODO

Jump to

Keyboard shortcuts

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