SGDistributedLogs


Kind: SGDistributedLogs

listKind: SGDistributedLogsList

plural: sgdistributedlogs

singular: sgdistributedlogs

shortNames sgdil


The SGDistributedLogs custom resource represents a distributed logs cluster. When a Postgres cluster is configured to use distributed logs, all logs from different sources will be forwarded to the distributed logs cluster. Under the hood, distributed log cluster use an SGCluster. Therefore, the distributed log cluster can be queried using SQL as well, for example using postgres-util.

Example:

apiVersion: stackgres.io/v1
kind: SGDistributedLogs
metadata:
  name: distributedlogs
spec:
  persistentVolume:
    size: 10Gi

See also Distribtued Logs section.

Property
Required
Updatable
May Require Restart
Type
Description

Workaround for hugo bug not rendering first table row

apiVersion string stackgres.io/v1
kind string SGDistributedLogs
metadata object Refer to the Kubernetes API documentation for the fields of the metadata field.
spec object
status object

SGDistributedLogs.spec

↩ Parent

Property
Required
Updatable
May Require Restart
Type
Description

Workaround for hugo bug not rendering first table row

persistentVolume object Pod’s persistent volume configuration
configurations object Cluster custom configurations.
metadata object Metadata information from cluster created resources.
nonProductionOptions object
postgresServices object Kubernetes services created or managed by StackGres.


profile string The profile allow to change in a convenient place a set of configuration defaults that affect how the cluster is generated.

All those defaults can be overwritten by setting the correspoinding fields.

Available profiles are:

  • production:

    Prevents two Pods from running in the same Node (set .spec.nonProductionOptions.disableClusterPodAntiAffinity to false by default). Sets both limits and requests using SGInstanceProfile for patroni container that runs both Patroni and Postgres (set .spec.nonProductionOptions.disablePatroniResourceRequirements to false by default). Sets requests using the referenced SGInstanceProfile for sidecar containers other than patroni (set .spec.nonProductionOptions.disableClusterResourceRequirements to false by default).

  • testing:

    Allows two Pods to running in the same Node (set .spec.nonProductionOptions.disableClusterPodAntiAffinity to true by default). Sets both limits and requests using SGInstanceProfile for patroni container that runs both Patroni and Postgres (set .spec.nonProductionOptions.disablePatroniResourceRequirements to false by default). Sets requests using the referenced SGInstanceProfile for sidecar containers other than patroni (set .spec.nonProductionOptions.disableClusterResourceRequirements to false by default).

  • development:

    Allows two Pods from running in the same Node (set .spec.nonProductionOptions.disableClusterPodAntiAffinity to true by default). Unset both limits and requests for patroni container that runs both Patroni and Postgres (set .spec.nonProductionOptions.disablePatroniResourceRequirements to true by default). Unsets requests for sidecar containers other than patroni (set .spec.nonProductionOptions.disableClusterResourceRequirements to true by default).

Changing this field may require a restart.

Default: production

resources object Pod custom resources configuration.
scheduling object Pod custom scheduling and affinity configuration.

Changing this field may require a restart.

sgInstanceProfile string Name of the SGInstanceProfile. A SGInstanceProfile defines CPU and memory limits. Must exist before creating a distributed logs. When no profile is set, a default (currently: 1 core, 2 GiB RAM) one is used.

Changing this field may require a restart.

toInstallPostgresExtensions []object The list of Postgres extensions to install.

This section is filled by the operator.

SGDistributedLogs.spec.persistentVolume

↩ Parent

Pod’s persistent volume configuration

Property
Required
Updatable
May Require Restart
Type
Description

Workaround for hugo bug not rendering first table row

size string Size of the PersistentVolume set for the pod of the cluster for distributed logs. This size is specified either in Mebibytes, Gibibytes or Tebibytes (multiples of 2^20, 2^30 or 2^40, respectively).
storageClass string Name of an existing StorageClass in the Kubernetes cluster, used to create the PersistentVolumes for the instances of the cluster.

SGDistributedLogs.spec.configurations

↩ Parent

Cluster custom configurations.

Property
Required
Updatable
May Require Restart
Type
Description

Workaround for hugo bug not rendering first table row

sgPostgresConfig string Name of the SGPostgresConfig used for the distributed logs. It must exist. When not set, a default Postgres config, for the major version selected, is used.

Changing this field may require a restart.

SGDistributedLogs.spec.metadata

↩ Parent

Metadata information from cluster created resources.

Property
Required
Updatable
May Require Restart
Type
Description

Workaround for hugo bug not rendering first table row

annotations object Custom Kubernetes annotations to be passed to resources created and managed by StackGres.

SGDistributedLogs.spec.metadata.annotations

↩ Parent

Custom Kubernetes annotations to be passed to resources created and managed by StackGres.

Property
Required
Updatable
May Require Restart
Type
Description

Workaround for hugo bug not rendering first table row

allResources map[string]string Annotations to attach to any resource created or managed by StackGres.
pods map[string]string Annotations to attach to pods created or managed by StackGres.
services map[string]string Annotations to attach to services created or managed by StackGres.

SGDistributedLogs.spec.nonProductionOptions

↩ Parent

Property
Required
Updatable
May Require Restart
Type
Description

Workaround for hugo bug not rendering first table row

disableClusterPodAntiAffinity boolean It is a best practice, on non-containerized environments, when running production workloads, to run each database server on a different server (virtual or physical), i.e., not to co-locate more than one database server per host.

The same best practice applies to databases on containers. By default, StackGres will not allow to run more than one StackGres or Distributed Logs pod on a given Kubernetes node. If set to true it will allow more than one StackGres pod per node.

Changing this field may require a restart.

disableClusterResourceRequirements boolean It is a best practice, on containerized environments, when running production workloads, to enforce container’s resources requirements.

By default, StackGres will configure resource requirements for all the containers. Set this property to true to prevent StackGres from setting container’s resources requirements (except for patroni container, see disablePatroniResourceRequirements).

Changing this field may require a restart.

disablePatroniResourceRequirements boolean It is a best practice, on containerized environments, when running production workloads, to enforce container’s resources requirements.

The same best practice applies to databases on containers. By default, StackGres will configure resource requirements for patroni container. Set this property to true to prevent StackGres from setting patroni container’s resources requirement.

Changing this field may require a restart.

enableSetClusterCpuRequests boolean Deprecated this value is ignored and you can consider it as always true.

On containerized environments, when running production workloads, enforcing container’s cpu requirements request to be equals to the limit allow to achieve the highest level of performance. Doing so, reduces the chances of leaving the workload with less cpu than it requires. It also allow to set static CPU management policy that allows to guarantee a pod the usage exclusive CPUs on the node.

By default, StackGres will configure cpu requirements to have the same limit and request for all the containers. Set this property to true to prevent StackGres from setting container’s cpu requirements request equals to the limit (except for patroni container, see enablePatroniCpuRequests) when .spec.requests.containers.<container name>.cpu .spec.requests.initContainers.<container name>.cpu is configured in the referenced SGInstanceProfile.

Changing this field may require a restart.

enableSetClusterMemoryRequests boolean Deprecated this value is ignored and you can consider it as always true.

On containerized environments, when running production workloads, enforcing container’s memory requirements request to be equals to the limit allow to achieve the highest level of performance. Doing so, reduces the chances of leaving the workload with less memory than it requires.

By default, StackGres will configure memory requirements to have the same limit and request for all the containers. Set this property to true to prevent StackGres from setting container’s memory requirements request equals to the limit (except for patroni container, see enablePatroniCpuRequests) when .spec.requests.containers.<container name>.memory .spec.requests.initContainers.<container name>.memory is configured in the referenced SGInstanceProfile.

Changing this field may require a restart.

enableSetPatroniCpuRequests boolean Deprecated this value is ignored and you can consider it as always true.

On containerized environments, when running production workloads, enforcing container’s cpu requirements request to be equals to the limit allow to achieve the highest level of performance. Doing so, reduces the chances of leaving the workload with less cpu than it requires. It also allow to set static CPU management policy that allows to guarantee a pod the usage exclusive CPUs on the node.

By default, StackGres will configure cpu requirements to have the same limit and request for the patroni container. Set this property to true to prevent StackGres from setting patroni container’s cpu requirements request equals to the limit when .spec.requests.cpu is configured in the referenced SGInstanceProfile.

Changing this field may require a restart.

enableSetPatroniMemoryRequests boolean Deprecated this value is ignored and you can consider it as always true.

On containerized environments, when running production workloads, enforcing container’s memory requirements request to be equals to the limit allow to achieve the highest level of performance. Doing so, reduces the chances of leaving the workload with less memory than it requires.

By default, StackGres will configure memory requirements to have the same limit and request for the patroni container. Set this property to true to prevent StackGres from setting patroni container’s memory requirements request equals to the limit when .spec.requests.memory is configured in the referenced SGInstanceProfile.

Changing this field may require a restart.

SGDistributedLogs.spec.postgresServices

↩ Parent

Kubernetes services created or managed by StackGres.

Example:

apiVersion: stackgres.io/v1
kind: SGDistributedLogs
metadata:
  name: stackgres
spec:
  postgresServices:
    primary:
      type: ClusterIP
    replicas:
      enabled: true
      type: ClusterIP

Property
Required
Updatable
May Require Restart
Type
Description

Workaround for hugo bug not rendering first table row

primary object Configuration for the -primary service. It provides a stable connection (regardless of primary failures or switchovers) to the read-write Postgres server of the cluster.
replicas object Configuration for the -replicas service. It provides a stable connection (regardless of replica node failures) to any read-only Postgres server of the cluster. Read-only servers are load-balanced via this service.

SGDistributedLogs.spec.postgresServices.primary

↩ Parent

Configuration for the -primary service. It provides a stable connection (regardless of primary failures or switchovers) to the read-write Postgres server of the cluster.

Property
Required
Updatable
May Require Restart
Type
Description

Workaround for hugo bug not rendering first table row

annotations map[string]string Custom Kubernetes annotations passed to the -primary service.


loadBalancerIP string Specify loadBalancer IP of Postgres primary service for Distributed Log
type enum Specifies the type of Kubernetes service(`ClusterIP`, `LoadBalancer`, `NodePort`)

Enum: ClusterIP, LoadBalancer, NodePort

SGDistributedLogs.spec.postgresServices.replicas

↩ Parent

Configuration for the -replicas service. It provides a stable connection (regardless of replica node failures) to any read-only Postgres server of the cluster. Read-only servers are load-balanced via this service.

Property
Required
Updatable
May Require Restart
Type
Description

Workaround for hugo bug not rendering first table row

annotations map[string]string Custom Kubernetes annotations passed to the -replicas service.
enabled boolean Specify if the -replicas service should be created or not.
loadBalancerIP string Specify loadBalancer IP of Postgres replica service for Distributed Log
type enum Specifies the type of Kubernetes service(ClusterIP, LoadBalancer, NodePort).

Enum: ClusterIP, LoadBalancer, NodePort

SGDistributedLogs.spec.resources

↩ Parent

Pod custom resources configuration.

Property
Required
Updatable
May Require Restart
Type
Description

Workaround for hugo bug not rendering first table row

disableResourcesRequestsSplitFromTotal boolean When set to true the resources requests values in fields SGInstanceProfile.spec.requests.cpu and SGInstanceProfile.spec.requests.memory will represent the resources requests of the patroni container and the total resources requests calculated by adding the resources requests of all the containers (including the patroni container).

Changing this field may require a restart.

enableClusterLimitsRequirements boolean When set to true resources limits for containers other than the patroni container wil be set just like for patroni contianer as specified in the SGInstanceProfile.

Changing this field may require a restart.

SGDistributedLogs.spec.scheduling

↩ Parent

Pod custom scheduling and affinity configuration.

Changing this field may require a restart.

Property
Required
Updatable
May Require Restart
Type
Description

Workaround for hugo bug not rendering first table row

nodeAffinity object Node affinity is a group of node affinity scheduling rules.

See: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#nodeaffinity-v1-core

nodeSelector map[string]string 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. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
podAffinity object Pod affinity is a group of inter pod affinity scheduling rules.

See: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#podaffinity-v1-core

podAntiAffinity object Pod anti affinity is a group of inter pod anti affinity scheduling rules.

See: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#podantiaffinity-v1-core

priorityClassName string Priority indicates the importance of a Pod relative to other Pods. If a Pod cannot be scheduled, the scheduler tries to preempt (evict) lower priority Pods to make scheduling of the pending Pod possible.
tolerations []object If specified, the pod’s tolerations.

See: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#toleration-v1-core

SGDistributedLogs.spec.toInstallPostgresExtensions[index]

↩ Parent

Property
Required
Updatable
May Require Restart
Type
Description

Workaround for hugo bug not rendering first table row

name string The name of the extension to install.
postgresVersion string The postgres major version of the extension to install.
publisher string The id of the publisher of the extension to install.
repository string The repository base URL from where the extension will be installed from.
version string The version of the extension to install.
build string The build version of the extension to install.
extraMounts []string The extra mounts of the extension to install.

SGDistributedLogs.status

↩ Parent

Property
Required
Updatable
May Require Restart
Type
Description

Workaround for hugo bug not rendering first table row

arch string The architecture on which the cluster has been initialized.
conditions []object
connectedClusters []object The list of connected sgclusters
databases []object The list of database status
fluentdConfigHash string The hash of the configuration file that is used by fluentd
labelPrefix string The custom prefix that is prepended to all labels.
os string The operative system on which the cluster has been initialized.
podStatuses []object The list of pod statuses.

SGDistributedLogs.status.conditions[index]

↩ Parent

Property
Required
Updatable
May Require Restart
Type
Description

Workaround for hugo bug not rendering first table row

lastTransitionTime string Last time the condition transitioned from one status to another.
message string A human readable message indicating details about the transition.
reason string The reason for the condition’s last transition.
status string Status of the condition, one of True, False, Unknown.
type string Type of deployment condition.

SGDistributedLogs.status.connectedClusters[index]

↩ Parent

A connected sgcluster

Property
Required
Updatable
May Require Restart
Type
Description

Workaround for hugo bug not rendering first table row

config object The configuration for sgdistributedlgos of this sgcluster
name string The sgcluster name
namespace string The sgcluster namespace

SGDistributedLogs.status.connectedClusters[index].config

↩ Parent

The configuration for sgdistributedlgos of this sgcluster

Property
Required
Updatable
May Require Restart
Type
Description

Workaround for hugo bug not rendering first table row

retention string The retention window that has been applied to tables
sgDistributedLogs string The sgdistributedlogs to which this sgcluster is connected to

SGDistributedLogs.status.databases[index]

↩ Parent

A database status

Property
Required
Updatable
May Require Restart
Type
Description

Workaround for hugo bug not rendering first table row

name string The database name that has been created
retention string The retention window that has been applied to tables

SGDistributedLogs.status.podStatuses[index]

↩ Parent

Property
Required
Updatable
May Require Restart
Type
Description

Workaround for hugo bug not rendering first table row

name string The name of the pod.
installedPostgresExtensions []object The list of extensions currently installed.
pendingRestart boolean Indicates if the pod requires restart
primary boolean Indicates if the pod is the elected primary

SGDistributedLogs.status.podStatuses[index].installedPostgresExtensions[index]

↩ Parent

Property
Required
Updatable
May Require Restart
Type
Description

Workaround for hugo bug not rendering first table row

name string The name of the installed extension.
postgresVersion string The postgres major version of the installed extension.
publisher string The id of the publisher of the installed extension.
repository string The repository base URL from where the extension was installed.
version string The version of the installed extension.
build string The build version of the installed extension.