Skip to content

Commit

Permalink
This PR adds support for Topology Spread Constraints feature. Topolog…
Browse files Browse the repository at this point in the history
…y Spread constraints specification allows the pods to be spread across your cluster among multiple failure-domains. (#859)

Co-authored-by: Daniel Valdivia <18384552+dvaldivia@users.noreply.github.com>
Co-authored-by: Harshavardhana <harsha@minio.io>
  • Loading branch information
3 people committed Oct 15, 2021
1 parent a29a810 commit afbf880
Show file tree
Hide file tree
Showing 16 changed files with 895 additions and 41 deletions.
37 changes: 31 additions & 6 deletions docs/crd.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ ExposeServices (`exposeServices`) defines the exposure of the MinIO object stora
[id="{anchor_prefix}-github-com-minio-operator-pkg-apis-minio-min-io-v2-healthstatus"]
==== HealthStatus (string)


HealthStatus represents whether the tenant is healthy, with decreased service or offline

.Appears In:
****
Expand Down Expand Up @@ -208,6 +208,10 @@ KESConfig (`kes`) defines the configuration of the https://github.com/minio/kes[
|*Optional* +
Specify node affinity, pod affinity, and pod anti-affinity for the KES pods. +

|*`topologySpreadConstraints`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#topologyspreadconstraint-v1-core[$$TopologySpreadConstraint$$]__
|*Optional* +
Specify one or more https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/[Kubernetes Topology Spread Constraints] to apply to pods deployed in the MinIO pool.

|*`keyName`* __string__
|*Optional* +
If provided, use this as the name of the key that KES creates on the KMS backend
Expand All @@ -224,10 +228,6 @@ KESConfig (`kes`) defines the configuration of the https://github.com/minio/kes[
|===






[id="{anchor_prefix}-github-com-minio-operator-pkg-apis-minio-min-io-v2-localcertificatereference"]
==== LocalCertificateReference

Expand Down Expand Up @@ -290,6 +290,10 @@ LogConfig (`log`) defines the configuration of the MinIO Log Search API deployed
|*Optional* +
Specify one or more https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/[Kubernetes tolerations] to apply to MinIO Log Search API pods.

|*`topologySpreadConstraints`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#topologyspreadconstraint-v1-core[$$TopologySpreadConstraint$$]__
|*Optional* +
Specify one or more https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/[Kubernetes Topology Spread Constraints] to apply to pods deployed in the MinIO pool.

|*`annotations`* __object (keys:string, values:string)__
|*Optional* +
If provided, use these annotations for Log Search Object Meta annotations
Expand Down Expand Up @@ -367,6 +371,10 @@ LogDbConfig (`db`) defines the configuration of the PostgreSQL StatefulSet deplo
|*Optional* +
Specify one or more https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/[Kubernetes tolerations] to apply to the PostgreSQL pods.

|*`topologySpreadConstraints`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#topologyspreadconstraint-v1-core[$$TopologySpreadConstraint$$]__
|*Optional* +
Specify one or more https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/[Kubernetes Topology Spread Constraints] to apply to pods deployed in the MinIO pool.

|*`annotations`* __object (keys:string, values:string)__
|*Optional* +
If provided, use these annotations for PostgreSQL Object Meta annotations
Expand Down Expand Up @@ -468,6 +476,10 @@ Pool (`pools`) defines a MinIO server pool on a Tenant. Each pool consists of a
|*Optional* +
Specify one or more https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/[Kubernetes tolerations] to apply to pods deployed in the MinIO pool.

|*`topologySpreadConstraints`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#topologyspreadconstraint-v1-core[$$TopologySpreadConstraint$$] array__
|*Optional* +
Specify one or more https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/[Kubernetes Topology Spread Constraints] to apply to pods deployed in the MinIO pool.

|*`securityContext`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#podsecuritycontext-v1-core[$$PodSecurityContext$$]__
|*Optional* +
Specify the https://kubernetes.io/docs/tasks/configure-pod-container/security-context/[Security Context] of pods in the pool. The Operator supports only the following pod security fields: +
Expand All @@ -478,13 +490,22 @@ Pool (`pools`) defines a MinIO server pool on a Tenant. Each pool consists of a
* `runAsUser` +
* `seLinuxOptions` +

|*`annotations`* __object (keys:string, values:string)__
|*Optional* +
Specify custom labels and annotations to append to the Pool. *Optional* +
If provided, use these annotations for the Pool Objects Meta annotations (Statefulset and Pod template)

|*`labels`* __object (keys:string, values:string)__
|*Optional* +
If provided, use these labels for the Pool Objects Meta annotations (Statefulset and Pod template)

|===


[id="{anchor_prefix}-github-com-minio-operator-pkg-apis-minio-min-io-v2-poolstate"]
==== PoolState (string)


PoolState represents the state of a pool

.Appears In:
****
Expand Down Expand Up @@ -575,6 +596,10 @@ PrometheusConfig (`prometheus`) defines the configuration of a Prometheus instan
|*Optional* +
Specify node affinity, pod affinity, and pod anti-affinity for the Prometheus pods. +

|*`topologySpreadConstraints`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#topologyspreadconstraint-v1-core[$$TopologySpreadConstraint$$]__
|*Optional* +
Specify one or more https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/[Kubernetes Topology Spread Constraints] to apply to pods deployed in the MinIO pool.

|*`resources`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#resourcerequirements-v1-core[$$ResourceRequirements$$]__
|*Optional* +
Object specification for specifying CPU and memory https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/[resource allocations] or limits of the Prometheus pod. +
Expand Down

0 comments on commit afbf880

Please sign in to comment.