diff --git a/API.md b/API.md
index 0cc964b..7fc09e6 100644
--- a/API.md
+++ b/API.md
@@ -158,8 +158,18 @@ const ploneBaseOptions: PloneBaseOptions = { ... }
| imagePullPolicy
| string
| *No description.* |
| limitCpu
| string
| *No description.* |
| limitMemory
| string
| *No description.* |
+| livenessFailureThreshold
| number
| *No description.* |
+| livenessIimeoutSeconds
| number
| *No description.* |
+| livenessInitialDelaySeconds
| number
| *No description.* |
+| livenessPeriodSeconds
| number
| *No description.* |
+| livenessSuccessThreshold
| number
| *No description.* |
| maxUnavailable
| string \| number
| *No description.* |
| minAvailable
| string \| number
| *No description.* |
+| readinessFailureThreshold
| number
| *No description.* |
+| readinessIimeoutSeconds
| number
| *No description.* |
+| readinessInitialDelaySeconds
| number
| *No description.* |
+| readinessPeriodSeconds
| number
| *No description.* |
+| readinessSuccessThreshold
| number
| *No description.* |
| replicas
| number
| *No description.* |
| requestCpu
| string
| *No description.* |
| requestMemory
| string
| *No description.* |
@@ -216,6 +226,56 @@ public readonly limitMemory: string;
---
+##### `livenessFailureThreshold`Optional
+
+```typescript
+public readonly livenessFailureThreshold: number;
+```
+
+- *Type:* number
+
+---
+
+##### `livenessIimeoutSeconds`Optional
+
+```typescript
+public readonly livenessIimeoutSeconds: number;
+```
+
+- *Type:* number
+
+---
+
+##### `livenessInitialDelaySeconds`Optional
+
+```typescript
+public readonly livenessInitialDelaySeconds: number;
+```
+
+- *Type:* number
+
+---
+
+##### `livenessPeriodSeconds`Optional
+
+```typescript
+public readonly livenessPeriodSeconds: number;
+```
+
+- *Type:* number
+
+---
+
+##### `livenessSuccessThreshold`Optional
+
+```typescript
+public readonly livenessSuccessThreshold: number;
+```
+
+- *Type:* number
+
+---
+
##### `maxUnavailable`Optional
```typescript
@@ -236,6 +296,56 @@ public readonly minAvailable: string | number;
---
+##### `readinessFailureThreshold`Optional
+
+```typescript
+public readonly readinessFailureThreshold: number;
+```
+
+- *Type:* number
+
+---
+
+##### `readinessIimeoutSeconds`Optional
+
+```typescript
+public readonly readinessIimeoutSeconds: number;
+```
+
+- *Type:* number
+
+---
+
+##### `readinessInitialDelaySeconds`Optional
+
+```typescript
+public readonly readinessInitialDelaySeconds: number;
+```
+
+- *Type:* number
+
+---
+
+##### `readinessPeriodSeconds`Optional
+
+```typescript
+public readonly readinessPeriodSeconds: number;
+```
+
+- *Type:* number
+
+---
+
+##### `readinessSuccessThreshold`Optional
+
+```typescript
+public readonly readinessSuccessThreshold: number;
+```
+
+- *Type:* number
+
+---
+
##### `replicas`Optional
```typescript
diff --git a/src/plone.ts b/src/plone.ts
index 4917788..e990a44 100644
--- a/src/plone.ts
+++ b/src/plone.ts
@@ -3,19 +3,35 @@ import * as kplus from 'cdk8s-plus-24';
import { Construct } from 'constructs';
import { PloneDeployment } from './deployment';
import { Probe, IntOrString } from './imports/k8s';
+import * as k8s from './imports/k8s';
import { PloneService } from './service';
export interface PloneBaseOptions {
+ // image
readonly image?: string;
readonly imagePullPolicy?: string;
+ // replicas
readonly replicas?: number;
readonly maxUnavailable?: number | string;
readonly minAvailable?: number | string;
+ // resources
readonly limitCpu?: string;
readonly limitMemory?: string;
readonly requestCpu?: string;
readonly requestMemory?: string;
readonly environment?: kplus.Env;
+ // readiness Probe
+ readonly readinessInitialDelaySeconds?: number;
+ readonly readinessIimeoutSeconds?: number;
+ readonly readinessPeriodSeconds?: number;
+ readonly readinessSuccessThreshold?: number;
+ readonly readinessFailureThreshold?: number;
+ // liveness Probe
+ readonly livenessInitialDelaySeconds?: number;
+ readonly livenessIimeoutSeconds?: number;
+ readonly livenessPeriodSeconds?: number;
+ readonly livenessSuccessThreshold?: number;
+ readonly livenessFailureThreshold?: number;
}
export interface PloneOptions {
readonly version?: string;
@@ -23,6 +39,7 @@ export interface PloneOptions {
readonly backend?: PloneBaseOptions;
readonly frontend?: PloneBaseOptions;
readonly imagePullSecrets?: string[];
+
}
export class Plone extends Construct {
@@ -40,35 +57,33 @@ export class Plone extends Construct {
// ------------------------------------------------------------------------
// Backend
const backend = options.backend ?? {};
- const backendPort = 8080;
const backendLabels = {
'app.kubernetes.io/name': 'plone-backend',
'app.kubernetes.io/component': 'backend',
'app.kubernetes.io/version': options.version ?? 'undefined',
};
+ const backendPort = 8080;
// Probing
+ const backendActionHttpGet: k8s.HttpGetAction = {
+ path: '/',
+ port: IntOrString.fromNumber(backendPort),
+ };
+
const backendLivenessProbe: Probe = {
- httpGet: {
- path: '/',
- port: IntOrString.fromNumber(backendPort),
- },
- initialDelaySeconds: 30,
- timeoutSeconds: 1,
- periodSeconds: 10,
- successThreshold: 1,
- failureThreshold: 3,
+ httpGet: backendActionHttpGet,
+ initialDelaySeconds: backend.livenessInitialDelaySeconds ?? 30,
+ timeoutSeconds: backend.livenessIimeoutSeconds ?? 5,
+ periodSeconds: backend.livenessPeriodSeconds ?? 10,
+ successThreshold: backend.livenessSuccessThreshold ?? 1,
+ failureThreshold: backend.livenessFailureThreshold ?? 3,
};
const backendReadinessProbe: Probe = {
- httpGet: {
- path: '/',
- port: IntOrString.fromNumber(backendPort),
- },
- initialDelaySeconds: 10,
- timeoutSeconds: 15,
- periodSeconds: 10,
- successThreshold: 1,
- failureThreshold: 3,
+ initialDelaySeconds: backend.readinessInitialDelaySeconds ?? 10,
+ timeoutSeconds: backend.readinessIimeoutSeconds ?? 15,
+ periodSeconds: backend.readinessPeriodSeconds ?? 10,
+ successThreshold: backend.readinessSuccessThreshold ?? 1,
+ failureThreshold: backend.readinessFailureThreshold ?? 3,
};
// Deployment
@@ -116,27 +131,25 @@ export class Plone extends Construct {
};
// Probing
+ const frontendActionHttpGet: k8s.HttpGetAction = {
+ path: '/',
+ port: IntOrString.fromNumber(frontendPort),
+ };
const frontendLivenessProbe: Probe = {
- httpGet: {
- path: '/',
- port: IntOrString.fromNumber(frontendPort),
- },
- initialDelaySeconds: 30,
- timeoutSeconds: 1,
- periodSeconds: 10,
- successThreshold: 1,
- failureThreshold: 3,
+ httpGet: frontendActionHttpGet,
+ initialDelaySeconds: frontend.livenessInitialDelaySeconds ?? 30,
+ timeoutSeconds: frontend.livenessIimeoutSeconds ?? 5,
+ periodSeconds: frontend.livenessPeriodSeconds ?? 10,
+ successThreshold: frontend.livenessSuccessThreshold ?? 1,
+ failureThreshold: frontend.livenessFailureThreshold ?? 3,
};
const frontendReadinessProbe: Probe = {
- httpGet: {
- path: '/',
- port: IntOrString.fromNumber(frontendPort),
- },
- initialDelaySeconds: 10,
- timeoutSeconds: 15,
- periodSeconds: 10,
- successThreshold: 1,
- failureThreshold: 3,
+ httpGet: frontendActionHttpGet,
+ initialDelaySeconds: frontend.readinessInitialDelaySeconds ?? 10,
+ timeoutSeconds: frontend.readinessIimeoutSeconds ?? 15,
+ periodSeconds: frontend.readinessPeriodSeconds ?? 10,
+ successThreshold: frontend.readinessSuccessThreshold ?? 1,
+ failureThreshold: frontend.readinessFailureThreshold ?? 3,
};
// Environment for RAZZLE
diff --git a/test/__snapshots__/plone.test.ts.snap b/test/__snapshots__/plone.test.ts.snap
index 9c0a1f9..1c6c106 100644
--- a/test/__snapshots__/plone.test.ts.snap
+++ b/test/__snapshots__/plone.test.ts.snap
@@ -46,15 +46,11 @@ exports[`defaults 1`] = `
"initialDelaySeconds": 30,
"periodSeconds": 10,
"successThreshold": 1,
- "timeoutSeconds": 1,
+ "timeoutSeconds": 5,
},
"name": "backend-container",
"readinessProbe": {
"failureThreshold": 3,
- "httpGet": {
- "path": "/",
- "port": 8080,
- },
"initialDelaySeconds": 10,
"periodSeconds": 10,
"successThreshold": 1,
@@ -170,7 +166,7 @@ exports[`defaults 1`] = `
"initialDelaySeconds": 30,
"periodSeconds": 10,
"successThreshold": 1,
- "timeoutSeconds": 1,
+ "timeoutSeconds": 5,
},
"name": "frontend-container",
"readinessProbe": {
@@ -294,15 +290,11 @@ exports[`defaults-with-pdps 1`] = `
"initialDelaySeconds": 30,
"periodSeconds": 10,
"successThreshold": 1,
- "timeoutSeconds": 1,
+ "timeoutSeconds": 5,
},
"name": "backend-container",
"readinessProbe": {
"failureThreshold": 3,
- "httpGet": {
- "path": "/",
- "port": 8080,
- },
"initialDelaySeconds": 10,
"periodSeconds": 10,
"successThreshold": 1,
@@ -418,7 +410,7 @@ exports[`defaults-with-pdps 1`] = `
"initialDelaySeconds": 30,
"periodSeconds": 10,
"successThreshold": 1,
- "timeoutSeconds": 1,
+ "timeoutSeconds": 5,
},
"name": "frontend-container",
"readinessProbe": {