diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json
index 4218884..cd0b93b 100644
--- a/.config/dotnet-tools.json
+++ b/.config/dotnet-tools.json
@@ -3,11 +3,11 @@
"isRoot": true,
"tools": {
"kubeops.cli": {
- "version": "9.1.6-alethic.5",
+ "version": "9.11.8",
"commands": [
"kubeops"
],
"rollForward": false
}
}
-}
\ No newline at end of file
+}
diff --git a/charts/seq-operator/templates/clusterrole.yaml b/charts/seq-operator/templates/clusterrole.yaml
index 8836e93..0ee8346 100644
--- a/charts/seq-operator/templates/clusterrole.yaml
+++ b/charts/seq-operator/templates/clusterrole.yaml
@@ -20,7 +20,7 @@ rules:
verbs:
- '*'
- apiGroups:
- - ""
+ - ''
resources:
- secrets
- services
@@ -33,6 +33,14 @@ rules:
- events
verbs:
- '*'
+- apiGroups:
+ - ''
+ resources:
+ - namespaces
+ verbs:
+ - get
+ - list
+ - watch
- apiGroups:
- apps
resources:
@@ -40,7 +48,7 @@ rules:
verbs:
- '*'
- apiGroups:
- - ""
+ - ''
resources:
- events
verbs:
@@ -53,7 +61,13 @@ rules:
resources:
- leases
verbs:
- - '*'
+ - get
+ - list
+ - watch
+ - create
+ - update
+ - patch
+ - delete
- apiGroups:
- seq.k8s.datalust.co
resources:
@@ -79,7 +93,15 @@ rules:
- update
- patch
- apiGroups:
- - ""
+ - ''
+ resources:
+ - namespaces/status
+ verbs:
+ - get
+ - update
+ - patch
+- apiGroups:
+ - ''
resources:
- services/status
verbs:
@@ -110,15 +132,4 @@ rules:
- get
- update
- patch
-
-
-# Additional not generated
-- apiGroups:
- - ""
- resources:
- - namespaces
- verbs:
- - get
- - list
- - watch
---
diff --git a/src/Alethic.Seq.Operator/Instance/InstanceDeploymentSpec.cs b/src/Alethic.Seq.Operator/Instance/InstanceDeploymentSpec.cs
index de7a077..290ef72 100644
--- a/src/Alethic.Seq.Operator/Instance/InstanceDeploymentSpec.cs
+++ b/src/Alethic.Seq.Operator/Instance/InstanceDeploymentSpec.cs
@@ -93,6 +93,39 @@ public class InstanceDeploymentSpec
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? ImagePullPolicy { get; set; }
+ ///
+ /// Liveness probe for the Seq container. Replaces the operator's own probe entirely when set; leave it unset
+ /// to keep the default.
+ ///
+ ///
+ /// Seq answers /health from the same thread pool that serves ingestion, so on a busy or CPU-starved
+ /// instance the response can take seconds. The default probe is deliberately conservative rather than
+ /// generous, and a deployment that knows its own load may need to say so.
+ ///
+ [JsonPropertyName("livenessProbe")]
+ [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+ public V1Probe? LivenessProbe { get; set; }
+
+ ///
+ /// Readiness probe for the Seq container. Replaces the operator's own probe entirely when set; leave it unset
+ /// to keep the default.
+ ///
+ [JsonPropertyName("readinessProbe")]
+ [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+ public V1Probe? ReadinessProbe { get; set; }
+
+ ///
+ /// Startup probe for the Seq container. Replaces the operator's own probe entirely when set; leave it unset
+ /// to keep the default.
+ ///
+ ///
+ /// While a startup probe is running the liveness and readiness probes are held off, so this is the one that
+ /// governs how long a cold instance is given — a large store replaying on first boot is the case to size for.
+ ///
+ [JsonPropertyName("startupProbe")]
+ [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+ public V1Probe? StartupProbe { get; set; }
+
[JsonPropertyName("service")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public InstanceDeploymentServiceSpec? Service { get; set; }
diff --git a/src/Alethic.Seq.Operator/Instance/V1alpha1InstanceController.cs b/src/Alethic.Seq.Operator/Instance/V1alpha1InstanceController.cs
index c385992..5bc608b 100644
--- a/src/Alethic.Seq.Operator/Instance/V1alpha1InstanceController.cs
+++ b/src/Alethic.Seq.Operator/Instance/V1alpha1InstanceController.cs
@@ -28,6 +28,11 @@
namespace Alethic.Seq.Operator.Instance
{
+ // Namespaces are read, never written: an Instance's permissions can admit entities from every namespace or from
+ // those matching a selector, and both are evaluated against the namespace object itself. Nothing infers this from
+ // the controller's entity types, so without it the generated role omits namespaces and has to be patched by hand
+ // wherever it is copied.
+ [EntityRbac(typeof(V1Namespace), Verbs = RbacVerb.Get | RbacVerb.List | RbacVerb.Watch)]
[EntityRbac(typeof(V1alpha1Instance), Verbs = RbacVerb.All)]
[EntityRbac(typeof(V1Secret), Verbs = RbacVerb.All)]
[EntityRbac(typeof(V1Service), Verbs = RbacVerb.All)]
@@ -593,7 +598,11 @@ V1StatefulSet ApplyDeploymentStatefulSet(V1alpha1Instance instance, InstanceDepl
container.VolumeMounts.Clear();
container.VolumeMounts.Add(new V1VolumeMount("/data", "seq-data"));
- container.LivenessProbe = new V1Probe(
+ // A probe given on the deployment replaces ours outright rather than merging into it. Merging would let a
+ // caller set one field and silently inherit the rest of ours, so the probe they read back would be neither
+ // what they wrote nor what we chose; and it offers no way to clear a field we set. This follows the same
+ // shape as Resources below, which is a straight pass-through of what the caller supplied.
+ container.LivenessProbe = deployment.LivenessProbe ?? new V1Probe(
httpGet: new V1HTTPGetAction("ui", path: "/health"),
failureThreshold: 3,
initialDelaySeconds: 0,
@@ -601,7 +610,7 @@ V1StatefulSet ApplyDeploymentStatefulSet(V1alpha1Instance instance, InstanceDepl
successThreshold: 1,
timeoutSeconds: 1);
- container.ReadinessProbe = new V1Probe(
+ container.ReadinessProbe = deployment.ReadinessProbe ?? new V1Probe(
httpGet: new V1HTTPGetAction("ui", path: "/health"),
failureThreshold: 3,
initialDelaySeconds: 0,
@@ -609,7 +618,7 @@ V1StatefulSet ApplyDeploymentStatefulSet(V1alpha1Instance instance, InstanceDepl
successThreshold: 1,
timeoutSeconds: 1);
- container.StartupProbe = new V1Probe(
+ container.StartupProbe = deployment.StartupProbe ?? new V1Probe(
httpGet: new V1HTTPGetAction("ui", path: "/health"),
failureThreshold: 30,
periodSeconds: 10);
diff --git a/src/Alethic.Seq.Operator/config/Dockerfile b/src/Alethic.Seq.Operator/config/Dockerfile
index d256e7a..657bdc4 100644
--- a/src/Alethic.Seq.Operator/config/Dockerfile
+++ b/src/Alethic.Seq.Operator/config/Dockerfile
@@ -10,8 +10,7 @@ FROM mcr.microsoft.com/dotnet/runtime:latest as final
RUN addgroup k8s-operator && useradd -G k8s-operator operator-user
WORKDIR /operator
-COPY --from=build /operator/out/ ./
-RUN chown operator-user:k8s-operator -R .
+COPY --chown=operator-user:k8s-operator --from=build /operator/out/ ./
USER operator-user
diff --git a/src/Alethic.Seq.Operator/config/alerts_seq_k8s_datalust_co.yaml b/src/Alethic.Seq.Operator/config/alerts_seq_k8s_datalust_co.yaml
index c423952..5f61c1a 100644
--- a/src/Alethic.Seq.Operator/config/alerts_seq_k8s_datalust_co.yaml
+++ b/src/Alethic.Seq.Operator/config/alerts_seq_k8s_datalust_co.yaml
@@ -18,7 +18,6 @@ spec:
openAPIV3Schema:
properties:
status:
- nullable: false
properties:
id:
nullable: true
@@ -89,7 +88,6 @@ spec:
type: string
notificationProperties:
additionalProperties:
- nullable: false
type: string
nullable: true
type: object
@@ -113,11 +111,9 @@ spec:
nullable: true
type: string
type: object
- nullable: false
type: array
type: object
spec:
- nullable: false
properties:
instanceRef:
nullable: true
diff --git a/src/Alethic.Seq.Operator/config/apikeys_seq_k8s_datalust_co.yaml b/src/Alethic.Seq.Operator/config/apikeys_seq_k8s_datalust_co.yaml
index 8dbaab5..4fbd61d 100644
--- a/src/Alethic.Seq.Operator/config/apikeys_seq_k8s_datalust_co.yaml
+++ b/src/Alethic.Seq.Operator/config/apikeys_seq_k8s_datalust_co.yaml
@@ -18,7 +18,6 @@ spec:
openAPIV3Schema:
properties:
status:
- nullable: false
properties:
id:
nullable: true
@@ -27,10 +26,8 @@ spec:
nullable: true
properties:
name:
- nullable: false
type: string
namespace:
- nullable: false
type: string
type: object
info:
@@ -68,7 +65,6 @@ spec:
properties:
appliedProperties:
additionalProperties:
- nullable: false
type: string
nullable: true
type: object
@@ -119,11 +115,9 @@ spec:
nullable: true
type: string
type: object
- nullable: false
type: array
type: object
spec:
- nullable: false
properties:
instanceRef:
nullable: true
@@ -141,10 +135,8 @@ spec:
nullable: true
properties:
name:
- nullable: false
type: string
namespace:
- nullable: false
type: string
type: object
conf:
@@ -173,7 +165,6 @@ spec:
properties:
appliedProperties:
additionalProperties:
- nullable: false
type: string
nullable: true
type: object
diff --git a/src/Alethic.Seq.Operator/config/instances_seq_k8s_datalust_co.yaml b/src/Alethic.Seq.Operator/config/instances_seq_k8s_datalust_co.yaml
index dbf705c..65798dd 100644
--- a/src/Alethic.Seq.Operator/config/instances_seq_k8s_datalust_co.yaml
+++ b/src/Alethic.Seq.Operator/config/instances_seq_k8s_datalust_co.yaml
@@ -18,7 +18,6 @@ spec:
openAPIV3Schema:
properties:
status:
- nullable: false
properties:
deployment:
nullable: true
@@ -30,20 +29,16 @@ spec:
nullable: true
properties:
name:
- nullable: false
type: string
namespace:
- nullable: false
type: string
type: object
tokenSecretRef:
nullable: true
properties:
name:
- nullable: false
type: string
namespace:
- nullable: false
type: string
type: object
type: object
@@ -94,7 +89,6 @@ spec:
type: string
scopes:
items:
- nullable: false
type: string
nullable: true
type: array
@@ -135,31 +129,26 @@ spec:
type: integer
newUserPreferences:
additionalProperties:
- nullable: false
type: string
nullable: true
type: object
newUserRoleIds:
items:
- nullable: false
type: string
nullable: true
type: array
newUserShowSignalIds:
items:
- nullable: false
type: string
nullable: true
type: array
newUserShowQueryIds:
items:
- nullable: false
type: string
nullable: true
type: array
newUserShowDashboardIds:
items:
- nullable: false
type: string
nullable: true
type: array
@@ -230,11 +219,9 @@ spec:
nullable: true
type: string
type: object
- nullable: false
type: array
type: object
spec:
- nullable: false
properties:
remote:
nullable: true
@@ -252,10 +239,8 @@ spec:
nullable: true
properties:
name:
- nullable: false
type: string
namespace:
- nullable: false
type: string
type: object
required:
@@ -268,10 +253,8 @@ spec:
nullable: true
properties:
name:
- nullable: false
type: string
namespace:
- nullable: false
type: string
type: object
required:
@@ -294,31 +277,25 @@ spec:
nullable: true
properties:
name:
- nullable: false
type: string
namespace:
- nullable: false
type: string
type: object
tokenSecretRef:
nullable: true
properties:
name:
- nullable: false
type: string
namespace:
- nullable: false
type: string
type: object
annotations:
additionalProperties:
- nullable: false
type: string
nullable: true
type: object
labels:
additionalProperties:
- nullable: false
type: string
nullable: true
type: object
@@ -326,60 +303,45 @@ spec:
nullable: true
properties:
nodeAffinity:
- nullable: false
properties:
preferredDuringSchedulingIgnoredDuringExecution:
items:
properties:
preference:
- nullable: false
properties:
matchExpressions:
items:
properties:
key:
- nullable: false
type: string
operator:
- nullable: false
type: string
values:
items:
- nullable: false
type: string
- nullable: false
type: array
type: object
- nullable: false
type: array
matchFields:
items:
properties:
key:
- nullable: false
type: string
operator:
- nullable: false
type: string
values:
items:
- nullable: false
type: string
- nullable: false
type: array
type: object
- nullable: false
type: array
type: object
weight:
format: int32
- nullable: false
type: integer
type: object
- nullable: false
type: array
requiredDuringSchedulingIgnoredDuringExecution:
- nullable: false
properties:
nodeSelectorTerms:
items:
@@ -388,403 +350,289 @@ spec:
items:
properties:
key:
- nullable: false
type: string
operator:
- nullable: false
type: string
values:
items:
- nullable: false
type: string
- nullable: false
type: array
type: object
- nullable: false
type: array
matchFields:
items:
properties:
key:
- nullable: false
type: string
operator:
- nullable: false
type: string
values:
items:
- nullable: false
type: string
- nullable: false
type: array
type: object
- nullable: false
type: array
type: object
- nullable: false
type: array
type: object
type: object
podAffinity:
- nullable: false
properties:
preferredDuringSchedulingIgnoredDuringExecution:
items:
properties:
podAffinityTerm:
- nullable: false
properties:
labelSelector:
- nullable: false
properties:
matchExpressions:
items:
properties:
key:
- nullable: false
type: string
operator:
- nullable: false
type: string
values:
items:
- nullable: false
type: string
- nullable: false
type: array
type: object
- nullable: false
type: array
matchLabels:
additionalProperties:
- nullable: false
type: string
- nullable: false
type: object
type: object
matchLabelKeys:
items:
- nullable: false
type: string
- nullable: false
type: array
mismatchLabelKeys:
items:
- nullable: false
type: string
- nullable: false
type: array
namespaceSelector:
- nullable: false
properties:
matchExpressions:
items:
properties:
key:
- nullable: false
type: string
operator:
- nullable: false
type: string
values:
items:
- nullable: false
type: string
- nullable: false
type: array
type: object
- nullable: false
type: array
matchLabels:
additionalProperties:
- nullable: false
type: string
- nullable: false
type: object
type: object
namespaces:
items:
- nullable: false
type: string
- nullable: false
type: array
topologyKey:
- nullable: false
type: string
type: object
weight:
format: int32
- nullable: false
type: integer
type: object
- nullable: false
type: array
requiredDuringSchedulingIgnoredDuringExecution:
items:
properties:
labelSelector:
- nullable: false
properties:
matchExpressions:
items:
properties:
key:
- nullable: false
type: string
operator:
- nullable: false
type: string
values:
items:
- nullable: false
type: string
- nullable: false
type: array
type: object
- nullable: false
type: array
matchLabels:
additionalProperties:
- nullable: false
type: string
- nullable: false
type: object
type: object
matchLabelKeys:
items:
- nullable: false
type: string
- nullable: false
type: array
mismatchLabelKeys:
items:
- nullable: false
type: string
- nullable: false
type: array
namespaceSelector:
- nullable: false
properties:
matchExpressions:
items:
properties:
key:
- nullable: false
type: string
operator:
- nullable: false
type: string
values:
items:
- nullable: false
type: string
- nullable: false
type: array
type: object
- nullable: false
type: array
matchLabels:
additionalProperties:
- nullable: false
type: string
- nullable: false
type: object
type: object
namespaces:
items:
- nullable: false
type: string
- nullable: false
type: array
topologyKey:
- nullable: false
type: string
type: object
- nullable: false
type: array
type: object
podAntiAffinity:
- nullable: false
properties:
preferredDuringSchedulingIgnoredDuringExecution:
items:
properties:
podAffinityTerm:
- nullable: false
properties:
labelSelector:
- nullable: false
properties:
matchExpressions:
items:
properties:
key:
- nullable: false
type: string
operator:
- nullable: false
type: string
values:
items:
- nullable: false
type: string
- nullable: false
type: array
type: object
- nullable: false
type: array
matchLabels:
additionalProperties:
- nullable: false
type: string
- nullable: false
type: object
type: object
matchLabelKeys:
items:
- nullable: false
type: string
- nullable: false
type: array
mismatchLabelKeys:
items:
- nullable: false
type: string
- nullable: false
type: array
namespaceSelector:
- nullable: false
properties:
matchExpressions:
items:
properties:
key:
- nullable: false
type: string
operator:
- nullable: false
type: string
values:
items:
- nullable: false
type: string
- nullable: false
type: array
type: object
- nullable: false
type: array
matchLabels:
additionalProperties:
- nullable: false
type: string
- nullable: false
type: object
type: object
namespaces:
items:
- nullable: false
type: string
- nullable: false
type: array
topologyKey:
- nullable: false
type: string
type: object
weight:
format: int32
- nullable: false
type: integer
type: object
- nullable: false
type: array
requiredDuringSchedulingIgnoredDuringExecution:
items:
properties:
labelSelector:
- nullable: false
properties:
matchExpressions:
items:
properties:
key:
- nullable: false
type: string
operator:
- nullable: false
type: string
values:
items:
- nullable: false
type: string
- nullable: false
type: array
type: object
- nullable: false
type: array
matchLabels:
additionalProperties:
- nullable: false
type: string
- nullable: false
type: object
type: object
matchLabelKeys:
items:
- nullable: false
type: string
- nullable: false
type: array
mismatchLabelKeys:
items:
- nullable: false
type: string
- nullable: false
type: array
namespaceSelector:
- nullable: false
properties:
matchExpressions:
items:
properties:
key:
- nullable: false
type: string
operator:
- nullable: false
type: string
values:
items:
- nullable: false
type: string
- nullable: false
type: array
type: object
- nullable: false
type: array
matchLabels:
additionalProperties:
- nullable: false
type: string
- nullable: false
type: object
type: object
namespaces:
items:
- nullable: false
type: string
- nullable: false
type: array
topologyKey:
- nullable: false
type: string
type: object
- nullable: false
type: array
type: object
type: object
nodeSelector:
additionalProperties:
- nullable: false
type: string
nullable: true
type: object
@@ -795,45 +643,18 @@ spec:
items:
properties:
name:
- nullable: false
type: string
request:
- nullable: false
type: string
type: object
- nullable: false
type: array
limits:
additionalProperties:
- properties:
- format:
- enum:
- - DecimalExponent
- - BinarySI
- - DecimalSI
- nullable: false
- type: string
- value:
- nullable: false
- type: string
- type: object
- nullable: false
+ type: string
type: object
requests:
additionalProperties:
- properties:
- format:
- enum:
- - DecimalExponent
- - BinarySI
- - DecimalSI
- nullable: false
- type: string
- value:
- nullable: false
- type: string
- type: object
- nullable: false
+ type: string
type: object
type: object
restartPolicy:
@@ -850,20 +671,16 @@ spec:
items:
properties:
effect:
- nullable: false
type: string
key:
- nullable: false
type: string
operator:
- nullable: false
type: string
tolerationSeconds:
format: int64
nullable: true
type: integer
value:
- nullable: false
type: string
type: object
nullable: true
@@ -872,58 +689,43 @@ spec:
items:
properties:
labelSelector:
- nullable: false
properties:
matchExpressions:
items:
properties:
key:
- nullable: false
type: string
operator:
- nullable: false
type: string
values:
items:
- nullable: false
type: string
- nullable: false
type: array
type: object
- nullable: false
type: array
matchLabels:
additionalProperties:
- nullable: false
type: string
- nullable: false
type: object
type: object
matchLabelKeys:
items:
- nullable: false
type: string
- nullable: false
type: array
maxSkew:
format: int32
- nullable: false
type: integer
minDomains:
format: int32
nullable: true
type: integer
nodeAffinityPolicy:
- nullable: false
type: string
nodeTaintsPolicy:
- nullable: false
type: string
topologyKey:
- nullable: false
type: string
whenUnsatisfiable:
- nullable: false
type: string
type: object
nullable: true
@@ -932,7 +734,6 @@ spec:
items:
properties:
name:
- nullable: false
type: string
type: object
nullable: true
@@ -941,69 +742,42 @@ spec:
items:
properties:
name:
- nullable: false
type: string
value:
- nullable: false
type: string
valueFrom:
- nullable: false
properties:
configMapKeyRef:
- nullable: false
properties:
key:
- nullable: false
type: string
name:
- nullable: false
type: string
optional:
nullable: true
type: boolean
type: object
fieldRef:
- nullable: false
properties:
apiVersion:
- nullable: false
type: string
fieldPath:
- nullable: false
type: string
type: object
resourceFieldRef:
- nullable: false
properties:
containerName:
- nullable: false
type: string
divisor:
- nullable: false
- properties:
- format:
- enum:
- - DecimalExponent
- - BinarySI
- - DecimalSI
- nullable: false
- type: string
- value:
- nullable: false
- type: string
- type: object
+ type: string
resource:
- nullable: false
type: string
type: object
secretKeyRef:
- nullable: false
properties:
key:
- nullable: false
type: string
name:
- nullable: false
type: string
optional:
nullable: true
@@ -1017,23 +791,18 @@ spec:
items:
properties:
configMapRef:
- nullable: false
properties:
name:
- nullable: false
type: string
optional:
nullable: true
type: boolean
type: object
prefix:
- nullable: false
type: string
secretRef:
- nullable: false
properties:
name:
- nullable: false
type: string
optional:
nullable: true
@@ -1048,6 +817,216 @@ spec:
imagePullPolicy:
nullable: true
type: string
+ livenessProbe:
+ nullable: true
+ properties:
+ exec:
+ properties:
+ command:
+ items:
+ type: string
+ type: array
+ type: object
+ failureThreshold:
+ format: int32
+ nullable: true
+ type: integer
+ grpc:
+ properties:
+ port:
+ format: int32
+ type: integer
+ service:
+ type: string
+ type: object
+ httpGet:
+ properties:
+ host:
+ type: string
+ httpHeaders:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ path:
+ type: string
+ port:
+ x-kubernetes-int-or-string: true
+ scheme:
+ type: string
+ type: object
+ initialDelaySeconds:
+ format: int32
+ nullable: true
+ type: integer
+ periodSeconds:
+ format: int32
+ nullable: true
+ type: integer
+ successThreshold:
+ format: int32
+ nullable: true
+ type: integer
+ tcpSocket:
+ properties:
+ host:
+ type: string
+ port:
+ x-kubernetes-int-or-string: true
+ type: object
+ terminationGracePeriodSeconds:
+ format: int64
+ nullable: true
+ type: integer
+ timeoutSeconds:
+ format: int32
+ nullable: true
+ type: integer
+ type: object
+ readinessProbe:
+ nullable: true
+ properties:
+ exec:
+ properties:
+ command:
+ items:
+ type: string
+ type: array
+ type: object
+ failureThreshold:
+ format: int32
+ nullable: true
+ type: integer
+ grpc:
+ properties:
+ port:
+ format: int32
+ type: integer
+ service:
+ type: string
+ type: object
+ httpGet:
+ properties:
+ host:
+ type: string
+ httpHeaders:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ path:
+ type: string
+ port:
+ x-kubernetes-int-or-string: true
+ scheme:
+ type: string
+ type: object
+ initialDelaySeconds:
+ format: int32
+ nullable: true
+ type: integer
+ periodSeconds:
+ format: int32
+ nullable: true
+ type: integer
+ successThreshold:
+ format: int32
+ nullable: true
+ type: integer
+ tcpSocket:
+ properties:
+ host:
+ type: string
+ port:
+ x-kubernetes-int-or-string: true
+ type: object
+ terminationGracePeriodSeconds:
+ format: int64
+ nullable: true
+ type: integer
+ timeoutSeconds:
+ format: int32
+ nullable: true
+ type: integer
+ type: object
+ startupProbe:
+ nullable: true
+ properties:
+ exec:
+ properties:
+ command:
+ items:
+ type: string
+ type: array
+ type: object
+ failureThreshold:
+ format: int32
+ nullable: true
+ type: integer
+ grpc:
+ properties:
+ port:
+ format: int32
+ type: integer
+ service:
+ type: string
+ type: object
+ httpGet:
+ properties:
+ host:
+ type: string
+ httpHeaders:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ path:
+ type: string
+ port:
+ x-kubernetes-int-or-string: true
+ scheme:
+ type: string
+ type: object
+ initialDelaySeconds:
+ format: int32
+ nullable: true
+ type: integer
+ periodSeconds:
+ format: int32
+ nullable: true
+ type: integer
+ successThreshold:
+ format: int32
+ nullable: true
+ type: integer
+ tcpSocket:
+ properties:
+ host:
+ type: string
+ port:
+ x-kubernetes-int-or-string: true
+ type: object
+ terminationGracePeriodSeconds:
+ format: int64
+ nullable: true
+ type: integer
+ timeoutSeconds:
+ format: int32
+ nullable: true
+ type: integer
+ type: object
service:
nullable: true
properties:
@@ -1056,13 +1035,11 @@ spec:
type: string
annotations:
additionalProperties:
- nullable: false
type: string
nullable: true
type: object
labels:
additionalProperties:
- nullable: false
type: string
nullable: true
type: object
@@ -1074,13 +1051,11 @@ spec:
type: string
clusterIPs:
items:
- nullable: false
type: string
nullable: true
type: array
externalIPs:
items:
- nullable: false
type: string
nullable: true
type: array
@@ -1095,7 +1070,6 @@ spec:
type: string
ipFamilies:
items:
- nullable: false
type: string
nullable: true
type: array
@@ -1110,7 +1084,6 @@ spec:
type: string
loadBalancerSourceRanges:
items:
- nullable: false
type: string
nullable: true
type: array
@@ -1124,7 +1097,6 @@ spec:
nullable: true
properties:
clientIP:
- nullable: false
properties:
timeoutSeconds:
format: int32
@@ -1176,25 +1148,18 @@ spec:
items:
properties:
key:
- nullable: false
type: string
operator:
- nullable: false
type: string
values:
items:
- nullable: false
type: string
- nullable: false
type: array
type: object
- nullable: false
type: array
matchLabels:
additionalProperties:
- nullable: false
type: string
- nullable: false
type: object
type: object
type: object
@@ -1312,7 +1277,6 @@ spec:
type: string
scopes:
items:
- nullable: false
type: string
nullable: true
type: array
@@ -1376,10 +1340,8 @@ spec:
nullable: true
properties:
key:
- nullable: false
type: string
name:
- nullable: false
type: string
optional:
nullable: true
diff --git a/src/Alethic.Seq.Operator/config/kustomization.yaml b/src/Alethic.Seq.Operator/config/kustomization.yaml
index b02fe05..5b963dd 100644
--- a/src/Alethic.Seq.Operator/config/kustomization.yaml
+++ b/src/Alethic.Seq.Operator/config/kustomization.yaml
@@ -1,7 +1,9 @@
namespace: alethic.seq.operator-system
namePrefix: alethic.seq.operator-
-commonLabels:
- operator: alethic.seq.operator
+labels:
+- includeSelectors: true
+ pairs:
+ operator: alethic.seq.operator
resources:
- operator-role.yaml
- operator-role-binding.yaml
diff --git a/src/Alethic.Seq.Operator/config/operator-role.yaml b/src/Alethic.Seq.Operator/config/operator-role.yaml
index b801d76..c165c9e 100644
--- a/src/Alethic.Seq.Operator/config/operator-role.yaml
+++ b/src/Alethic.Seq.Operator/config/operator-role.yaml
@@ -32,6 +32,14 @@ rules:
- events
verbs:
- '*'
+- apiGroups:
+ - ""
+ resources:
+ - namespaces
+ verbs:
+ - get
+ - list
+ - watch
- apiGroups:
- apps
resources:
@@ -52,7 +60,13 @@ rules:
resources:
- leases
verbs:
- - '*'
+ - get
+ - list
+ - watch
+ - create
+ - update
+ - patch
+ - delete
- apiGroups:
- seq.k8s.datalust.co
resources:
@@ -77,6 +91,14 @@ rules:
- get
- update
- patch
+- apiGroups:
+ - ""
+ resources:
+ - namespaces/status
+ verbs:
+ - get
+ - update
+ - patch
- apiGroups:
- ""
resources:
diff --git a/src/Alethic.Seq.Operator/config/retentionpolicys_seq_k8s_datalust_co.yaml b/src/Alethic.Seq.Operator/config/retentionpolicys_seq_k8s_datalust_co.yaml
index 9a376e1..05ac733 100644
--- a/src/Alethic.Seq.Operator/config/retentionpolicys_seq_k8s_datalust_co.yaml
+++ b/src/Alethic.Seq.Operator/config/retentionpolicys_seq_k8s_datalust_co.yaml
@@ -18,7 +18,6 @@ spec:
openAPIV3Schema:
properties:
status:
- nullable: false
properties:
id:
nullable: true
@@ -46,11 +45,9 @@ spec:
nullable: true
type: string
type: object
- nullable: false
type: array
type: object
spec:
- nullable: false
properties:
instanceRef:
nullable: true
diff --git a/src/Alethic.Seq.Operator/config/signals_seq_k8s_datalust_co.yaml b/src/Alethic.Seq.Operator/config/signals_seq_k8s_datalust_co.yaml
index 2ee09f0..78504b9 100644
--- a/src/Alethic.Seq.Operator/config/signals_seq_k8s_datalust_co.yaml
+++ b/src/Alethic.Seq.Operator/config/signals_seq_k8s_datalust_co.yaml
@@ -18,7 +18,6 @@ spec:
openAPIV3Schema:
properties:
status:
- nullable: false
properties:
id:
nullable: true
@@ -92,11 +91,9 @@ spec:
nullable: true
type: string
type: object
- nullable: false
type: array
type: object
spec:
- nullable: false
properties:
instanceRef:
nullable: true