k8sutil

package
v1.7.3 Latest Latest
Warning

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

Go to latest
Published: Sep 9, 2021 License: Apache-2.0 Imports: 57 Imported by: 0

Documentation

Overview

Package kit for Kubernetes operators

Package k8sutil for Kubernetes helpers.

Package k8sutil for Kubernetes helpers.

Package k8sutil for Kubernetes helpers.

Package k8sutil for Kubernetes helpers.

Package k8sutil for Kubernetes helpers.

Package k8sutil for Kubernetes helpers.

Package k8sutil for Kubernetes helpers.

Package k8sutil for Kubernetes helpers.

Package k8sutil for Kubernetes helpers.

Index

Constants

View Source
const (
	// Namespace for rook
	Namespace = "rook"
	// DefaultNamespace for the cluster
	DefaultNamespace = "default"
	// DataDirVolume data dir volume
	DataDirVolume = "rook-data"
	// DataDir folder
	DataDir = "/var/lib/rook"
	// RookType for the CRD
	RookType = "kubernetes.io/rook"
	// PodNameEnvVar is the env variable for getting the pod name via downward api
	PodNameEnvVar = "POD_NAME"
	// PodNamespaceEnvVar is the env variable for getting the pod namespace via downward api
	PodNamespaceEnvVar = "POD_NAMESPACE"
	// NodeNameEnvVar is the env variable for getting the node via downward api
	NodeNameEnvVar = "NODE_NAME"

	// RookVersionLabelKey is the key used for reporting the Rook version which last created or
	// modified a resource.
	RookVersionLabelKey = "rook-version"
)
View Source
const (
	// AppAttr app label
	AppAttr = "app"
	// ClusterAttr cluster label
	ClusterAttr = "rook_cluster"
	// PublicIPEnvVar public IP env var
	PublicIPEnvVar = "ROOK_PUBLIC_IP"
	// PrivateIPEnvVar pod IP env var
	PrivateIPEnvVar = "ROOK_PRIVATE_IP"

	// DefaultRepoPrefix repo prefix
	DefaultRepoPrefix = "rook"
	// ConfigOverrideName config override name
	ConfigOverrideName = "rook-config-override"
	// ConfigOverrideVal config override value
	ConfigOverrideVal = "config"
)
View Source
const (
	// ReadyStatus reflects the completeness of tasks for ceph related CRs
	ReadyStatus = "Ready"
	// ProcessingStatus reflects that the tasks are in progress for ceph related CRs
	ProcessingStatus = "Processing"
	// FailedStatus reflects that some task failed for ceph related CRs
	FailedStatus = "Failed"
	// ReconcilingStatus indicates the CR is reconciling
	ReconcilingStatus = "Reconciling"
	// ReconcileFailedStatus indicates a reconciliation failed
	ReconcileFailedStatus = "ReconcileFailed"
	// EmptyStatus indicates the object just got created
	EmptyStatus = ""
)
View Source
const (
	BinariesMountPath = "/rook"
)

Variables

WellKnownTaints is a list of well-known taint keys in the Kubernetes code base. Kubernetes may automatically apply these taints to nodes during runtime. Most will be added with the `NoSchedule` affect, but some are created with `NoExecute`. Rook may wish to ignore these taints when decided whether to modify resources it creates based on whether taints are likely to have been added by Kubernetes or by the user. see: https://github.com/kubernetes/kubernetes/blob/master/pkg/scheduler/api/well_known_labels.go and: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/#taint-based-evictions

Functions

func AddLabelToDeployment added in v1.7.3

func AddLabelToDeployment(key, value string, d *appsv1.Deployment)

func AddLabelToJob added in v1.1.0

func AddLabelToJob(key, value string, b *batchv1.Job)

func AddLabelToPod added in v1.1.0

func AddLabelToPod(key, value string, p *corev1.PodTemplateSpec)

func AddRookVersionLabelToDaemonSet added in v1.0.0

func AddRookVersionLabelToDaemonSet(d *appsv1.DaemonSet)

AddRookVersionLabelToDaemonSet adds or updates a label reporting the Rook version which last modified a DaemonSet.

func AddRookVersionLabelToDeployment added in v1.0.0

func AddRookVersionLabelToDeployment(d *appsv1.Deployment)

AddRookVersionLabelToDeployment adds or updates a label reporting the Rook version which last modified a deployment.

func AddRookVersionLabelToJob added in v1.0.0

func AddRookVersionLabelToJob(j *batch.Job)

AddRookVersionLabelToJob adds or updates a label reporting the Rook version which last modified a Job.

func AddRookVersionLabelToObjectMeta added in v1.1.0

func AddRookVersionLabelToObjectMeta(meta *metav1.ObjectMeta)

func AddUnreachableNodeToleration added in v1.2.0

func AddUnreachableNodeToleration(podSpec *v1.PodSpec)

Replaces the pod default toleration of 300s used when the node controller detect a not ready node (node.kubernetes.io/unreachable)

func ApplyMultus added in v1.1.0

func ApplyMultus(net cephv1.NetworkSpec, objectMeta *metav1.ObjectMeta) error

ApplyMultus apply multus selector to Pods Multus supports short and json syntax, use only one kind at a time.

func BaseKubernetesDeleteOptions added in v1.1.0

func BaseKubernetesDeleteOptions() *metav1.DeleteOptions

BaseKubernetesDeleteOptions returns the base set of Kubernetes delete options which most delete operations should use.

func BinariesMountInfo added in v1.0.0

func BinariesMountInfo() (v1.EnvVar, v1.Volume, v1.VolumeMount)

func ClusterDaemonEnvVars added in v0.9.0

func ClusterDaemonEnvVars(image string) []v1.EnvVar

ClusterDaemonEnvVars Environment variables used by storage cluster daemon

func ConfigDirEnvVar added in v0.4.0

func ConfigDirEnvVar(dataDir string) v1.EnvVar

ConfigDirEnvVar config dir env var

func ConfigOverrideEnvVar added in v0.5.0

func ConfigOverrideEnvVar() v1.EnvVar

ConfigOverrideEnvVar config override env var

func ConfigOverrideMount added in v0.5.0

func ConfigOverrideMount() v1.VolumeMount

ConfigOverrideMount is an override mount

func ConfigOverrideVolume added in v0.5.0

func ConfigOverrideVolume() v1.Volume

ConfigOverrideVolume is an override volume

func CreateDaemonSet added in v1.0.0

func CreateDaemonSet(name, namespace string, clientset kubernetes.Interface, ds *appsv1.DaemonSet) error

CreateDaemonSet creates

func CreateDeployment added in v1.1.0

func CreateDeployment(clientset kubernetes.Interface, dep *appsv1.Deployment) (*appsv1.Deployment, error)

CreateDeployment creates a deployment with a last applied hash annotation added

func CreateOrUpdateDeployment added in v1.7.3

func CreateOrUpdateDeployment(clientset kubernetes.Interface, dep *appsv1.Deployment) (*appsv1.Deployment, error)

func CreateOrUpdateEndpoint added in v1.7.3

func CreateOrUpdateEndpoint(clientset kubernetes.Interface, namespace string, endpointDefinition *v1.Endpoints) (*v1.Endpoints, error)

CreateOrUpdateEndpoint creates a service or updates the service declaratively if it already exists.

func CreateOrUpdatePrometheusRule added in v1.1.0

func CreateOrUpdatePrometheusRule(prometheusRule *monitoringv1.PrometheusRule) (*monitoringv1.PrometheusRule, error)

CreateOrUpdatePrometheusRule creates a prometheusRule object or an error

func CreateOrUpdateSecret added in v1.7.3

func CreateOrUpdateSecret(clientset kubernetes.Interface, secretDefinition *v1.Secret) (*v1.Secret, error)

CreateOrUpdateSecret creates a secret or updates the secret declaratively if it already exists.

func CreateOrUpdateService added in v1.0.0

func CreateOrUpdateService(
	clientset kubernetes.Interface, namespace string, serviceDefinition *v1.Service,
) (*v1.Service, error)

CreateOrUpdateService creates a service or updates the service declaratively if it already exists.

func CreateOrUpdateServiceMonitor added in v1.1.0

func CreateOrUpdateServiceMonitor(serviceMonitorDefinition *monitoringv1.ServiceMonitor) (*monitoringv1.ServiceMonitor, error)

CreateOrUpdateServiceMonitor creates serviceMonitor object or an error

func DeleteBatchJob added in v0.9.0

func DeleteBatchJob(clientset kubernetes.Interface, namespace, name string, wait bool) error

DeleteBatchJob deletes a Kubernetes job.

func DeleteConfigMap added in v1.1.0

func DeleteConfigMap(clientset kubernetes.Interface, cmName, namespace string, opts *DeleteOptions) error

DeleteConfigMap deletes a ConfigMap.

func DeleteDaemonset added in v0.6.0

func DeleteDaemonset(clientset kubernetes.Interface, namespace, name string) error

DeleteDaemonset makes a best effort at deleting a daemonset and its pods, then waits for them to be deleted

func DeleteDeployment added in v0.6.0

func DeleteDeployment(clientset kubernetes.Interface, namespace, name string) error

DeleteDeployment makes a best effort at deleting a deployment and its pods, then waits for them to be deleted

func DeleteReplicaSet added in v0.9.0

func DeleteReplicaSet(clientset kubernetes.Interface, namespace, name string) error

DeleteReplicaSet makes a best effort at deleting a deployment and its pods, then waits for them to be deleted

func DeleteResource added in v1.1.0

func DeleteResource(
	delete func() error,
	verify func() error,
	resource string,
	opts *DeleteOptions,
	defaultWaitOptions *WaitOptions,
) error

DeleteResource implements the DeleteOptions logic around deletion of a Kubernetes resource.

The delete and verify functions used as parameters should implement and return the error from the Kubernetes `Delete` and `Get` commands respectively.

The resource string will be used to report the resource in log and error messages. A good pattern would be to set this string to the resource type (e.g., Deployment) and the name of the resource (e.g., my-deployment).

The default wait options should specify sane defaults for retry count and retry interval for deletion of the specific resource type. Only retry count and interval will be used from this parameter.

func DeleteService added in v1.7.3

func DeleteService(clientset kubernetes.Interface, namespace, name string) error

DeleteService deletes a Service and returns the error if any

func DeploymentNames added in v1.7.3

func DeploymentNames(deployments *appsv1.DeploymentList) (names []string)

DeploymentNames returns a list of the names of deployments in the deployment list

func ExpandPVCIfRequired added in v1.7.3

func ExpandPVCIfRequired(client client.Client, desiredPVC *v1.PersistentVolumeClaim, currentPVC *v1.PersistentVolumeClaim)

ExpandPVCIfRequired will expand the PVC if requested size is greater than the actual size of existing PVC

func ForceDeletePodIfStuck added in v1.7.3

func ForceDeletePodIfStuck(clusterdContext *clusterd.Context, pod v1.Pod) error

func GenerateNodeAffinity added in v1.1.2

func GenerateNodeAffinity(nodeAffinity string) (*v1.NodeAffinity, error)

GenerateNodeAffinity will return v1.NodeAffinity or error

func GetContainerImage added in v0.7.0

func GetContainerImage(pod *v1.Pod, name string) (string, error)

GetContainerImage returns the container image matching the given name for a pod. If the pod only has a single container, the name argument is ignored.

func GetDaemonsets added in v1.0.3

func GetDaemonsets(clientset kubernetes.Interface, namespace, labelSelector string) (*appsv1.DaemonSetList, error)

GetDaemonsets returns a list of daemonsets names labels matching a given selector example of a label selector might be "app=rook-ceph-mon, mon!=b" more: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/

func GetDeploymentImage added in v0.9.0

func GetDeploymentImage(clientset kubernetes.Interface, namespace, name, container string) (string, error)

GetDeploymentImage returns the version of the image running in the pod spec for the desired container

func GetDeploymentSpecImage added in v0.9.0

func GetDeploymentSpecImage(clientset kubernetes.Interface, d appsv1.Deployment, container string, initContainer bool) (string, error)

GetDeploymentSpecImage returns the image name from the spec

func GetDeployments added in v0.9.0

func GetDeployments(clientset kubernetes.Interface, namespace, labelSelector string) (*appsv1.DeploymentList, error)

GetDeployments returns a list of deployment names labels matching a given selector example of a label selector might be "app=rook-ceph-mon, mon!=b" more: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/

func GetK8SVersion added in v0.6.0

func GetK8SVersion(clientset kubernetes.Interface) (*version.Version, error)

GetK8SVersion gets the version of the running K8S cluster

func GetKubernetesNodesMatchingRookNodes added in v1.0.0

func GetKubernetesNodesMatchingRookNodes(rookNodes []cephv1.Node, clientset kubernetes.Interface) ([]v1.Node, error)

GetKubernetesNodesMatchingRookNodes lists all the nodes in Kubernetes and returns all the Kubernetes nodes that have a corresponding match in the list of Rook nodes.

func GetMatchingContainer added in v0.8.0

func GetMatchingContainer(containers []v1.Container, name string) (v1.Container, error)

GetMatchingContainer takes a list of containers and a name, and returns the first container in the list matching the name. If the list contains a single container it is always returned, even if the name does not match.

func GetNodeHostName added in v1.1.1

func GetNodeHostName(clientset kubernetes.Interface, nodeName string) (string, error)

GetNodeHostName returns the hostname label given the node name.

func GetNodeHostNameLabel added in v1.2.2

func GetNodeHostNameLabel(node *v1.Node) (string, error)

func GetNodeHostNames added in v0.8.3

func GetNodeHostNames(clientset kubernetes.Interface) (map[string]string, error)

GetNodeHostNames returns the name of the node resource mapped to their hostname label. Typically these will be the same name, but sometimes they are not such as when nodes have a longer dns name, but the hostname is short.

func GetNodeNameFromHostname added in v0.8.3

func GetNodeNameFromHostname(clientset kubernetes.Interface, hostName string) (string, error)

GetNodeNameFromHostname returns the name of the node resource looked up by the hostname label Typically these will be the same name, but sometimes they are not such as when nodes have a longer dns name, but the hostname is short.

func GetNodeSchedulable added in v1.0.0

func GetNodeSchedulable(node v1.Node) bool

GetNodeSchedulable returns a boolean if the node is tainted as Schedulable or not true -> Node is schedulable false -> Node is unschedulable

func GetNotReadyKubernetesNodes added in v1.7.3

func GetNotReadyKubernetesNodes(clientset kubernetes.Interface) ([]v1.Node, error)

GetNotReadyKubernetesNodes lists all the nodes that are in NotReady state

func GetOperatorSetting added in v1.2.5

func GetOperatorSetting(clientset kubernetes.Interface, configMapName, settingName, defaultValue string) (string, error)

GetOperatorSetting gets the operator setting from ConfigMap or Env Var returns defaultValue if setting is not found

func GetPodLog added in v0.9.0

func GetPodLog(clientset kubernetes.Interface, namespace string, labelSelector string) (string, error)

GetJobLog gets the logs for the pod. If there is more than one pod with the label selector, the logs from the first pod will be returned.

func GetPodPhaseMap added in v0.8.0

func GetPodPhaseMap(pods *v1.PodList) map[v1.PodPhase][]string

GetPodPhaseMap takes a list of pods and returns a map of pod phases to the names of pods that are in that phase

func GetPrometheusRule added in v1.1.0

func GetPrometheusRule(ruleFilePath string) (*monitoringv1.PrometheusRule, error)

GetPrometheusRule returns provided prometheus rules or an error

func GetRunningPod added in v0.8.0

func GetRunningPod(clientset kubernetes.Interface) (*v1.Pod, error)

GetRunningPod reads the name and namespace of a pod from the environment, and returns the pod (if it exists).

func GetServiceMonitor added in v1.1.0

func GetServiceMonitor(filePath string) (*monitoringv1.ServiceMonitor, error)

GetServiceMonitor returns servicemonitor or an error

func GetSpecContainerImage added in v0.8.1

func GetSpecContainerImage(spec v1.PodSpec, name string, initContainer bool) (string, error)

GetSpecContainerImage returns the container image for a podspec, given a container name. The name is ignored if the podspec has a single container, in which case the image for that container is returned.

func GetValidNodes added in v0.8.1

func GetValidNodes(rookStorage cephv1.StorageScopeSpec, clientset kubernetes.Interface, placement cephv1.Placement) []cephv1.Node

GetValidNodes returns all nodes that (1) are not cordoned, (2) meet Rook's placement terms, and (3) are ready.

func Hash added in v0.8.1

func Hash(s string) string

Hash stableName computes a stable pseudorandom string suitable for inclusion in a Kubernetes object name from the given seed string. Do **NOT** edit this function in a way that would change its output as it needs to provide consistent mappings from string to hash across versions of rook.

func IndexToName added in v0.9.0

func IndexToName(index int) string

IndexToName converts an index to a daemon name based on as few letters of the alphabet as possible. For example:

0 -> a
1 -> b
25 -> z
26 -> aa

func IsPodScheduled added in v1.7.3

func IsPodScheduled(clientSet kubernetes.Interface, namespace, selector string) (bool, error)

func MergeResourceRequirements added in v0.7.0

func MergeResourceRequirements(first, second v1.ResourceRequirements) v1.ResourceRequirements

func NameEnvVar added in v0.6.0

func NameEnvVar() v1.EnvVar

NameEnvVar pod name env var

func NameToIndex added in v0.9.0

func NameToIndex(name string) (int, error)

NameToIndex converts a daemon name to an index, which is the inverse of IndexToName For example:

a -> 0
b -> 1

func NamespaceEnvVar

func NamespaceEnvVar() v1.EnvVar

NamespaceEnvVar namespace env var

func NodeConfigURI added in v0.6.0

func NodeConfigURI() (string, error)

NodeConfigURI returns the node config URI path for this node

func NodeEnvVar added in v0.6.0

func NodeEnvVar() v1.EnvVar

NodeEnvVar node env var

func NodeIsReady added in v1.0.0

func NodeIsReady(node v1.Node) bool

NodeIsReady returns true if the node is ready. It returns false if the node is not ready.

func NodeIsTolerable added in v1.0.0

func NodeIsTolerable(node v1.Node, tolerations []v1.Toleration, ignoreWellKnownTaints bool) bool

NodeIsTolerable returns true if the node's taints are all tolerated by the given tolerations. There is the option to ignore well known taints defined in WellKnownTaints. See WellKnownTaints for more information.

func NodeMeetsAffinityTerms added in v1.0.0

func NodeMeetsAffinityTerms(node v1.Node, affinity *v1.NodeAffinity) (bool, error)

NodeMeetsAffinityTerms returns true if the node meets the terms of the node affinity. `PreferredDuringSchedulingIgnoredDuringExecution` terms are ignored and not used to judge a node's usability.

func NodeMeetsPlacementTerms added in v1.0.0

func NodeMeetsPlacementTerms(node v1.Node, placement cephv1.Placement, ignoreWellKnownTaints bool) (bool, error)

NodeMeetsPlacementTerms returns true if the Rook placement allows the node to have resources scheduled on it. A node is placeable if it (1) meets any affinity terms that may be set in the placement, and (2) its taints are tolerated by the placements tolerations. There is the option to ignore well known taints defined in WellKnownTaints. See WellKnownTaints for more information.

func ParseServiceType added in v1.1.0

func ParseServiceType(serviceString string) v1.ServiceType

ParseServiceType parses a string and returns a*v1.ServiceType. If the ServiceType is invalid, this should be considered an error.

func ParseStringToLabels added in v1.7.3

func ParseStringToLabels(in string) map[string]string

ParseStringToLabels parse a label selector string into a map[string]string

func PathToVolumeName added in v0.4.0

func PathToVolumeName(path string) string

PathToVolumeName converts a path to a valid volume name

func PodIPEnvVar

func PodIPEnvVar(property string) v1.EnvVar

PodIPEnvVar returns an env var such that the pod's ip will be mapped to the given property (env var) name within the container.

func PodsRunningWithLabel added in v0.9.0

func PodsRunningWithLabel(clientset kubernetes.Interface, namespace, label string) (int, error)

PodsRunningWithLabel returns the number of running pods with the given label

func PodsWithLabelAreAllRunning added in v1.7.3

func PodsWithLabelAreAllRunning(clientset kubernetes.Interface, namespace, label string) (bool, error)

PodsWithLabelAreAllRunning returns whether all pods with the label are in running state

func RemoveDuplicateEnvVars added in v1.7.3

func RemoveDuplicateEnvVars(pod *v1.PodSpec)

func RookNodesMatchingKubernetesNodes added in v1.0.0

func RookNodesMatchingKubernetesNodes(rookStorage cephv1.StorageScopeSpec, kubernetesNodes []v1.Node) []cephv1.Node

RookNodesMatchingKubernetesNodes returns only the given Rook nodes which have a corresponding match in the list of Kubernetes nodes.

func RookVersionLabelMatchesCurrent added in v1.7.3

func RookVersionLabelMatchesCurrent(labels map[string]string) (bool, error)

RookVersionLabelMatchesCurrent returns true if the Rook version on the resource label matches the current Rook version running. It returns false if the label does not match. It returns an error if the label does not exist.

func RunReplaceableJob added in v0.9.0

func RunReplaceableJob(clientset kubernetes.Interface, job *batch.Job, deleteIfFound bool) error

RunReplaceableJob runs a Kubernetes job with the intention that the job can be replaced by another call to this function with the same job name. For example, if a storage operator is restarted/updated before the job can complete, the operator's next run of the job should replace the previous job if deleteIfFound is set to true.

func SetNodeAntiAffinityForPod added in v1.7.3

func SetNodeAntiAffinityForPod(pod *v1.PodSpec, requiredDuringScheduling bool, topologyKey string, labels, nodeSelector map[string]string)

SetNodeAntiAffinityForPod assign pod anti-affinity when pod should not be co-located

func SetOwnerRefsWithoutBlockOwner added in v1.2.0

func SetOwnerRefsWithoutBlockOwner(object metav1.Object, ownerRefs []metav1.OwnerReference)

func StartOperatorSettingsWatch added in v1.7.3

func StartOperatorSettingsWatch(context *clusterd.Context, operatorNamespace, operatorSettingConfigMapName string,
	addFunc func(obj interface{}), updateFunc func(oldObj, newObj interface{}), deleteFunc func(obj interface{}), stopCh chan struct{})

StartOperatorSettingsWatch starts the watch for Operator Settings ConfigMap

func TaintIsWellKnown added in v1.0.0

func TaintIsWellKnown(t v1.Taint) bool

TaintIsWellKnown returns true if the taint's key is in the WellKnownTaints list. False otherwise. See WellKnownTaints for more information.

func TruncateNodeName added in v0.8.1

func TruncateNodeName(format, nodeName string) string

TruncateNodeName hashes the nodeName in case it would case the name to be longer than 63 characters WARNING If your format and nodeName as a hash, are longer than 63 chars it won't be truncated! Your format alone should only be 31 chars at max because of MD5 hash being 32 chars. For more information, see the following resources: https://stackoverflow.com/a/50451893 https://stackoverflow.com/a/32294443 Do **NOT** edit this function in a way that would change its output as it needs to provide consistent mappings from string to hash across versions of rook.

func UpdateDeploymentAndWait added in v0.8.1

func UpdateDeploymentAndWait(clusterContext *clusterd.Context, modifiedDeployment *appsv1.Deployment, namespace string, verifyCallback func(action string) error) error

UpdateDeploymentAndWait updates a deployment and waits until it is running to return. It will error if the deployment does not exist to be updated or if it takes too long. This method has a generic callback function that each backend can rely on It serves two purposes:

  1. verify that a resource can be stopped
  2. verify that we can continue the update procedure

Basically, we go one resource by one and check if we can stop and then if the resource has been successfully updated we check if we can go ahead and move to the next one.

func UpdateMultipleDeployments added in v1.7.3

func UpdateMultipleDeployments(
	clientset kubernetes.Interface,
	deployments []*appsv1.Deployment,
) (DeploymentsUpdated, Failures, *int32)

UpdateMultipleDeployments updates multiple deployments and returns DeploymentsUpdated map of deployment names which were updated successfully and the observed generation of the deployments before they were updated. If deployments are already up to date, they are not reported in the DeploymentsUpdated map. The DeploymentsUpdated map can be used with the WaitForDeploymentsToUpdate function. Also returns a list of failures. Each failure returned includes the name of the deployment which could not be updated and the error experienced when attempting to update the deployment.

func UpdateService added in v1.0.0

func UpdateService(
	clientset kubernetes.Interface, namespace string, serviceDefinition *v1.Service,
) (*v1.Service, error)

UpdateService updates a service declaratively. If the service does not exist this is considered an error condition.

func UsePDBV1Beta1Version added in v1.7.3

func UsePDBV1Beta1Version(Clientset kubernetes.Interface) (bool, error)

func ValidNode added in v0.8.1

func ValidNode(node v1.Node, placement cephv1.Placement) (bool, error)

ValidNode returns true if the node (1) is schedulable, (2) meets Rook's placement terms, and (3) is ready. False otherwise.

func ValidNodeNoSched added in v1.1.0

func ValidNodeNoSched(node v1.Node, placement cephv1.Placement) (bool, error)

ValidNodeNoSched returns true if the node (1) meets Rook's placement terms, and (2) is ready. Unlike ValidNode, this method will ignore the Node.Spec.Unschedulable flag. False otherwise.

func WaitForDeploymentImage added in v0.9.0

func WaitForDeploymentImage(clientset kubernetes.Interface, namespace, label, container string, initContainer bool, desiredImage string) error

WaitForDeploymentImage waits for all deployments with the given labels are running. WARNING:This is currently only useful for testing!

func WaitForDeploymentToStart added in v1.7.3

func WaitForDeploymentToStart(clusterdContext *clusterd.Context, deployment *appsv1.Deployment) error

func WaitForJobCompletion added in v0.9.0

func WaitForJobCompletion(clientset kubernetes.Interface, job *batch.Job, timeout time.Duration) error

WaitForJobCompletion waits for a job to reach the completed state. Assumes that only one pod needs to complete.

func WatchCR added in v1.7.3

func WatchCR(resource CustomResource, namespace string, handlers cache.ResourceEventHandlerFuncs, client rest.Interface, objType runtime.Object, done <-chan struct{})

WatchCR begins watching the custom resource (CRD). The call will block until a Done signal is raised during in the context. When the watch has detected a create, update, or delete event, it will handled by the functions in the resourceEventHandlers. After the callback returns, the watch loop will continue for the next event. If the callback returns an error, the error will be logged.

func YamlToTolerations added in v1.1.0

func YamlToTolerations(raw string) ([]v1.Toleration, error)

This function takes raw YAML string and converts it to Kubernetes Tolerations array

Types

type ConfigMapKVStore added in v0.6.0

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

func NewConfigMapKVStore added in v0.6.0

func NewConfigMapKVStore(namespace string, clientset kubernetes.Interface, ownerInfo *OwnerInfo) *ConfigMapKVStore

func (*ConfigMapKVStore) ClearStore added in v0.6.0

func (kv *ConfigMapKVStore) ClearStore(storeName string) error

func (*ConfigMapKVStore) GetStore added in v0.6.0

func (kv *ConfigMapKVStore) GetStore(storeName string) (map[string]string, error)

func (*ConfigMapKVStore) GetValue added in v0.6.0

func (kv *ConfigMapKVStore) GetValue(storeName, key string) (string, error)

func (*ConfigMapKVStore) SetValue added in v0.6.0

func (kv *ConfigMapKVStore) SetValue(storeName, key, value string) error

func (*ConfigMapKVStore) SetValueWithLabels added in v0.8.0

func (kv *ConfigMapKVStore) SetValueWithLabels(storeName, key, value string, labels map[string]string) error

type ContainerResource added in v1.7.3

type ContainerResource struct {
	Name     string                  `json:"name"`
	Resource v1.ResourceRequirements `json:"resource"`
}

func YamlToContainerResource added in v1.7.3

func YamlToContainerResource(raw string) ([]ContainerResource, error)

YamlToContainerResource takes raw YAML string and converts it to array of ContainerResource

type CustomResource added in v1.7.3

type CustomResource struct {
	// Name of the custom resource
	Name string

	// Plural of the custom resource in plural
	Plural string

	// Group the custom resource belongs to
	Group string

	// Version which should be defined in a const above
	Version string

	// Kind is the serialized interface of the resource.
	Kind string

	// APIVersion is the full API version name (combine Group and Version)
	APIVersion string
}

CustomResource is for creating a Kubernetes TPR/CRD

type DeleteOptions added in v1.1.0

type DeleteOptions struct {
	// MustDelete controls the idempotency of the delete operation. If MustDelete is true and the
	// resource being deleted does not exist, the delete operation is considered a failure. If
	// MustDelete is false and the resource being deleted does not exist, the delete operation is
	// considered a success.
	MustDelete bool

	// DeleteOptions is a superset of WaitOptions.
	WaitOptions
}

DeleteOptions are a common set of options controlling the behavior of k8sutil delete operations. DeleteOptions is a superset of WaitOptions.

type DeploymentsUpdated added in v1.7.3

type DeploymentsUpdated map[string]int64

DeploymentsUpdated is a mapping from deployment name to the observed generation of the old deployment which was updated.

func (*DeploymentsUpdated) Names added in v1.7.3

func (d *DeploymentsUpdated) Names() (names []string)

Names returns the names of the deployments which were updated.

type EventReporter added in v1.7.3

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

EventReporter is custom events reporter type which allows user to limit the events

func NewEventReporter added in v1.7.3

func NewEventReporter(recorder record.EventRecorder) *EventReporter

NewEventReporter returns EventReporter object

func (*EventReporter) ReportIfNotPresent added in v1.7.3

func (rep *EventReporter) ReportIfNotPresent(instance runtime.Object, eventType, eventReason, msg string)

ReportIfNotPresent will report event if lastReportedEvent is not the same in last 60 minutes

type Failure added in v1.7.3

type Failure struct {
	ResourceName string
	Error        error
}

type Failures added in v1.7.3

type Failures []Failure

func UpdateMultipleDeploymentsAndWait added in v1.7.3

func UpdateMultipleDeploymentsAndWait(
	clientset kubernetes.Interface,
	deployments []*appsv1.Deployment,
	listFunc func() (*appsv1.DeploymentList, error),
) Failures

func WaitForDeploymentsToUpdate added in v1.7.3

func WaitForDeploymentsToUpdate(
	deploymentsUpdated DeploymentsUpdated,
	progressDeadlineSeconds *int32,
	listFunc func() (*appsv1.DeploymentList, error),
) Failures

WaitForDeploymentsToUpdate waits for all deployments to update. It returns a list of failures. Each failure includes the name of the deployment which was not updated within the timeout and an error indicating the reason why.

func (*Failures) CollatedErrors added in v1.7.3

func (failures *Failures) CollatedErrors() error

type NetworkAttachmentConfig added in v1.7.3

type NetworkAttachmentConfig struct {
	CniVersion string `json:"cniVersion,omitempty"`
	Type       string `json:"type,omitempty"`
	Master     string `json:"master,omitempty"`
	Mode       string `json:"mode,omitempty"`
	Ipam       struct {
		Type      string `json:"type,omitempty"`
		Subnet    string `json:"subnet,omitempty"`
		Addresses []struct {
			Address string `json:"address,omitempty"`
			Gateway string `json:"gateway,omitempty"`
		} `json:"addresses,omitempty"`
		Ranges [][]struct {
			Subnet     string `json:"subnet,omitempty"`
			RangeStart string `json:"rangeStart,omitempty"`
			RangeEnd   string `json:"rangeEnd,omitempty"`
			Gateway    string `json:"gateway,omitempty"`
		} `json:"ranges,omitempty"`
		Range      string `json:"range,omitempty"`
		RangeStart string `json:"rangeStart,omitempty"`
		RangeEnd   string `json:"rangeEnd,omitempty"`
		Routes     []struct {
			Dst string `json:"dst,omitempty"`
		} `json:"routes,omitempty"`
		Gateway string `json:"gateway,omitempty"`
	} `json:"ipam,omitempty"`
}

NetworkAttachmentConfig represents the configuration of the NetworkAttachmentDefinitions object

func GetNetworkAttachmentConfig added in v1.7.3

func GetNetworkAttachmentConfig(n netapi.NetworkAttachmentDefinition) (NetworkAttachmentConfig, error)

GetNetworkAttachmentConfig returns the NetworkAttachmentDefinitions configuration

type OwnerInfo added in v1.7.3

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

OwnerInfo is to set owner references. Only one of owner and ownerRef must be valid.

func NewOwnerInfo added in v1.7.3

func NewOwnerInfo(owner metav1.Object, scheme *runtime.Scheme) *OwnerInfo

NewOwnerInfo create a new ownerInfo to set ownerReference by controllerutil

func NewOwnerInfoWithOwnerRef added in v1.7.3

func NewOwnerInfoWithOwnerRef(ownerRef *metav1.OwnerReference, namespace string) *OwnerInfo

NewOwnerInfoWithOwnerRef create a new ownerInfo to set ownerReference by rook itself

func (*OwnerInfo) GetUID added in v1.7.3

func (info *OwnerInfo) GetUID() types.UID

GetUID gets the UID of the owner

func (*OwnerInfo) SetControllerReference added in v1.7.3

func (info *OwnerInfo) SetControllerReference(object metav1.Object) error

SetControllerReference set the controller reference of object

func (*OwnerInfo) SetOwnerReference added in v1.7.3

func (info *OwnerInfo) SetOwnerReference(object metav1.Object) error

SetOwnerReference set the owner reference of object

type Patcher added in v1.7.3

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

Patcher is a utility for patching of objects and their status. Portion of this file is coming from https://github.com/kubernetes-sigs/cluster-api/blob/master/util/patch/patch.go

func NewPatcher added in v1.7.3

func NewPatcher(object client.Object, crclient client.Client) (*Patcher, error)

func (*Patcher) Patch added in v1.7.3

func (p *Patcher) Patch(ctx context.Context, object client.Object) error

type WaitOptions added in v1.1.0

type WaitOptions struct {
	// Wait defines whether the operation should wait in a loop and verify that the operation was
	// successful before returning.
	Wait bool

	// RetryCount defines how many times the operation should retry verification in the wait loop
	// before giving up. If RetryCount is zero, the operation should default to a sane value based
	// on the operation.
	RetryCount uint

	// RetryInterval defines the time the operation will wait before retrying verification. If
	// RetryInterval is zero, the operation should default to a sane value based on the operation.
	RetryInterval time.Duration

	// ErrorOnTimeout defines whether the operation should time out with an error. If ErrorOnTimeout
	// is true and the operation times out, the operation is considered a failure. If ErrorOnTimeout
	// is false and the operation times out, the operation should log a warning but not not report
	// failure.
	ErrorOnTimeout bool
}

WaitOptions are a common set of options controlling the behavior of k8sutil operations. If WaitOptions are specified, the operation should wait in a loop and verify that the operation being performed was successful.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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