Init add liveness probe
Signed-off-by: DavidSpek <vanderspek.david@gmail.com>
This commit is contained in:
		
							parent
							
								
									af084a5a65
								
							
						
					
					
						commit
						db96273ab3
					
				|  | @ -260,6 +260,139 @@ spec: | |||
|                     type: array | ||||
|                     items: | ||||
|                       type: string | ||||
|                   liveness_probe: | ||||
|                     description: Probe describes a health check to be performed against | ||||
|                       a container to determine whether it is alive or ready to receive | ||||
|                       traffic. | ||||
|                     properties: | ||||
|                       exec: | ||||
|                         description: One and only one of the following should be specified. | ||||
|                           Exec specifies the action to take. | ||||
|                         properties: | ||||
|                           command: | ||||
|                             description: Command is the command line to execute inside | ||||
|                               the container, the working directory for the command  is | ||||
|                               root ('/') in the container's filesystem. The command | ||||
|                               is simply exec'd, it is not run inside a shell, so traditional | ||||
|                               shell instructions ('|', etc) won't work. To use a shell, | ||||
|                               you need to explicitly call out to that shell. Exit | ||||
|                               status of 0 is treated as live/healthy and non-zero | ||||
|                               is unhealthy. | ||||
|                             items: | ||||
|                               type: string | ||||
|                             type: array | ||||
|                         type: object | ||||
|                       failureThreshold: | ||||
|                         description: Minimum consecutive failures for the probe to | ||||
|                           be considered failed after having succeeded. Defaults to | ||||
|                           3. Minimum value is 1. | ||||
|                         format: int32 | ||||
|                         type: integer | ||||
|                       httpGet: | ||||
|                         description: HTTPGet specifies the http request to perform. | ||||
|                         properties: | ||||
|                           host: | ||||
|                             description: Host name to connect to, defaults to the | ||||
|                               pod IP. You probably want to set "Host" in httpHeaders | ||||
|                               instead. | ||||
|                             type: string | ||||
|                           httpHeaders: | ||||
|                             description: Custom headers to set in the request. HTTP | ||||
|                               allows repeated headers. | ||||
|                             items: | ||||
|                               description: HTTPHeader describes a custom header to | ||||
|                                 be used in HTTP probes | ||||
|                               properties: | ||||
|                                 name: | ||||
|                                   description: The header field name | ||||
|                                   type: string | ||||
|                                 value: | ||||
|                                   description: The header field value | ||||
|                                   type: string | ||||
|                               required: | ||||
|                               - name | ||||
|                               - value | ||||
|                               type: object | ||||
|                             type: array | ||||
|                           path: | ||||
|                             description: Path to access on the HTTP server. | ||||
|                             type: string | ||||
|                           port: | ||||
|                             anyOf: | ||||
|                             - type: integer | ||||
|                             - type: string | ||||
|                             description: Name or number of the port to access on the | ||||
|                               container. Number must be in the range 1 to 65535. Name | ||||
|                               must be an IANA_SVC_NAME. | ||||
|                             x-kubernetes-int-or-string: true | ||||
|                           scheme: | ||||
|                             description: Scheme to use for connecting to the host. | ||||
|                               Defaults to HTTP. | ||||
|                             type: string | ||||
|                         required: | ||||
|                         - port | ||||
|                         type: object | ||||
|                       initialDelaySeconds: | ||||
|                         description: 'Number of seconds after the container has started | ||||
|                           before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' | ||||
|                         format: int32 | ||||
|                         type: integer | ||||
|                       periodSeconds: | ||||
|                         description: How often (in seconds) to perform the probe. | ||||
|                           Default to 10 seconds. Minimum value is 1. | ||||
|                         format: int32 | ||||
|                         type: integer | ||||
|                       successThreshold: | ||||
|                         description: Minimum consecutive successes for the probe to | ||||
|                           be considered successful after having failed. Defaults to | ||||
|                           1. Must be 1 for liveness and startup. Minimum value is | ||||
|                           1. | ||||
|                         format: int32 | ||||
|                         type: integer | ||||
|                       tcpSocket: | ||||
|                         description: 'TCPSocket specifies an action involving a TCP | ||||
|                           port. TCP hooks not yet supported TODO: implement a realistic | ||||
|                           TCP lifecycle hook' | ||||
|                         properties: | ||||
|                           host: | ||||
|                             description: 'Optional: Host name to connect to, defaults | ||||
|                               to the pod IP.' | ||||
|                             type: string | ||||
|                           port: | ||||
|                             anyOf: | ||||
|                             - type: integer | ||||
|                             - type: string | ||||
|                             description: Number or name of the port to access on the | ||||
|                               container. Number must be in the range 1 to 65535. Name | ||||
|                               must be an IANA_SVC_NAME. | ||||
|                             x-kubernetes-int-or-string: true | ||||
|                         required: | ||||
|                         - port | ||||
|                         type: object | ||||
|                       terminationGracePeriodSeconds: | ||||
|                         description: Optional duration in seconds the pod needs to | ||||
|                           terminate gracefully upon probe failure. The grace period | ||||
|                           is the duration in seconds after the processes running in | ||||
|                           the pod are sent a termination signal and the time when | ||||
|                           the processes are forcibly halted with a kill signal. Set | ||||
|                           this value longer than the expected cleanup time for your | ||||
|                           process. If this value is nil, the pod's terminationGracePeriodSeconds | ||||
|                           will be used. Otherwise, this value overrides the value | ||||
|                           provided by the pod spec. Value must be non-negative integer. | ||||
|                           The value zero indicates stop immediately via the kill signal | ||||
|                           (no opportunity to shut down). This is a beta field and | ||||
|                           requires enabling ProbeTerminationGracePeriod feature gate. | ||||
|                           Minimum value is 1. spec.terminationGracePeriodSeconds is | ||||
|                           used if unset. | ||||
|                         format: int64 | ||||
|                         type: integer | ||||
|                       timeoutSeconds: | ||||
|                         description: 'Number of seconds after which the probe times | ||||
|                           out. Defaults to 1 second. Minimum value is 1. More info: | ||||
|                           https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' | ||||
|                         format: int32 | ||||
|                         type: integer | ||||
|                     type: object | ||||
|                   master_pod_move_timeout: | ||||
|                     type: string | ||||
|                     default: "20m" | ||||
|  |  | |||
|  | @ -202,6 +202,140 @@ spec: | |||
|                 items: | ||||
|                   type: object | ||||
|                   x-kubernetes-preserve-unknown-fields: true | ||||
|               livenessProbe: | ||||
|                 description: 'Periodic probe of container liveness. Container | ||||
|                   will be restarted if the probe fails. Cannot be updated. More | ||||
|                   info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' | ||||
|                 properties: | ||||
|                   exec: | ||||
|                     description: One and only one of the following should be | ||||
|                       specified. Exec specifies the action to take. | ||||
|                     properties: | ||||
|                       command: | ||||
|                         description: Command is the command line to execute | ||||
|                           inside the container, the working directory for the | ||||
|                           command  is root ('/') in the container's filesystem. | ||||
|                           The command is simply exec'd, it is not run inside | ||||
|                           a shell, so traditional shell instructions ('|', etc) | ||||
|                           won't work. To use a shell, you need to explicitly | ||||
|                           call out to that shell. Exit status of 0 is treated | ||||
|                           as live/healthy and non-zero is unhealthy. | ||||
|                         items: | ||||
|                           type: string | ||||
|                         type: array | ||||
|                     type: object | ||||
|                   failureThreshold: | ||||
|                     description: Minimum consecutive failures for the probe | ||||
|                       to be considered failed after having succeeded. Defaults | ||||
|                       to 3. Minimum value is 1. | ||||
|                     format: int32 | ||||
|                     type: integer | ||||
|                   httpGet: | ||||
|                     description: HTTPGet specifies the http request to perform. | ||||
|                     properties: | ||||
|                       host: | ||||
|                         description: Host name to connect to, defaults to the | ||||
|                           pod IP. You probably want to set "Host" in httpHeaders | ||||
|                           instead. | ||||
|                         type: string | ||||
|                       httpHeaders: | ||||
|                         description: Custom headers to set in the request. HTTP | ||||
|                           allows repeated headers. | ||||
|                         items: | ||||
|                           description: HTTPHeader describes a custom header | ||||
|                             to be used in HTTP probes | ||||
|                           properties: | ||||
|                             name: | ||||
|                               description: The header field name | ||||
|                               type: string | ||||
|                             value: | ||||
|                               description: The header field value | ||||
|                               type: string | ||||
|                           required: | ||||
|                           - name | ||||
|                           - value | ||||
|                           type: object | ||||
|                         type: array | ||||
|                       path: | ||||
|                         description: Path to access on the HTTP server. | ||||
|                         type: string | ||||
|                       port: | ||||
|                         anyOf: | ||||
|                         - type: integer | ||||
|                         - type: string | ||||
|                         description: Name or number of the port to access on | ||||
|                           the container. Number must be in the range 1 to 65535. | ||||
|                           Name must be an IANA_SVC_NAME. | ||||
|                         x-kubernetes-int-or-string: true | ||||
|                       scheme: | ||||
|                         description: Scheme to use for connecting to the host. | ||||
|                           Defaults to HTTP. | ||||
|                         type: string | ||||
|                     required: | ||||
|                     - port | ||||
|                     type: object | ||||
|                   initialDelaySeconds: | ||||
|                     description: 'Number of seconds after the container has | ||||
|                       started before liveness probes are initiated. More info: | ||||
|                       https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' | ||||
|                     format: int32 | ||||
|                     type: integer | ||||
|                   periodSeconds: | ||||
|                     description: How often (in seconds) to perform the probe. | ||||
|                       Default to 10 seconds. Minimum value is 1. | ||||
|                     format: int32 | ||||
|                     type: integer | ||||
|                   successThreshold: | ||||
|                     description: Minimum consecutive successes for the probe | ||||
|                       to be considered successful after having failed. Defaults | ||||
|                       to 1. Must be 1 for liveness and startup. Minimum value | ||||
|                       is 1. | ||||
|                     format: int32 | ||||
|                     type: integer | ||||
|                   tcpSocket: | ||||
|                     description: 'TCPSocket specifies an action involving a | ||||
|                       TCP port. TCP hooks not yet supported TODO: implement | ||||
|                       a realistic TCP lifecycle hook' | ||||
|                     properties: | ||||
|                       host: | ||||
|                         description: 'Optional: Host name to connect to, defaults | ||||
|                           to the pod IP.' | ||||
|                         type: string | ||||
|                       port: | ||||
|                         anyOf: | ||||
|                         - type: integer | ||||
|                         - type: string | ||||
|                         description: Number or name of the port to access on | ||||
|                           the container. Number must be in the range 1 to 65535. | ||||
|                           Name must be an IANA_SVC_NAME. | ||||
|                         x-kubernetes-int-or-string: true | ||||
|                     required: | ||||
|                     - port | ||||
|                     type: object | ||||
|                   terminationGracePeriodSeconds: | ||||
|                     description: Optional duration in seconds the pod needs | ||||
|                       to terminate gracefully upon probe failure. The grace | ||||
|                       period is the duration in seconds after the processes | ||||
|                       running in the pod are sent a termination signal and the | ||||
|                       time when the processes are forcibly halted with a kill | ||||
|                       signal. Set this value longer than the expected cleanup | ||||
|                       time for your process. If this value is nil, the pod's | ||||
|                       terminationGracePeriodSeconds will be used. Otherwise, | ||||
|                       this value overrides the value provided by the pod spec. | ||||
|                       Value must be non-negative integer. The value zero indicates | ||||
|                       stop immediately via the kill signal (no opportunity to | ||||
|                       shut down). This is a beta field and requires enabling | ||||
|                       ProbeTerminationGracePeriod feature gate. Minimum value | ||||
|                       is 1. spec.terminationGracePeriodSeconds is used if unset. | ||||
|                     format: int64 | ||||
|                     type: integer | ||||
|                   timeoutSeconds: | ||||
|                     description: 'Number of seconds after which the probe times | ||||
|                       out. Defaults to 1 second. Minimum value is 1. More info: | ||||
|                       https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' | ||||
|                     format: int32 | ||||
|                     type: integer | ||||
|                 type: object | ||||
|               init_containers: | ||||
|                 type: array | ||||
|                 description: deprecated | ||||
|  |  | |||
|  | @ -205,6 +205,19 @@ configKubernetes: | |||
|   # whether the Spilo container should run with additional permissions other than parent. | ||||
|   # required by cron which needs setuid | ||||
|   spilo_allow_privilege_escalation: true | ||||
| 
 | ||||
|   # liveness probe for the spilo pod | ||||
|   # liveness_probe: | ||||
|   #   httpGet: | ||||
|   #     scheme: HTTP | ||||
|   #     path: /liveness | ||||
|   #     port: 8008 | ||||
|   #   initialDelaySeconds: 10 | ||||
|   #   periodSeconds: 10 | ||||
|   #   timeoutSeconds: 5 | ||||
|   #   successThreshold: 1 | ||||
|   #   failureThreshold: 3 | ||||
| 
 | ||||
|   # storage resize strategy, available options are: ebs, pvc, off or mixed | ||||
|   storage_resize_mode: pvc | ||||
|   # pod toleration assigned to instances of every Postgres cluster | ||||
|  |  | |||
|  | @ -85,6 +85,10 @@ These parameters are grouped directly under  the `spec` key in the manifest. | |||
|   requires a custom Spilo image. Note the FSGroup of a Pod cannot be changed | ||||
|   without recreating a new Pod. Optional. | ||||
| 
 | ||||
| * **livenessProbe** | ||||
|   Allows for adding a liveness probe to the Spilo container to detect if it's | ||||
|   running properly. | ||||
| 
 | ||||
| * **enableMasterLoadBalancer** | ||||
|   boolean flag to override the operator defaults (set by the | ||||
|   `enable_master_load_balancer` parameter) to define whether to enable the load | ||||
|  |  | |||
|  | @ -469,6 +469,10 @@ configuration they are grouped under the `kubernetes` key. | |||
|   process. Required by cron which needs setuid. Without this parameter, | ||||
|   certification rotation & backups will not be done. The default is `true`. | ||||
| 
 | ||||
| * **liveness_probe** | ||||
|   Allows for adding a liveness probe to the Spilo container to detect if it's | ||||
|   running properly. | ||||
| 
 | ||||
| * **additional_pod_capabilities** | ||||
|   list of additional capabilities to be added to the postgres container's | ||||
|   SecurityContext (e.g. SYS_NICE etc.). Please, make sure first that the | ||||
|  |  | |||
|  | @ -152,6 +152,16 @@ data: | |||
|   # spilo_runasgroup: 103 | ||||
|   # spilo_fsgroup: 103 | ||||
|   spilo_privileged: "false" | ||||
|   # liveness_probe: |- | ||||
|   #   httpGet: | ||||
|   #     scheme: HTTP | ||||
|   #     path: /liveness | ||||
|   #     port: 8008 | ||||
|   #   initialDelaySeconds: 10 | ||||
|   #   periodSeconds: 10 | ||||
|   #   timeoutSeconds: 5 | ||||
|   #   successThreshold: 1 | ||||
|   #   failureThreshold: 3 | ||||
|   storage_resize_mode: "pvc" | ||||
|   super_username: postgres | ||||
|   # target_major_version: "15" | ||||
|  |  | |||
|  | @ -258,6 +258,139 @@ spec: | |||
|                     type: array | ||||
|                     items: | ||||
|                       type: string | ||||
|                   liveness_probe: | ||||
|                     description: Probe describes a health check to be performed against | ||||
|                       a container to determine whether it is alive or ready to receive | ||||
|                       traffic. | ||||
|                     properties: | ||||
|                       exec: | ||||
|                         description: One and only one of the following should be specified. | ||||
|                           Exec specifies the action to take. | ||||
|                         properties: | ||||
|                           command: | ||||
|                             description: Command is the command line to execute inside | ||||
|                               the container, the working directory for the command  is | ||||
|                               root ('/') in the container's filesystem. The command | ||||
|                               is simply exec'd, it is not run inside a shell, so traditional | ||||
|                               shell instructions ('|', etc) won't work. To use a shell, | ||||
|                               you need to explicitly call out to that shell. Exit | ||||
|                               status of 0 is treated as live/healthy and non-zero | ||||
|                               is unhealthy. | ||||
|                             items: | ||||
|                               type: string | ||||
|                             type: array | ||||
|                         type: object | ||||
|                       failureThreshold: | ||||
|                         description: Minimum consecutive failures for the probe to | ||||
|                           be considered failed after having succeeded. Defaults to | ||||
|                           3. Minimum value is 1. | ||||
|                         format: int32 | ||||
|                         type: integer | ||||
|                       httpGet: | ||||
|                         description: HTTPGet specifies the http request to perform. | ||||
|                         properties: | ||||
|                           host: | ||||
|                             description: Host name to connect to, defaults to the | ||||
|                               pod IP. You probably want to set "Host" in httpHeaders | ||||
|                               instead. | ||||
|                             type: string | ||||
|                           httpHeaders: | ||||
|                             description: Custom headers to set in the request. HTTP | ||||
|                               allows repeated headers. | ||||
|                             items: | ||||
|                               description: HTTPHeader describes a custom header to | ||||
|                                 be used in HTTP probes | ||||
|                               properties: | ||||
|                                 name: | ||||
|                                   description: The header field name | ||||
|                                   type: string | ||||
|                                 value: | ||||
|                                   description: The header field value | ||||
|                                   type: string | ||||
|                               required: | ||||
|                               - name | ||||
|                               - value | ||||
|                               type: object | ||||
|                             type: array | ||||
|                           path: | ||||
|                             description: Path to access on the HTTP server. | ||||
|                             type: string | ||||
|                           port: | ||||
|                             anyOf: | ||||
|                             - type: integer | ||||
|                             - type: string | ||||
|                             description: Name or number of the port to access on the | ||||
|                               container. Number must be in the range 1 to 65535. Name | ||||
|                               must be an IANA_SVC_NAME. | ||||
|                             x-kubernetes-int-or-string: true | ||||
|                           scheme: | ||||
|                             description: Scheme to use for connecting to the host. | ||||
|                               Defaults to HTTP. | ||||
|                             type: string | ||||
|                         required: | ||||
|                         - port | ||||
|                         type: object | ||||
|                       initialDelaySeconds: | ||||
|                         description: 'Number of seconds after the container has started | ||||
|                           before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' | ||||
|                         format: int32 | ||||
|                         type: integer | ||||
|                       periodSeconds: | ||||
|                         description: How often (in seconds) to perform the probe. | ||||
|                           Default to 10 seconds. Minimum value is 1. | ||||
|                         format: int32 | ||||
|                         type: integer | ||||
|                       successThreshold: | ||||
|                         description: Minimum consecutive successes for the probe to | ||||
|                           be considered successful after having failed. Defaults to | ||||
|                           1. Must be 1 for liveness and startup. Minimum value is | ||||
|                           1. | ||||
|                         format: int32 | ||||
|                         type: integer | ||||
|                       tcpSocket: | ||||
|                         description: 'TCPSocket specifies an action involving a TCP | ||||
|                           port. TCP hooks not yet supported TODO: implement a realistic | ||||
|                           TCP lifecycle hook' | ||||
|                         properties: | ||||
|                           host: | ||||
|                             description: 'Optional: Host name to connect to, defaults | ||||
|                               to the pod IP.' | ||||
|                             type: string | ||||
|                           port: | ||||
|                             anyOf: | ||||
|                             - type: integer | ||||
|                             - type: string | ||||
|                             description: Number or name of the port to access on the | ||||
|                               container. Number must be in the range 1 to 65535. Name | ||||
|                               must be an IANA_SVC_NAME. | ||||
|                             x-kubernetes-int-or-string: true | ||||
|                         required: | ||||
|                         - port | ||||
|                         type: object | ||||
|                       terminationGracePeriodSeconds: | ||||
|                         description: Optional duration in seconds the pod needs to | ||||
|                           terminate gracefully upon probe failure. The grace period | ||||
|                           is the duration in seconds after the processes running in | ||||
|                           the pod are sent a termination signal and the time when | ||||
|                           the processes are forcibly halted with a kill signal. Set | ||||
|                           this value longer than the expected cleanup time for your | ||||
|                           process. If this value is nil, the pod's terminationGracePeriodSeconds | ||||
|                           will be used. Otherwise, this value overrides the value | ||||
|                           provided by the pod spec. Value must be non-negative integer. | ||||
|                           The value zero indicates stop immediately via the kill signal | ||||
|                           (no opportunity to shut down). This is a beta field and | ||||
|                           requires enabling ProbeTerminationGracePeriod feature gate. | ||||
|                           Minimum value is 1. spec.terminationGracePeriodSeconds is | ||||
|                           used if unset. | ||||
|                         format: int64 | ||||
|                         type: integer | ||||
|                       timeoutSeconds: | ||||
|                         description: 'Number of seconds after which the probe times | ||||
|                           out. Defaults to 1 second. Minimum value is 1. More info: | ||||
|                           https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' | ||||
|                         format: int32 | ||||
|                         type: integer | ||||
|                     type: object | ||||
|                   master_pod_move_timeout: | ||||
|                     type: string | ||||
|                     default: "20m" | ||||
|  |  | |||
|  | @ -78,6 +78,16 @@ configuration: | |||
|     # inherited_labels: | ||||
|     # - application | ||||
|     # - environment | ||||
|     # liveness_probe: | ||||
|     #   httpGet: | ||||
|     #     scheme: HTTP | ||||
|     #     path: /liveness | ||||
|     #     port: 8008 | ||||
|     #   initialDelaySeconds: 10 | ||||
|     #   periodSeconds: 10 | ||||
|     #   timeoutSeconds: 5 | ||||
|     #   successThreshold: 1 | ||||
|     #   failureThreshold: 3 | ||||
|     master_pod_move_timeout: 20m | ||||
|     # node_readiness_label: | ||||
|     #   status: ready | ||||
|  |  | |||
|  | @ -200,6 +200,140 @@ spec: | |||
|                 items: | ||||
|                   type: object | ||||
|                   x-kubernetes-preserve-unknown-fields: true | ||||
|               livenessProbe: | ||||
|                 description: 'Periodic probe of container liveness. Container | ||||
|                   will be restarted if the probe fails. Cannot be updated. More | ||||
|                   info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' | ||||
|                 properties: | ||||
|                   exec: | ||||
|                     description: One and only one of the following should be | ||||
|                       specified. Exec specifies the action to take. | ||||
|                     properties: | ||||
|                       command: | ||||
|                         description: Command is the command line to execute | ||||
|                           inside the container, the working directory for the | ||||
|                           command  is root ('/') in the container's filesystem. | ||||
|                           The command is simply exec'd, it is not run inside | ||||
|                           a shell, so traditional shell instructions ('|', etc) | ||||
|                           won't work. To use a shell, you need to explicitly | ||||
|                           call out to that shell. Exit status of 0 is treated | ||||
|                           as live/healthy and non-zero is unhealthy. | ||||
|                         items: | ||||
|                           type: string | ||||
|                         type: array | ||||
|                     type: object | ||||
|                   failureThreshold: | ||||
|                     description: Minimum consecutive failures for the probe | ||||
|                       to be considered failed after having succeeded. Defaults | ||||
|                       to 3. Minimum value is 1. | ||||
|                     format: int32 | ||||
|                     type: integer | ||||
|                   httpGet: | ||||
|                     description: HTTPGet specifies the http request to perform. | ||||
|                     properties: | ||||
|                       host: | ||||
|                         description: Host name to connect to, defaults to the | ||||
|                           pod IP. You probably want to set "Host" in httpHeaders | ||||
|                           instead. | ||||
|                         type: string | ||||
|                       httpHeaders: | ||||
|                         description: Custom headers to set in the request. HTTP | ||||
|                           allows repeated headers. | ||||
|                         items: | ||||
|                           description: HTTPHeader describes a custom header | ||||
|                             to be used in HTTP probes | ||||
|                           properties: | ||||
|                             name: | ||||
|                               description: The header field name | ||||
|                               type: string | ||||
|                             value: | ||||
|                               description: The header field value | ||||
|                               type: string | ||||
|                           required: | ||||
|                           - name | ||||
|                           - value | ||||
|                           type: object | ||||
|                         type: array | ||||
|                       path: | ||||
|                         description: Path to access on the HTTP server. | ||||
|                         type: string | ||||
|                       port: | ||||
|                         anyOf: | ||||
|                         - type: integer | ||||
|                         - type: string | ||||
|                         description: Name or number of the port to access on | ||||
|                           the container. Number must be in the range 1 to 65535. | ||||
|                           Name must be an IANA_SVC_NAME. | ||||
|                         x-kubernetes-int-or-string: true | ||||
|                       scheme: | ||||
|                         description: Scheme to use for connecting to the host. | ||||
|                           Defaults to HTTP. | ||||
|                         type: string | ||||
|                     required: | ||||
|                     - port | ||||
|                     type: object | ||||
|                   initialDelaySeconds: | ||||
|                     description: 'Number of seconds after the container has | ||||
|                       started before liveness probes are initiated. More info: | ||||
|                       https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' | ||||
|                     format: int32 | ||||
|                     type: integer | ||||
|                   periodSeconds: | ||||
|                     description: How often (in seconds) to perform the probe. | ||||
|                       Default to 10 seconds. Minimum value is 1. | ||||
|                     format: int32 | ||||
|                     type: integer | ||||
|                   successThreshold: | ||||
|                     description: Minimum consecutive successes for the probe | ||||
|                       to be considered successful after having failed. Defaults | ||||
|                       to 1. Must be 1 for liveness and startup. Minimum value | ||||
|                       is 1. | ||||
|                     format: int32 | ||||
|                     type: integer | ||||
|                   tcpSocket: | ||||
|                     description: 'TCPSocket specifies an action involving a | ||||
|                       TCP port. TCP hooks not yet supported TODO: implement | ||||
|                       a realistic TCP lifecycle hook' | ||||
|                     properties: | ||||
|                       host: | ||||
|                         description: 'Optional: Host name to connect to, defaults | ||||
|                           to the pod IP.' | ||||
|                         type: string | ||||
|                       port: | ||||
|                         anyOf: | ||||
|                         - type: integer | ||||
|                         - type: string | ||||
|                         description: Number or name of the port to access on | ||||
|                           the container. Number must be in the range 1 to 65535. | ||||
|                           Name must be an IANA_SVC_NAME. | ||||
|                         x-kubernetes-int-or-string: true | ||||
|                     required: | ||||
|                     - port | ||||
|                     type: object | ||||
|                   terminationGracePeriodSeconds: | ||||
|                     description: Optional duration in seconds the pod needs | ||||
|                       to terminate gracefully upon probe failure. The grace | ||||
|                       period is the duration in seconds after the processes | ||||
|                       running in the pod are sent a termination signal and the | ||||
|                       time when the processes are forcibly halted with a kill | ||||
|                       signal. Set this value longer than the expected cleanup | ||||
|                       time for your process. If this value is nil, the pod's | ||||
|                       terminationGracePeriodSeconds will be used. Otherwise, | ||||
|                       this value overrides the value provided by the pod spec. | ||||
|                       Value must be non-negative integer. The value zero indicates | ||||
|                       stop immediately via the kill signal (no opportunity to | ||||
|                       shut down). This is a beta field and requires enabling | ||||
|                       ProbeTerminationGracePeriod feature gate. Minimum value | ||||
|                       is 1. spec.terminationGracePeriodSeconds is used if unset. | ||||
|                     format: int64 | ||||
|                     type: integer | ||||
|                   timeoutSeconds: | ||||
|                     description: 'Number of seconds after which the probe times | ||||
|                       out. Defaults to 1 second. Minimum value is 1. More info: | ||||
|                       https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' | ||||
|                     format: int32 | ||||
|                     type: integer | ||||
|                 type: object | ||||
|               init_containers: | ||||
|                 type: array | ||||
|                 description: deprecated | ||||
|  |  | |||
|  | @ -102,6 +102,7 @@ type KubernetesMetaConfiguration struct { | |||
| 	PodManagementPolicy                      string              `json:"pod_management_policy,omitempty"` | ||||
| 	EnableReadinessProbe                     bool                `json:"enable_readiness_probe,omitempty"` | ||||
| 	EnableCrossNamespaceSecret               bool                `json:"enable_cross_namespace_secret,omitempty"` | ||||
| 	LivenessProbe                            *v1.Probe           `json:"liveness_probe,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // PostgresPodResourcesDefaults defines the spec of default resources
 | ||||
|  |  | |||
|  | @ -87,6 +87,7 @@ type PostgresSpec struct { | |||
| 	AdditionalVolumes         []AdditionalVolume `json:"additionalVolumes,omitempty"` | ||||
| 	Streams                   []Stream           `json:"streams,omitempty"` | ||||
| 	Env                       []v1.EnvVar        `json:"env,omitempty"` | ||||
| 	LivenessProbe             *v1.Probe          `json:"livenessProbe,omitempty"` | ||||
| 
 | ||||
| 	// deprecated json tags
 | ||||
| 	InitContainersOld       []v1.Container `json:"init_containers,omitempty"` | ||||
|  |  | |||
|  | @ -1207,6 +1207,19 @@ func generateSpiloReadinessProbe() *v1.Probe { | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| func generateSpiloLivenessProbe(probe, defaultProbe *v1.Probe) *v1.Probe { | ||||
| 
 | ||||
| 	if probe != nil { | ||||
| 		return probe | ||||
| 	} | ||||
| 
 | ||||
| 	if defaultProbe != nil { | ||||
| 		return defaultProbe | ||||
| 	} | ||||
| 
 | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| func (c *Cluster) generateStatefulSet(spec *acidv1.PostgresSpec) (*appsv1.StatefulSet, error) { | ||||
| 
 | ||||
| 	var ( | ||||
|  | @ -1326,6 +1339,8 @@ func (c *Cluster) generateStatefulSet(spec *acidv1.PostgresSpec) (*appsv1.Statef | |||
| 		spiloContainer.ReadinessProbe = generateSpiloReadinessProbe() | ||||
| 	} | ||||
| 
 | ||||
| 	spiloContainer.LivenessProbe = generateSpiloLivenessProbe(spec.LivenessProbe, c.OpConfig.LivenessProbe) | ||||
| 
 | ||||
| 	// generate container specs for sidecars specified in the cluster manifest
 | ||||
| 	clusterSpecificSidecars := []v1.Container{} | ||||
| 	if spec.Sidecars != nil && len(spec.Sidecars) > 0 { | ||||
|  |  | |||
|  | @ -125,6 +125,7 @@ func (c *Controller) importConfigurationFromCRD(fromCRD *acidv1.OperatorConfigur | |||
| 	result.PodAntiAffinityTopologyKey = util.Coalesce(fromCRD.Kubernetes.PodAntiAffinityTopologyKey, "kubernetes.io/hostname") | ||||
| 	result.PodAntiAffinityPreferredDuringScheduling = fromCRD.Kubernetes.PodAntiAffinityPreferredDuringScheduling | ||||
| 	result.PodToleration = fromCRD.Kubernetes.PodToleration | ||||
| 	result.LivenessProbe = fromCRD.Kubernetes.LivenessProbe | ||||
| 
 | ||||
| 	// Postgres Pod resources
 | ||||
| 	result.DefaultCPURequest = util.Coalesce(fromCRD.PostgresPodResources.DefaultCPURequest, "100m") | ||||
|  |  | |||
|  | @ -245,6 +245,7 @@ type Config struct { | |||
| 	TargetMajorVersion                       string            `name:"target_major_version" default:"15"` | ||||
| 	PatroniAPICheckInterval                  time.Duration     `name:"patroni_api_check_interval" default:"1s"` | ||||
| 	PatroniAPICheckTimeout                   time.Duration     `name:"patroni_api_check_timeout" default:"5s"` | ||||
| 	LivenessProbe                            *v1.Probe         `json:"liveness_probe,omitempty"` | ||||
| 	EnablePatroniFailsafeMode                *bool             `name:"enable_patroni_failsafe_mode" default:"false"` | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue