@r8s/recipes 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app.d.ts +1 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +4 -8
- package/dist/app.js.map +1 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +54 -94
- package/dist/auth.js.map +1 -1
- package/dist/backup.d.ts +18 -2
- package/dist/backup.d.ts.map +1 -1
- package/dist/backup.js +54 -6
- package/dist/backup.js.map +1 -1
- package/dist/cert-provider.d.ts.map +1 -1
- package/dist/cert-provider.js +2 -5
- package/dist/cert-provider.js.map +1 -1
- package/dist/database.d.ts +55 -13
- package/dist/database.d.ts.map +1 -1
- package/dist/database.js +135 -58
- package/dist/database.js.map +1 -1
- package/dist/dns-provider.d.ts.map +1 -1
- package/dist/dns-provider.js +2 -5
- package/dist/dns-provider.js.map +1 -1
- package/dist/endpoint.d.ts +1 -1
- package/dist/endpoint.d.ts.map +1 -1
- package/dist/endpoint.js +31 -23
- package/dist/endpoint.js.map +1 -1
- package/dist/errors.d.ts +16 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +19 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -5
- package/dist/index.js.map +1 -1
- package/dist/monitoring.d.ts.map +1 -1
- package/dist/monitoring.js +6 -13
- package/dist/monitoring.js.map +1 -1
- package/dist/platform.d.ts +3 -2
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +3 -2
- package/dist/platform.js.map +1 -1
- package/dist/r8s-cluster.d.ts +1 -1
- package/dist/r8s-cluster.d.ts.map +1 -1
- package/dist/r8s-cluster.js +25 -16
- package/dist/r8s-cluster.js.map +1 -1
- package/dist/s3-provider.d.ts +151 -0
- package/dist/s3-provider.d.ts.map +1 -0
- package/dist/s3-provider.js +126 -0
- package/dist/s3-provider.js.map +1 -0
- package/dist/secret-provider.d.ts +16 -7
- package/dist/secret-provider.d.ts.map +1 -1
- package/dist/secret-provider.js +80 -9
- package/dist/secret-provider.js.map +1 -1
- package/dist/static-secret.d.ts +107 -0
- package/dist/static-secret.d.ts.map +1 -0
- package/dist/static-secret.js +87 -0
- package/dist/static-secret.js.map +1 -0
- package/dist/use-operators.d.ts +7 -0
- package/dist/use-operators.d.ts.map +1 -0
- package/dist/use-operators.js +13 -0
- package/dist/use-operators.js.map +1 -0
- package/dist/web-service.d.ts +10 -2
- package/dist/web-service.d.ts.map +1 -1
- package/dist/web-service.js +54 -14
- package/dist/web-service.js.map +1 -1
- package/package.json +30 -5
- package/dist/operators.d.ts +0 -19
- package/dist/operators.d.ts.map +0 -1
- package/dist/operators.js +0 -30
- package/dist/operators.js.map +0 -1
package/dist/app.d.ts
CHANGED
package/dist/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"AACA,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA;AAG/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAI/C,MAAM,WAAW,QAAQ;IACvB,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAA;IACb,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;4FACwF;IACxF,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,8CAA8C;IAC9C,GAAG,CAAC,EAAE,SAAS,CAAA;IACf,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC,CAAA;IAC5C,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IACtC,2DAA2D;IAC3D,SAAS,CAAC,EAAE;QACV,QAAQ,CAAC,EAAE;YAAE,GAAG,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;QAC5C,MAAM,CAAC,EAAE;YAAE,GAAG,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAC3C,CAAA;IACD,mEAAmE;IACnE,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,2DAA2D;IAC3D,GAAG,CAAC,EAAE,OAAO,CAAA;IACb;;;OAGG;IACH,aAAa,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACpD,gFAAgF;IAChF,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"AACA,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA;AAG/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAI/C,MAAM,WAAW,QAAQ;IACvB,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAA;IACb,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;4FACwF;IACxF,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,8CAA8C;IAC9C,GAAG,CAAC,EAAE,SAAS,CAAA;IACf,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC,CAAA;IAC5C,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IACtC,2DAA2D;IAC3D,SAAS,CAAC,EAAE;QACV,QAAQ,CAAC,EAAE;YAAE,GAAG,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;QAC5C,MAAM,CAAC,EAAE;YAAE,GAAG,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAC3C,CAAA;IACD,mEAAmE;IACnE,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,2DAA2D;IAC3D,GAAG,CAAC,EAAE,OAAO,CAAA;IACb;;;OAGG;IACH,aAAa,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACpD,gFAAgF;IAChF,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,kCAuFlC"}
|
package/dist/app.js
CHANGED
|
@@ -5,7 +5,7 @@ const core_1 = require("@r8s/core");
|
|
|
5
5
|
const web_service_1 = require("./web-service");
|
|
6
6
|
const endpoint_1 = require("./endpoint");
|
|
7
7
|
const defaults_1 = require("@r8s/core/defaults");
|
|
8
|
-
const
|
|
8
|
+
const operator_redis_1 = require("@r8s/operator-redis");
|
|
9
9
|
const redis_1 = require("@r8s/crds/redis");
|
|
10
10
|
/**
|
|
11
11
|
* Simple application — Deployment + Service + Endpoint.
|
|
@@ -48,7 +48,7 @@ const redis_1 = require("@r8s/crds/redis");
|
|
|
48
48
|
*
|
|
49
49
|
* export default (
|
|
50
50
|
* <>
|
|
51
|
-
* <Database name="myapp-db" storage="20Gi" />
|
|
51
|
+
* <Database backup={false} name="myapp-db" storage="20Gi" />
|
|
52
52
|
* <App
|
|
53
53
|
* name="myapp"
|
|
54
54
|
* image="myapp/web:v1.2.3"
|
|
@@ -61,8 +61,7 @@ const redis_1 = require("@r8s/crds/redis");
|
|
|
61
61
|
function App(props) {
|
|
62
62
|
const { name, namespace: namespaceProp, image, port = 3000, replicas = 2, host, tls, env = {}, secrets = {}, vault = {}, resources, cache = false, dns, sharedGateway, children, } = props;
|
|
63
63
|
// Inherit namespace from <Platform> context if not explicitly set
|
|
64
|
-
const
|
|
65
|
-
const namespace = namespaceProp ?? (contextNamespace !== 'default' ? contextNamespace : undefined) ?? 'default';
|
|
64
|
+
const namespace = (0, defaults_1.useNamespace)(namespaceProp);
|
|
66
65
|
const elements = [];
|
|
67
66
|
elements.push((0, core_1.jsx)(web_service_1.WebService, {
|
|
68
67
|
name,
|
|
@@ -91,10 +90,7 @@ function App(props) {
|
|
|
91
90
|
// Redis cache
|
|
92
91
|
if (cache) {
|
|
93
92
|
const sharedOperators = (0, core_1.useContext)(defaults_1.OperatorContext);
|
|
94
|
-
|
|
95
|
-
if (!hasRedis) {
|
|
96
|
-
elements.push((0, core_1.declareOperator)(crds_1.operators['redis-operator']()));
|
|
97
|
-
}
|
|
93
|
+
elements.push(...(0, operator_redis_1.declareIfMissing)(sharedOperators));
|
|
98
94
|
elements.push((0, redis_1.RedisClusterComponent)({
|
|
99
95
|
metadata: { name: `${name}-cache`, namespace },
|
|
100
96
|
spec: {
|
package/dist/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":";;AAmGA,
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":";;AAmGA,kBAuFC;AA1LD,oCAAsE;AACtE,+CAA+E;AAC/E,yCAAqC;AACrC,iDAAkE;AAElE,wDAAsD;AACtD,2CAAuD;AA0CvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,SAAgB,GAAG,CAAC,KAAe;IACjC,MAAM,EACJ,IAAI,EACJ,SAAS,EAAE,aAAa,EACxB,KAAK,EACL,IAAI,GAAG,IAAI,EACX,QAAQ,GAAG,CAAC,EACZ,IAAI,EACJ,GAAG,EACH,GAAG,GAAG,EAAE,EACR,OAAO,GAAG,EAAE,EACZ,KAAK,GAAG,EAAE,EACV,SAAS,EACT,KAAK,GAAG,KAAK,EACb,GAAG,EACH,aAAa,EACb,QAAQ,GACT,GAAG,KAAK,CAAA;IAET,kEAAkE;IAClE,MAAM,SAAS,GAAG,IAAA,uBAAY,EAAC,aAAa,CAAC,CAAA;IAE7C,MAAM,QAAQ,GAA6B,EAAE,CAAA;IAE7C,QAAQ,CAAC,IAAI,CACX,IAAA,UAAG,EAAC,wBAAU,EAAE;QACd,IAAI;QACJ,SAAS;QACT,KAAK;QACL,IAAI;QACJ,QAAQ;QACR,GAAG;QACH,OAAO;QACP,KAAK;QACL,SAAS;KACV,CAAC,CACH,CAAA;IAED,2CAA2C;IAC3C,IAAI,IAAI,EAAE,CAAC;QACT,QAAQ,CAAC,IAAI,CACX,IAAA,UAAG,EAAC,mBAAQ,EAAE;YACZ,IAAI,EAAE,GAAG,IAAI,WAAW;YACxB,SAAS;YACT,IAAI;YACJ,WAAW,EAAE,IAAI;YACjB,WAAW,EAAE,EAAE;YACf,GAAG;YACH,GAAG;YACH,GAAG,CAAC,aAAa,IAAI,EAAE,aAAa,EAAE,CAAC;SACxC,CAAC,CACH,CAAA;IACH,CAAC;IAED,cAAc;IACd,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,eAAe,GAAG,IAAA,iBAAU,EAAC,0BAAe,CAAC,CAAA;QACnD,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAA,iCAAgB,EAAC,eAAe,CAAC,CAAC,CAAA;QACnD,QAAQ,CAAC,IAAI,CACX,IAAA,6BAAqB,EAAC;YACpB,QAAQ,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,QAAQ,EAAE,SAAS,EAAE;YAC9C,IAAI,EAAE;gBACJ,WAAW,EAAE,CAAC;gBACd,gBAAgB,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE;gBAC/C,OAAO,EAAE;oBACP,mBAAmB,EAAE;wBACnB,IAAI,EAAE;4BACJ,WAAW,EAAE,CAAC,eAAe,CAAC;4BAC9B,SAAS,EAAE,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;yBAC5C;qBACF;iBACF;aACF;SACF,CAAC,CACH,CAAA;QACD,8BAA8B;QAC9B,GAAG,CAAC,SAAS,GAAG,WAAW,IAAI,iBAAiB,SAAS,yBAAyB,CAAA;IACpF,CAAC;IAED,oEAAoE;IACpE,sEAAsE;IACtE,0DAA0D;IAC1D,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,IAAI,CAAC,IAAA,UAAG,EAAC,eAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;IAC5C,CAAC;IAED,OAAO,IAAA,UAAG,EAAC,eAAQ,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAA;AAC9C,CAAC"}
|
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAa/C,MAAM,WAAW,SAAS;IACxB,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAA;IACZ,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,oCAAoC;IACpC,GAAG,CAAC,EAAE,SAAS,CAAA;IACf,gCAAgC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwEG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,kCA4GpC"}
|
package/dist/auth.js
CHANGED
|
@@ -3,7 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Auth = Auth;
|
|
4
4
|
const core_1 = require("@r8s/core");
|
|
5
5
|
const defaults_1 = require("@r8s/core/defaults");
|
|
6
|
-
const
|
|
6
|
+
const operator_keycloak_1 = require("@r8s/operator-keycloak");
|
|
7
|
+
const operator_cnpg_1 = require("@r8s/operator-cnpg");
|
|
7
8
|
const database_1 = require("./database");
|
|
8
9
|
const endpoint_1 = require("./endpoint");
|
|
9
10
|
const components_1 = require("./auth/components");
|
|
@@ -83,22 +84,16 @@ const components_1 = require("./auth/components");
|
|
|
83
84
|
function Auth(props) {
|
|
84
85
|
const { name, host, namespace: namespaceProp, instances = 1, storage = '10Gi', tls, children, } = props;
|
|
85
86
|
// Inherit namespace from <Platform> context if not explicitly set
|
|
86
|
-
const
|
|
87
|
-
const namespace = namespaceProp ?? (contextNamespace !== 'default' ? contextNamespace : undefined) ?? 'default';
|
|
87
|
+
const namespace = (0, defaults_1.useNamespace)(namespaceProp);
|
|
88
88
|
const sharedOperators = (0, core_1.useContext)(defaults_1.OperatorContext);
|
|
89
|
-
const hasKeycloak = sharedOperators.some((op) => op.name === 'keycloak-operator');
|
|
90
|
-
const hasCNPG = sharedOperators.some((op) => op.name === 'cnpg');
|
|
91
89
|
const resources = [];
|
|
92
|
-
// Declare operators if not already provided
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
}
|
|
96
|
-
if (!hasCNPG) {
|
|
97
|
-
resources.push((0, core_1.declareOperator)(crds_1.operators['cnpg']()));
|
|
98
|
-
}
|
|
90
|
+
// Declare operators if not already provided — via the operator-package contracts
|
|
91
|
+
resources.push(...(0, operator_keycloak_1.declareIfMissing)(sharedOperators));
|
|
92
|
+
resources.push(...(0, operator_cnpg_1.declareCnpg)(sharedOperators));
|
|
99
93
|
// Database for Keycloak — auto-wired via DatabaseContext.
|
|
100
94
|
// Credentials are managed by the secrets backend configured on the Platform.
|
|
101
95
|
resources.push((0, core_1.jsx)(database_1.Database, {
|
|
96
|
+
backup: false,
|
|
102
97
|
name: `${name}-db`,
|
|
103
98
|
namespace,
|
|
104
99
|
storage,
|
|
@@ -173,99 +168,64 @@ function Auth(props) {
|
|
|
173
168
|
}
|
|
174
169
|
return (0, core_1.jsx)(core_1.Fragment, { children: resources });
|
|
175
170
|
}
|
|
171
|
+
/** Normalize JSX children into an array. */
|
|
172
|
+
function childrenOf(children) {
|
|
173
|
+
if (!children)
|
|
174
|
+
return [];
|
|
175
|
+
return Array.isArray(children) ? children : [children];
|
|
176
|
+
}
|
|
177
|
+
/** JSX element check — matches the component function reference. */
|
|
178
|
+
function isElement(child, type) {
|
|
179
|
+
return !!child && typeof child === 'object' && child.type === type;
|
|
180
|
+
}
|
|
181
|
+
function realmConfigFrom(child) {
|
|
182
|
+
const realmProps = child.props;
|
|
183
|
+
// Merge identity providers from both prop and child components
|
|
184
|
+
const identityProviders = [
|
|
185
|
+
...(realmProps.identityProviders ?? []),
|
|
186
|
+
...collectIdentityProviders(realmProps.children),
|
|
187
|
+
];
|
|
188
|
+
const clients = collectClients(realmProps.children);
|
|
189
|
+
return {
|
|
190
|
+
id: realmProps.id,
|
|
191
|
+
displayName: realmProps.displayName,
|
|
192
|
+
enabled: realmProps.enabled,
|
|
193
|
+
identityProviders,
|
|
194
|
+
clients,
|
|
195
|
+
};
|
|
196
|
+
}
|
|
176
197
|
/** Collect Realm configurations from children */
|
|
177
198
|
function collectRealms(children) {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
if (child && typeof child === 'object' && 'type' in child) {
|
|
184
|
-
if (child.type === components_1.Realms) {
|
|
185
|
-
const realmsProps = child.props;
|
|
186
|
-
const realmChildren = Array.isArray(realmsProps.children)
|
|
187
|
-
? realmsProps.children
|
|
188
|
-
: [realmsProps.children];
|
|
189
|
-
for (const realmChild of realmChildren) {
|
|
190
|
-
if (realmChild &&
|
|
191
|
-
typeof realmChild === 'object' &&
|
|
192
|
-
'type' in realmChild &&
|
|
193
|
-
realmChild.type === components_1.Realm) {
|
|
194
|
-
const realmProps = realmChild.props;
|
|
195
|
-
const clients = collectClients(realmProps.children);
|
|
196
|
-
// Merge identity providers from both prop and child components
|
|
197
|
-
const identityProviders = [
|
|
198
|
-
...(realmProps.identityProviders ?? []),
|
|
199
|
-
...collectIdentityProviders(realmProps.children),
|
|
200
|
-
];
|
|
201
|
-
realms.push({
|
|
202
|
-
id: realmProps.id,
|
|
203
|
-
displayName: realmProps.displayName,
|
|
204
|
-
enabled: realmProps.enabled,
|
|
205
|
-
identityProviders,
|
|
206
|
-
clients,
|
|
207
|
-
});
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
else if (child.type === components_1.Realm) {
|
|
212
|
-
const realmProps = child.props;
|
|
213
|
-
const clients = collectClients(realmProps.children);
|
|
214
|
-
// Merge identity providers from both prop and child components
|
|
215
|
-
const identityProviders = [
|
|
216
|
-
...(realmProps.identityProviders ?? []),
|
|
217
|
-
...collectIdentityProviders(realmProps.children),
|
|
218
|
-
];
|
|
219
|
-
realms.push({
|
|
220
|
-
id: realmProps.id,
|
|
221
|
-
displayName: realmProps.displayName,
|
|
222
|
-
enabled: realmProps.enabled,
|
|
223
|
-
identityProviders,
|
|
224
|
-
clients,
|
|
225
|
-
});
|
|
226
|
-
}
|
|
199
|
+
return childrenOf(children).flatMap((child) => {
|
|
200
|
+
if (isElement(child, components_1.Realms)) {
|
|
201
|
+
return childrenOf(child.props.children)
|
|
202
|
+
.filter((realmChild) => isElement(realmChild, components_1.Realm))
|
|
203
|
+
.map(realmConfigFrom);
|
|
227
204
|
}
|
|
228
|
-
|
|
229
|
-
|
|
205
|
+
if (isElement(child, components_1.Realm))
|
|
206
|
+
return [realmConfigFrom(child)];
|
|
207
|
+
return [];
|
|
208
|
+
});
|
|
230
209
|
}
|
|
231
210
|
/** Collect Client configurations from children */
|
|
232
211
|
function collectClients(children) {
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
if (child && typeof child === 'object' && 'type' in child) {
|
|
239
|
-
if (child.type === components_1.Clients) {
|
|
240
|
-
const clientsProps = child.props;
|
|
241
|
-
const clientChildren = Array.isArray(clientsProps.children)
|
|
242
|
-
? clientsProps.children
|
|
243
|
-
: [clientsProps.children];
|
|
244
|
-
for (const clientChild of clientChildren) {
|
|
245
|
-
if (clientChild &&
|
|
246
|
-
typeof clientChild === 'object' &&
|
|
247
|
-
'type' in clientChild &&
|
|
248
|
-
clientChild.type === components_1.Client) {
|
|
249
|
-
clients.push(clientChild.props);
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
else if (child.type === components_1.Client) {
|
|
254
|
-
clients.push(child.props);
|
|
255
|
-
}
|
|
212
|
+
return childrenOf(children).flatMap((child) => {
|
|
213
|
+
if (isElement(child, components_1.Clients)) {
|
|
214
|
+
return childrenOf(child.props.children)
|
|
215
|
+
.filter((clientChild) => isElement(clientChild, components_1.Client))
|
|
216
|
+
.map((clientChild) => clientChild.props);
|
|
256
217
|
}
|
|
257
|
-
|
|
258
|
-
|
|
218
|
+
if (isElement(child, components_1.Client))
|
|
219
|
+
return [child.props];
|
|
220
|
+
return [];
|
|
221
|
+
});
|
|
259
222
|
}
|
|
260
223
|
/** Collect IdentityProvider configurations from children */
|
|
261
224
|
function collectIdentityProviders(children) {
|
|
262
225
|
const identityProviders = [];
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
for (const child of childArray) {
|
|
267
|
-
if (child && typeof child === 'object' && 'type' in child) {
|
|
268
|
-
if (child.type === components_1.EntraID) {
|
|
226
|
+
for (const child of childrenOf(children)) {
|
|
227
|
+
if (typeof child === 'object' && child !== null) {
|
|
228
|
+
if (isElement(child, components_1.EntraID)) {
|
|
269
229
|
const entraProps = child.props;
|
|
270
230
|
identityProviders.push({
|
|
271
231
|
alias: 'entra-id',
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.tsx"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.tsx"],"names":[],"mappings":"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"}
|
package/dist/backup.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { r8sElement } from '@r8s/core';
|
|
1
2
|
export interface BackupProps {
|
|
2
3
|
/** Resource name */
|
|
3
4
|
name: string;
|
|
@@ -7,8 +8,23 @@ export interface BackupProps {
|
|
|
7
8
|
schedule?: string;
|
|
8
9
|
/** Namespaces to include in backups (defaults to the current namespace) */
|
|
9
10
|
namespaces?: string[];
|
|
10
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* Velero storage location name. With an S3 provider on the Platform this
|
|
13
|
+
* defaults to this component's name (the emitted BackupStorageLocation);
|
|
14
|
+
* without one, 'default' (an externally-managed location must exist).
|
|
15
|
+
*/
|
|
11
16
|
storageLocation?: string;
|
|
17
|
+
/**
|
|
18
|
+
* <Bucket name="…"/> descriptor element — scopes the BackupStorageLocation
|
|
19
|
+
* to that prefix (`<name>/velero`) of the surrounding provider's bucket.
|
|
20
|
+
*/
|
|
21
|
+
bucket?: r8sElement;
|
|
22
|
+
/**
|
|
23
|
+
* Key inside the store's credentials Secret holding a velero-format
|
|
24
|
+
* cloud credentials file (`[default] aws_access_key_id = …`). Omit on
|
|
25
|
+
* workload-identity / IRSA clusters.
|
|
26
|
+
*/
|
|
27
|
+
credentialKey?: string;
|
|
12
28
|
/** Backup retention (e.g., '720h' for 30 days) */
|
|
13
29
|
ttl?: string;
|
|
14
30
|
}
|
|
@@ -41,5 +57,5 @@ export interface BackupProps {
|
|
|
41
57
|
* />
|
|
42
58
|
* )
|
|
43
59
|
*/
|
|
44
|
-
export declare function Backup(props: BackupProps):
|
|
60
|
+
export declare function Backup(props: BackupProps): r8sElement;
|
|
45
61
|
//# sourceMappingURL=backup.d.ts.map
|
package/dist/backup.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../src/backup.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB
|
|
1
|
+
{"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../src/backup.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAE3C,MAAM,WAAW,WAAW;IAC1B,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB;;;;OAIG;IAEH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;;OAGG;IACH,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,cA4FxC"}
|
package/dist/backup.js
CHANGED
|
@@ -3,7 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Backup = Backup;
|
|
4
4
|
const core_1 = require("@r8s/core");
|
|
5
5
|
const defaults_1 = require("@r8s/core/defaults");
|
|
6
|
-
const
|
|
6
|
+
const operator_velero_1 = require("@r8s/operator-velero");
|
|
7
|
+
const s3_provider_1 = require("./s3-provider");
|
|
7
8
|
/**
|
|
8
9
|
* Backup — scheduled cluster backups with Velero.
|
|
9
10
|
*
|
|
@@ -34,12 +35,59 @@ const crds_1 = require("@r8s/crds");
|
|
|
34
35
|
* )
|
|
35
36
|
*/
|
|
36
37
|
function Backup(props) {
|
|
37
|
-
const { name, namespace = 'default', schedule = '0 2 * * *', namespaces, storageLocation
|
|
38
|
+
const { name, namespace = 'default', schedule = '0 2 * * *', namespaces, storageLocation, bucket: bucketProp, credentialKey: credentialKeyProp, ttl = '720h', } = props;
|
|
38
39
|
const sharedOperators = (0, core_1.useContext)(defaults_1.OperatorContext);
|
|
39
|
-
const
|
|
40
|
+
const s3 = (0, s3_provider_1.useS3)();
|
|
41
|
+
let bucketDesc;
|
|
42
|
+
if (bucketProp) {
|
|
43
|
+
if (!(0, s3_provider_1.isBucketElement)(bucketProp)) {
|
|
44
|
+
throw new Error('Backup "bucket" prop takes a <Bucket name="…" /> descriptor — got ' +
|
|
45
|
+
(typeof bucketProp === 'object' ? 'another element/object' : `a ${typeof bucketProp}`));
|
|
46
|
+
}
|
|
47
|
+
bucketDesc = (0, s3_provider_1.resolveBucket)(bucketProp, s3);
|
|
48
|
+
}
|
|
49
|
+
if (storageLocation && (bucketProp || credentialKeyProp)) {
|
|
50
|
+
throw new Error(`<Backup "${name}">: storageLocation points at an externally-managed
|
|
51
|
+
` +
|
|
52
|
+
`BackupStorageLocation — bucket/credentialKey would be ignored.\n` +
|
|
53
|
+
`\n` +
|
|
54
|
+
`Remove storageLocation to target the platform S3 store, or drop\n` +
|
|
55
|
+
`bucket/credentialKey to keep the external location.`);
|
|
56
|
+
}
|
|
57
|
+
const storeS3 = bucketDesc ? bucketDesc.s3 : s3;
|
|
58
|
+
const storePrefix = bucketDesc ? bucketDesc.prefix : undefined;
|
|
40
59
|
const resources = [];
|
|
41
|
-
|
|
42
|
-
|
|
60
|
+
resources.push(...(0, operator_velero_1.declareIfMissing)(sharedOperators));
|
|
61
|
+
// S3 provider: emit the BackupStorageLocation against the 'velero/'
|
|
62
|
+
// prefix of the platform bucket and point the schedule at it. Without a
|
|
63
|
+
// provider the schedule references 'default' — a storage location the
|
|
64
|
+
// cluster is expected to manage itself.
|
|
65
|
+
const locationName = storeS3 && !storageLocation ? name : (storageLocation ?? 'default');
|
|
66
|
+
if (storeS3 && !storageLocation) {
|
|
67
|
+
resources.push((0, core_1.jsx)('BackupStorageLocation', {
|
|
68
|
+
apiVersion: 'velero.io/v1',
|
|
69
|
+
kind: 'BackupStorageLocation',
|
|
70
|
+
metadata: { name, namespace: 'velero' },
|
|
71
|
+
spec: {
|
|
72
|
+
// no `default: true` — two <Backup> components must not fight over
|
|
73
|
+
// it; each Schedule pins its storageLocation explicitly
|
|
74
|
+
provider: 'aws',
|
|
75
|
+
objectStorage: {
|
|
76
|
+
bucket: storeS3.bucket,
|
|
77
|
+
prefix: storePrefix ? `${storePrefix}/velero` : 'velero',
|
|
78
|
+
},
|
|
79
|
+
config: {
|
|
80
|
+
region: storeS3.region ?? 'us-east-1',
|
|
81
|
+
...(storeS3.forcePathStyle !== false && { s3ForcePathStyle: 'true' }),
|
|
82
|
+
s3Url: storeS3.endpoint,
|
|
83
|
+
},
|
|
84
|
+
// Velero owns how it reads the credential — its key inside the
|
|
85
|
+
// store's Secret. Omit on workload-identity/IRSA clusters.
|
|
86
|
+
...(credentialKeyProp && {
|
|
87
|
+
credential: { name: storeS3.credentialsSecret, key: credentialKeyProp },
|
|
88
|
+
}),
|
|
89
|
+
},
|
|
90
|
+
}));
|
|
43
91
|
}
|
|
44
92
|
resources.push((0, core_1.jsx)('Schedule', {
|
|
45
93
|
apiVersion: 'velero.io/v1',
|
|
@@ -49,7 +97,7 @@ function Backup(props) {
|
|
|
49
97
|
schedule,
|
|
50
98
|
template: {
|
|
51
99
|
includedNamespaces: namespaces ?? [namespace],
|
|
52
|
-
storageLocation,
|
|
100
|
+
storageLocation: locationName,
|
|
53
101
|
ttl,
|
|
54
102
|
},
|
|
55
103
|
},
|
package/dist/backup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup.js","sourceRoot":"","sources":["../src/backup.tsx"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"backup.js","sourceRoot":"","sources":["../src/backup.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cert-provider.d.ts","sourceRoot":"","sources":["../src/cert-provider.tsx"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2EAA2E;IAC3E,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,UAAU,CAS/D;AAED,yCAAyC;AACzC,MAAM,WAAW,UAAU;IACzB,gCAAgC;IAChC,QAAQ,EAAE,cAAc,CAAA;IACxB,iCAAiC;IACjC,QAAQ,EAAE;QACR,4BAA4B;QAC5B,aAAa,EAAE,MAAM,CAAA;QACrB,mCAAmC;QACnC,QAAQ,EAAE,MAAM,CAAA;QAChB,kCAAkC;QAClC,WAAW,EAAE,MAAM,CAAA;KACpB,CAAA;CACF;AAED,gDAAgD;AAChD,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG,UAAU,CAAA;AAE3D,eAAO,MAAM,WAAW,6DAAyC,CAAA;AAEjE,MAAM,WAAW,iBAAiB;IAChC;;;;;;;;;;OAUG;IACH,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,uBAAuB;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"cert-provider.d.ts","sourceRoot":"","sources":["../src/cert-provider.tsx"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2EAA2E;IAC3E,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,UAAU,CAS/D;AAED,yCAAyC;AACzC,MAAM,WAAW,UAAU;IACzB,gCAAgC;IAChC,QAAQ,EAAE,cAAc,CAAA;IACxB,iCAAiC;IACjC,QAAQ,EAAE;QACR,4BAA4B;QAC5B,aAAa,EAAE,MAAM,CAAA;QACrB,mCAAmC;QACnC,QAAQ,EAAE,MAAM,CAAA;QAChB,kCAAkC;QAClC,WAAW,EAAE,MAAM,CAAA;KACpB,CAAA;CACF;AAED,gDAAgD;AAChD,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG,UAAU,CAAA;AAE3D,eAAO,MAAM,WAAW,6DAAyC,CAAA;AAEjE,MAAM,WAAW,iBAAiB;IAChC;;;;;;;;;;OAUG;IACH,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,uBAAuB;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,kCA0BpD"}
|
package/dist/cert-provider.js
CHANGED
|
@@ -6,7 +6,7 @@ exports.CertProvider = CertProvider;
|
|
|
6
6
|
const core_1 = require("@r8s/core");
|
|
7
7
|
const defaults_1 = require("@r8s/core/defaults");
|
|
8
8
|
const defaults_2 = require("@r8s/core/defaults");
|
|
9
|
-
const
|
|
9
|
+
const operator_cert_manager_1 = require("@r8s/operator-cert-manager");
|
|
10
10
|
function CertManager(props) {
|
|
11
11
|
return {
|
|
12
12
|
provider: 'cert-manager',
|
|
@@ -60,10 +60,7 @@ function CertProvider(props) {
|
|
|
60
60
|
: provider;
|
|
61
61
|
const resources = [];
|
|
62
62
|
// Declare cert-manager operator
|
|
63
|
-
|
|
64
|
-
if (!hasCertManager) {
|
|
65
|
-
resources.push((0, core_1.declareOperator)(crds_1.operators['cert-manager']()));
|
|
66
|
-
}
|
|
63
|
+
resources.push(...(0, operator_cert_manager_1.declareIfMissing)(sharedOperators));
|
|
67
64
|
return (0, core_1.jsx)(core_1.Fragment, {
|
|
68
65
|
children: [...resources, (0, core_1.jsx)(exports.CertContext.Provider, { value: config, children })],
|
|
69
66
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cert-provider.js","sourceRoot":"","sources":["../src/cert-provider.tsx"],"names":[],"mappings":";;;AAsBA,kCASC;AAiED,
|
|
1
|
+
{"version":3,"file":"cert-provider.js","sourceRoot":"","sources":["../src/cert-provider.tsx"],"names":[],"mappings":";;;AAsBA,kCASC;AAiED,oCA0BC;AA1HD,oCAAsE;AACtE,iDAAkD;AAClD,iDAAoD;AACpD,sEAA6D;AAmB7D,SAAgB,WAAW,CAAC,KAAuB;IACjD,OAAO;QACL,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE;YACR,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,kBAAkB;YACxD,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,OAAO;YACnC,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,MAAM;SACzC;KACF,CAAA;AACH,CAAC;AAoBY,QAAA,WAAW,GAAG,IAAA,wBAAa,EAAoB,IAAI,CAAC,CAAA;AAmBjE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,SAAgB,YAAY,CAAC,KAAwB;IACnD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAA;IAEpC,MAAM,eAAe,GAAG,IAAA,iBAAU,EAAC,0BAAe,CAAC,CAAA;IAEnD,0BAA0B;IAC1B,MAAM,MAAM,GACV,OAAO,QAAQ,KAAK,QAAQ;QAC1B,CAAC,CAAC;YACE,QAAQ;YACR,QAAQ,EAAE;gBACR,aAAa,EAAE,kBAAkB;gBACjC,QAAQ,EAAE,OAAO;gBACjB,WAAW,EAAE,MAAM;aACpB;SACF;QACH,CAAC,CAAC,QAAQ,CAAA;IAEd,MAAM,SAAS,GAA6B,EAAE,CAAA;IAE9C,gCAAgC;IAChC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAA,wCAAgB,EAAC,eAAe,CAAC,CAAC,CAAA;IAEpD,OAAO,IAAA,UAAG,EAAC,eAAQ,EAAE;QACnB,QAAQ,EAAE,CAAC,GAAG,SAAS,EAAE,IAAA,UAAG,EAAC,mBAAW,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;KACjF,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/database.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type BucketProps } from './s3-provider';
|
|
1
2
|
/**
|
|
2
3
|
* Continuous + scheduled backup configuration for a dedicated CNPG cluster.
|
|
3
4
|
* Renders `spec.backup.barmanObjectStore` on the Cluster plus a
|
|
@@ -5,16 +6,16 @@
|
|
|
5
6
|
* unless this prop is set.
|
|
6
7
|
*/
|
|
7
8
|
export interface DatabaseBackupProps {
|
|
8
|
-
/** S3 destination path, e.g. 's3://backups/myapp-cnpg' */
|
|
9
|
-
destinationPath
|
|
10
|
-
/** S3 endpoint URL, e.g. 'https://s3.example.com' (RustFS/Scaleway/…) */
|
|
11
|
-
endpointURL
|
|
9
|
+
/** S3 destination path, e.g. 's3://backups/myapp-cnpg'. Derived from the S3 provider as `s3://<bucket>/<name>-cnpg` when omitted. */
|
|
10
|
+
destinationPath?: string;
|
|
11
|
+
/** S3 endpoint URL, e.g. 'https://s3.example.com' (RustFS/Scaleway/…). Derived from the S3 provider when omitted. */
|
|
12
|
+
endpointURL?: string;
|
|
12
13
|
/**
|
|
13
14
|
* Name of an existing Secret holding the S3 credentials with CNPG keys
|
|
14
|
-
* `access-key-id` and `secret-access-key`.
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
15
|
+
* `access-key-id` and `secret-access-key`. Resolution order: this prop →
|
|
16
|
+
* the S3 provider's credentialsSecret → the Platform secrets backend
|
|
17
|
+
* provisioner (`<name>-backup-credentials` from
|
|
18
|
+
* `<path>/<name>-s3-credentials`). Without any of the three this throws.
|
|
18
19
|
*/
|
|
19
20
|
credentialsSecret?: string;
|
|
20
21
|
/** Retention policy for barman backups (default: '30d') */
|
|
@@ -33,6 +34,14 @@ export interface DatabaseProps {
|
|
|
33
34
|
namespace?: string;
|
|
34
35
|
/** Number of CNPG instances in the dedicated cluster (defaults to 3) */
|
|
35
36
|
instances?: number;
|
|
37
|
+
/**
|
|
38
|
+
* Bootstrap database name (defaults to `name`) — for apps whose schema
|
|
39
|
+
* lives in a database named differently from the cluster resource
|
|
40
|
+
* (e.g. cluster 'harbor-db', database 'registry').
|
|
41
|
+
*/
|
|
42
|
+
database?: string;
|
|
43
|
+
/** Bootstrap owner role (defaults to `name`; pairs with `database`) */
|
|
44
|
+
owner?: string;
|
|
36
45
|
/** Storage size (e.g., '10Gi') for the dedicated cluster data volume */
|
|
37
46
|
storage?: string;
|
|
38
47
|
/** Storage class name for the data volume (defaults to cluster default) */
|
|
@@ -41,9 +50,15 @@ export interface DatabaseProps {
|
|
|
41
50
|
parameters?: Record<string, string>;
|
|
42
51
|
/**
|
|
43
52
|
* Continuous barman backup to S3 object storage + ScheduledBackup.
|
|
44
|
-
*
|
|
53
|
+
* REQUIRED decision point: omit → renderer throws with guidance.
|
|
54
|
+
* `false` → cluster without barman (forks, ephemeral CI).
|
|
55
|
+
* `true`/object → barman WAL + scheduled backups; target and credentials
|
|
56
|
+
* derive from the Platform's S3 provider, explicit object values win.
|
|
45
57
|
*/
|
|
46
|
-
backup
|
|
58
|
+
backup: DatabaseBackupProps | true | false | {
|
|
59
|
+
type: unknown;
|
|
60
|
+
props: BucketProps;
|
|
61
|
+
};
|
|
47
62
|
/**
|
|
48
63
|
* Workloads that consume the database credentials. Rendered as
|
|
49
64
|
* `rolloutRestartTargets` on the generated VaultStaticSecret/
|
|
@@ -63,6 +78,15 @@ export interface DatabaseProps {
|
|
|
63
78
|
* creating roles or extensions. Parameterized by the CNPG operator.
|
|
64
79
|
*/
|
|
65
80
|
postInitSQL?: string[];
|
|
81
|
+
/**
|
|
82
|
+
* Where database credentials come from. Default `'backend'`: when a
|
|
83
|
+
* secrets backend is configured on the Platform, the credentials secret
|
|
84
|
+
* is provisioned through it (rotation → pod restarts). `'cnpg'` forces
|
|
85
|
+
* CNPG-managed bootstrap credentials **even with a backend** — the
|
|
86
|
+
* operator generates the secret in-cluster (incl. `fqdn-uri`), matching
|
|
87
|
+
* apps that reference the CNPG-generated secret directly.
|
|
88
|
+
*/
|
|
89
|
+
credentialsMode?: 'backend' | 'cnpg';
|
|
66
90
|
/** Child components rendered with this database's connection info in context */
|
|
67
91
|
children?: unknown;
|
|
68
92
|
}
|
|
@@ -73,7 +97,7 @@ export interface DatabaseProps {
|
|
|
73
97
|
* @category Data & Analytics
|
|
74
98
|
*
|
|
75
99
|
* Creates a dedicated 3-instance HA CloudNativePG cluster for this database.
|
|
76
|
-
* When wrapped in a `<Database>` component, child components receive the
|
|
100
|
+
* When wrapped in a `<Database backup={false}>` component, child components receive the
|
|
77
101
|
* connection info via DatabaseContext automatically.
|
|
78
102
|
*
|
|
79
103
|
* Credentials are managed by the secrets backend configured on the Platform.
|
|
@@ -85,14 +109,32 @@ export interface DatabaseProps {
|
|
|
85
109
|
* @example
|
|
86
110
|
* import { Database } from '@r8s/recipes'
|
|
87
111
|
*
|
|
88
|
-
*
|
|
112
|
+
* // Required target: explicit S3 settings (credentials from an existing Secret)
|
|
113
|
+
* export default (
|
|
114
|
+
* <Database
|
|
115
|
+
* name="app-db"
|
|
116
|
+
* storage="10Gi"
|
|
117
|
+
* backup={{
|
|
118
|
+
* destinationPath: 's3://backups/app-db-cnpg',
|
|
119
|
+
* endpointURL: 'https://s3.example.com',
|
|
120
|
+
* credentialsSecret: 'app-db-backup-creds',
|
|
121
|
+
* }}
|
|
122
|
+
* />
|
|
123
|
+
* )
|
|
89
124
|
*
|
|
90
125
|
* @example
|
|
91
126
|
* import { Platform, Database, WebService } from '@r8s/recipes'
|
|
92
127
|
*
|
|
93
128
|
* export default (
|
|
94
129
|
* <Platform secrets={{ backend: 'openbao' }}>
|
|
95
|
-
* <Database
|
|
130
|
+
* <Database
|
|
131
|
+
* name="app-db"
|
|
132
|
+
* storage="10Gi"
|
|
133
|
+
* backup={{
|
|
134
|
+
* destinationPath: 's3://backups/app-db-cnpg',
|
|
135
|
+
* endpointURL: 'https://s3.example.com',
|
|
136
|
+
* }}
|
|
137
|
+
* >
|
|
96
138
|
* <WebService name="api" image="myapp/api:v1" />
|
|
97
139
|
* </Database>
|
|
98
140
|
* </Platform>
|
package/dist/database.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.tsx"],"names":[],"mappings":"AAWA;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAyC,KAAK,WAAW,EAAE,MAAM,eAAe,CAAA;AAEvF;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,qIAAqI;IACrI,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,qHAAqH;IACrH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAA;IACzC,yCAAyC;IACzC,UAAU,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAA;IACZ,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC;;;;;;OAMG;IACH,MAAM,EAAE,mBAAmB,GAAG,IAAI,GAAG,KAAK,GAAG;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,WAAW,CAAA;KAAE,CAAA;IAClF;;;;OAIG;IACH,qBAAqB,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC9E,yFAAyF;IACzF,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,SAAS,GAAG,MAAM,CAAA;IACpC,gFAAgF;IAChF,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,oCA0R5C"}
|