diff --git a/api/v1/cosmosfullnode_types.go b/api/v1/cosmosfullnode_types.go index 0c7ecab0..22035acb 100644 --- a/api/v1/cosmosfullnode_types.go +++ b/api/v1/cosmosfullnode_types.go @@ -798,6 +798,11 @@ type InstanceOverridesSpec struct { // Sets an individual instance's external address. // +optional ExternalAddress *string `json:"externalAddress"` + + // NodeSelector is a selector which must be true for the pod to fit on a node. + // Selector which must match a node's labels for the pod to be scheduled on that node. + // +optional + NodeSelector map[string]string `json:"nodeSelector,omitempty"` } type DisableStrategy string diff --git a/api/v1/zz_generated.deepcopy.go b/api/v1/zz_generated.deepcopy.go index 1b11a80f..b09a5c2c 100644 --- a/api/v1/zz_generated.deepcopy.go +++ b/api/v1/zz_generated.deepcopy.go @@ -412,6 +412,13 @@ func (in *InstanceOverridesSpec) DeepCopyInto(out *InstanceOverridesSpec) { *out = new(string) **out = **in } + if in.NodeSelector != nil { + in, out := &in.NodeSelector, &out.NodeSelector + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InstanceOverridesSpec. diff --git a/config/crd/bases/cosmos.strange.love_cosmosfullnodes.yaml b/config/crd/bases/cosmos.strange.love_cosmosfullnodes.yaml index e7b449a6..187aaeee 100644 --- a/config/crd/bases/cosmos.strange.love_cosmosfullnodes.yaml +++ b/config/crd/bases/cosmos.strange.love_cosmosfullnodes.yaml @@ -408,6 +408,13 @@ spec: image: description: Overrides an individual instance's Image. type: string + nodeSelector: + additionalProperties: + type: string + description: |- + NodeSelector is a selector which must be true for the pod to fit on a node. + Selector which must match a node's labels for the pod to be scheduled on that node. + type: object volumeClaimTemplate: description: Overrides an individual instance's PVC. properties: diff --git a/internal/fullnode/pod_builder.go b/internal/fullnode/pod_builder.go index 92ba5c2a..b3325a61 100644 --- a/internal/fullnode/pod_builder.go +++ b/internal/fullnode/pod_builder.go @@ -214,6 +214,9 @@ func (b PodBuilder) Build() (*corev1.Pod, error) { if o.Image != "" { setChainContainerImage(pod, o.Image) } + if o.NodeSelector != nil { + pod.Spec.NodeSelector = o.NodeSelector + } } kube.NormalizeMetadata(&pod.ObjectMeta)