k8s

package
v1.5.1 Latest Latest
Warning

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

Go to latest
Published: Apr 1, 2026 License: MIT Imports: 19 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DeployOwnerKey = ".metadata.controller"
	// BuildIDLabel is the label that identifies the build ID for a deployment
	BuildIDLabel = "temporal.io/build-id"

	WorkerDeploymentNameSeparator = "/"
	ResourceNameSeparator         = "-"
	MaxBuildIDLen                 = 63
	MaxDeploymentNameLen          = 47
	ConnectionSpecHashAnnotation  = "temporal.io/connection-spec-hash"
	PodTemplateSpecHashAnnotation = "temporal.io/pod-template-spec-hash"
)
View Source
const FieldManager = "temporal-worker-controller"

FieldManager is the SSA field manager name used when applying WorkerResourceTemplate-rendered resources. A single constant per controller is the standard Kubernetes pattern (see e.g. the ResourceClaim controller). TODO: Use this when we apply SSA to all resources.

View Source
const RenderedHashLen = 16

RenderedHashLen is the number of hex characters used for rendered-object hashes stored in WorkerResourceTemplateVersionStatus.LastAppliedHash. 16 hex chars = 8 bytes = 64 bits, giving negligible collision probability across thousands of (WRT × BuildID) pairs.

Variables

This section is empty.

Functions

func ApplyControllerPodSpecModifications added in v1.2.0

func ApplyControllerPodSpecModifications(
	podSpec *corev1.PodSpec,
	connection temporaliov1alpha1.TemporalConnectionSpec,
	temporalNamespace string,
	workerDeploymentName string,
	buildID string,
)

ApplyControllerPodSpecModifications applies controller-managed environment variables and volume mounts to a pod spec. This is used both when creating new deployments and when updating existing deployments for drift detection.

func CleanStringForDNS added in v1.0.0

func CleanStringForDNS(s string) string

func ComputeConnectionSpecHash added in v0.1.5

func ComputeConnectionSpecHash(connection temporaliov1alpha1.TemporalConnectionSpec) string

TODO (Shivam): Change hash when secret name is updated as well.

func ComputePodTemplateSpecHash added in v1.2.0

func ComputePodTemplateSpecHash(template corev1.PodTemplateSpec) string

ComputePodTemplateSpecHash computes a SHA256 hash of the user-provided pod template spec. This hash is used to detect drift when the build ID is stable but the pod spec has changed. The hash captures ALL user-controllable fields in the pod template spec.

func ComputeRenderedObjectHash added in v1.5.0

func ComputeRenderedObjectHash(resource *unstructured.Unstructured) string

ComputeRenderedObjectHash returns a stable, deterministic hash of a rendered Unstructured object. The hash is computed from the JSON representation of the object; encoding/json serialises map keys in sorted order, so the result is deterministic regardless of map iteration order. Returns an empty string (not an error) if marshalling fails — callers treat an empty hash as "always apply". When the returned hash is empty, the stored LastAppliedHash remains "" in status after a successful apply, so the "always apply" behaviour persists across reconcile cycles until marshalling succeeds.

func ComputeSelectorLabels added in v1.5.0

func ComputeSelectorLabels(twdName, buildID string) map[string]string

ComputeSelectorLabels returns the selector labels used by a versioned Deployment. These are the same labels set on the Deployment.Spec.Selector.MatchLabels.

func ComputeVersionedDeploymentName

func ComputeVersionedDeploymentName(baseName, buildID string) string

ComputeVersionedDeploymentName generates a name for a versioned deployment Name will be <=47 characters and unique for that Worker Deployment Version within the namespace.

func ComputeWorkerDeploymentName

func ComputeWorkerDeploymentName(w *temporaliov1alpha1.TemporalWorkerDeployment) string

ComputeWorkerDeploymentName generates the base worker deployment name

func ComputeWorkerResourceTemplateName added in v1.5.0

func ComputeWorkerResourceTemplateName(twdName, wrtName, buildID string) string

ComputeWorkerResourceTemplateName generates a deterministic, DNS-safe name for the worker resource template instance corresponding to a given (twdName, wrtName, buildID) triple.

The name has the form:

{human-readable-prefix}-{8-char-hash}

The 8-character hash is computed from the full untruncated triple BEFORE any length capping occurs. This guarantees that two different triples — including triples that differ only in the buildID — always produce different names, even if the human-readable prefix is truncated. The buildID is therefore always uniquely represented via the hash, regardless of how long twdName or wrtName are.

func HashString added in v1.3.0

func HashString(s string) string

func IsDeploymentHealthy

func IsDeploymentHealthy(deployment *appsv1.Deployment) (bool, *metav1.Time)

IsDeploymentHealthy checks if a deployment is in the "Available" state

func NewDeploymentWithControllerRef

func NewDeploymentWithControllerRef(
	w *temporaliov1alpha1.TemporalWorkerDeployment,
	buildID string,
	connection temporaliov1alpha1.TemporalConnectionSpec,
	reconcilerScheme *runtime.Scheme,
) (*appsv1.Deployment, error)

func NewDeploymentWithOwnerRef

func NewDeploymentWithOwnerRef(
	typeMeta *metav1.TypeMeta,
	objectMeta *metav1.ObjectMeta,
	spec *temporaliov1alpha1.TemporalWorkerDeploymentSpec,
	workerDeploymentName string,
	buildID string,
	connection temporaliov1alpha1.TemporalConnectionSpec,
) *appsv1.Deployment

NewDeploymentWithOwnerRef creates a new deployment resource, including owner references

func NewObjectRef

func NewObjectRef(obj client.Object) *corev1.ObjectReference

NewObjectRef creates a reference to a Kubernetes object

func RenderWorkerResourceTemplate added in v1.5.0

func RenderWorkerResourceTemplate(
	wrt *temporaliov1alpha1.WorkerResourceTemplate,
	deployment *appsv1.Deployment,
	buildID string,
	temporalNamespace string,
) (*unstructured.Unstructured, error)

RenderWorkerResourceTemplate produces the Unstructured object to apply via SSA for a given WorkerResourceTemplate and versioned Deployment.

Processing order:

  1. Unmarshal spec.template into an Unstructured
  2. Auto-inject scaleTargetRef and matchLabels (Layer 1)
  3. Set metadata (name, namespace, labels, owner reference)

func TruncateString added in v1.0.0

func TruncateString(s string, n int) string

TruncateString truncates string to the first n characters. Pass n = -1 to skip truncation.

func WorkerResourceTemplateVersionStatusForBuildID added in v1.5.0

func WorkerResourceTemplateVersionStatusForBuildID(buildID, resourceName string, generation int64, hash, applyError string) temporaliov1alpha1.WorkerResourceTemplateVersionStatus

WorkerResourceTemplateVersionStatusForBuildID builds a per-Build-ID status entry. generation is the WRT metadata.generation at the time of the apply; pass 0 on error to preserve the last-known-good generation. hash is the controller-internal rendered-object hash used for the SSA skip optimisation (pass "" on error).

Types

type DeploymentState

type DeploymentState struct {
	// Map of buildID to deployment
	Deployments map[string]*appsv1.Deployment
	// Sorted deployments by creation time
	DeploymentsByTime []*appsv1.Deployment
	// Map of buildID to deployment references
	DeploymentRefs map[string]*corev1.ObjectReference
}

DeploymentState represents the Kubernetes state of all deployments for a temporal worker deployment

func GetDeploymentState

func GetDeploymentState(
	ctx context.Context,
	k8sClient client.Client,
	namespace string,
	ownerName string,
	workerDeploymentName string,
) (*DeploymentState, error)

GetDeploymentState queries Kubernetes to get the state of all deployments associated with a TemporalWorkerDeployment

Jump to

Keyboard shortcuts

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