@r8s/recipes 0.1.0 → 0.2.1
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 +11 -2
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +16 -13
- package/dist/app.js.map +1 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +48 -84
- package/dist/auth.js.map +1 -1
- package/dist/database.d.ts +97 -5
- package/dist/database.d.ts.map +1 -1
- package/dist/database.js +196 -86
- package/dist/database.js.map +1 -1
- package/dist/dns-provider.js +1 -1
- package/dist/dns-provider.js.map +1 -1
- package/dist/endpoint-provider.d.ts.map +1 -1
- package/dist/endpoint-provider.js +22 -2
- package/dist/endpoint-provider.js.map +1 -1
- package/dist/endpoint.d.ts +18 -1
- package/dist/endpoint.d.ts.map +1 -1
- package/dist/endpoint.js +92 -37
- 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 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -1
- package/dist/index.js.map +1 -1
- package/dist/operators.d.ts +16 -2
- package/dist/operators.d.ts.map +1 -1
- package/dist/operators.js +26 -0
- package/dist/operators.js.map +1 -1
- package/dist/platform.d.ts +9 -0
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js.map +1 -1
- package/dist/r8s-cluster.d.ts +105 -0
- package/dist/r8s-cluster.d.ts.map +1 -0
- package/dist/r8s-cluster.js +187 -0
- package/dist/r8s-cluster.js.map +1 -0
- package/dist/secret-provider.d.ts +15 -2
- package/dist/secret-provider.d.ts.map +1 -1
- package/dist/secret-provider.js +77 -1
- 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/web-service.d.ts +97 -0
- package/dist/web-service.d.ts.map +1 -1
- package/dist/web-service.js +117 -17
- package/dist/web-service.js.map +1 -1
- package/package.json +4 -4
package/dist/database.js
CHANGED
|
@@ -4,6 +4,7 @@ exports.Database = Database;
|
|
|
4
4
|
const core_1 = require("@r8s/core");
|
|
5
5
|
const defaults_1 = require("@r8s/core/defaults");
|
|
6
6
|
const operators_1 = require("./operators");
|
|
7
|
+
const secret_provider_1 = require("./secret-provider");
|
|
7
8
|
/**
|
|
8
9
|
* CloudNativePG PostgreSQL database.
|
|
9
10
|
*
|
|
@@ -15,7 +16,10 @@ const operators_1 = require("./operators");
|
|
|
15
16
|
* connection info via DatabaseContext automatically.
|
|
16
17
|
*
|
|
17
18
|
* Credentials are managed by the secrets backend configured on the Platform.
|
|
18
|
-
* Without a
|
|
19
|
+
* Without a backend, credentials are CNPG-managed (bootstrap secret is
|
|
20
|
+
* generated automatically in-cluster). Plaintext password props are NOT
|
|
21
|
+
* supported — rendered YAML is committed to git and applied to clusters,
|
|
22
|
+
* so a plaintext password there is a credential leak.
|
|
19
23
|
*
|
|
20
24
|
* @example
|
|
21
25
|
* import { Database } from '@r8s/recipes'
|
|
@@ -32,12 +36,49 @@ const operators_1 = require("./operators");
|
|
|
32
36
|
* </Database>
|
|
33
37
|
* </Platform>
|
|
34
38
|
* )
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* import { Platform, Database, WebService } from '@r8s/recipes'
|
|
42
|
+
*
|
|
43
|
+
* // HA database with continuous S3 backup — the backend provisions the
|
|
44
|
+
* // backup credentials, pods restart when they rotate.
|
|
45
|
+
* export default (
|
|
46
|
+
* <Platform secrets={{ backend: 'openbao', mount: 'kv', path: 'apps', refreshAfter: '3600s' }}>
|
|
47
|
+
* <Database
|
|
48
|
+
* name="app-db"
|
|
49
|
+
* storage="20Gi"
|
|
50
|
+
* instances={2}
|
|
51
|
+
* rolloutRestartTargets={[{ name: 'api' }]}
|
|
52
|
+
* backup={{
|
|
53
|
+
* destinationPath: 's3://backups/app-cnpg',
|
|
54
|
+
* endpointURL: 'https://s3.example.com',
|
|
55
|
+
* }}
|
|
56
|
+
* >
|
|
57
|
+
* <WebService name="api" image="myapp/api:v1" />
|
|
58
|
+
* </Database>
|
|
59
|
+
* </Platform>
|
|
60
|
+
* )
|
|
35
61
|
*/
|
|
36
62
|
function Database(props) {
|
|
37
|
-
const { name, namespace: namespaceProp, storage = '10Gi', operatorVersion,
|
|
63
|
+
const { name, namespace: namespaceProp, instances = 3, database: databaseName = name, owner: ownerName = name, storage = '10Gi', storageClass, parameters, credentialsMode = 'backend', backup, rolloutRestartTargets, operatorVersion, postInitSQL, children, } = props;
|
|
64
|
+
// Plaintext password props are forbidden. This also catches untyped/JS
|
|
65
|
+
// callers that pass `password` to Database regardless of backend — the
|
|
66
|
+
// rendered Secret would leak the credential into git and cluster state.
|
|
67
|
+
const legacyPassword = props.password;
|
|
68
|
+
if (legacyPassword !== undefined && legacyPassword !== null && legacyPassword !== '') {
|
|
69
|
+
throw new Error(`Database "${name}" received a plaintext password. ` +
|
|
70
|
+
`Plaintext credentials in rendered manifests are no longer supported — ` +
|
|
71
|
+
`the YAML is committed to git and applied to clusters, which leaks the credential.\n` +
|
|
72
|
+
`\n` +
|
|
73
|
+
`Fix: configure a secrets backend on the Platform and let it manage credentials:\n` +
|
|
74
|
+
` <Platform secrets={{ backend: 'openbao', mount: 'kv', path: 'apps' }}>\n` +
|
|
75
|
+
` <Database name="${name}" />\n` +
|
|
76
|
+
` </Platform>\n` +
|
|
77
|
+
`\n` +
|
|
78
|
+
`Supported backends: 'openbao', 'vault', 'sealed-secrets', 'kubernetes', 'manual-secrets'`);
|
|
79
|
+
}
|
|
38
80
|
// Inherit namespace from <Platform> context if not explicitly set
|
|
39
|
-
const
|
|
40
|
-
const namespace = namespaceProp ?? (contextNamespace !== 'default' ? contextNamespace : undefined) ?? 'default';
|
|
81
|
+
const namespace = (0, defaults_1.useNamespace)(namespaceProp);
|
|
41
82
|
const clusterConfig = (0, core_1.useContext)(defaults_1.ClusterContext);
|
|
42
83
|
const secretProvider = (0, core_1.useContext)(defaults_1.SecretContext);
|
|
43
84
|
const sharedOperators = (0, core_1.useContext)(defaults_1.OperatorContext);
|
|
@@ -48,13 +89,13 @@ function Database(props) {
|
|
|
48
89
|
const connection = {
|
|
49
90
|
host: clusterConfig.host,
|
|
50
91
|
port: 5432,
|
|
51
|
-
database:
|
|
52
|
-
username:
|
|
92
|
+
database: databaseName,
|
|
93
|
+
username: ownerName,
|
|
53
94
|
passwordSecret: { name: secretName, key: 'password' },
|
|
54
95
|
passwordKey: 'password',
|
|
55
96
|
vendor: 'postgres',
|
|
56
97
|
};
|
|
57
|
-
resources.push(...createSecretResources(name, namespace, secretName, secretProvider,
|
|
98
|
+
resources.push(...createSecretResources(name, namespace, secretName, secretProvider, 'shared', undefined));
|
|
58
99
|
if (children) {
|
|
59
100
|
resources.push((0, core_1.jsx)(defaults_1.DatabaseContext.Provider, { value: connection, children }));
|
|
60
101
|
}
|
|
@@ -62,28 +103,80 @@ function Database(props) {
|
|
|
62
103
|
else {
|
|
63
104
|
// Dedicated cluster — create full CNPG cluster
|
|
64
105
|
const hasCNPG = sharedOperators.some((op) => op.name === 'cnpg');
|
|
106
|
+
// Backup credentials: explicit existing Secret, or provisioned by the
|
|
107
|
+
// secrets backend. Plaintext is never rendered.
|
|
108
|
+
let backupCredentials;
|
|
109
|
+
if (backup) {
|
|
110
|
+
if (backup.credentialsSecret) {
|
|
111
|
+
backupCredentials = backup.credentialsSecret;
|
|
112
|
+
}
|
|
113
|
+
else if (secretProvider &&
|
|
114
|
+
(secretProvider.backend === 'openbao' || secretProvider.backend === 'vault')) {
|
|
115
|
+
backupCredentials = `${name}-backup-credentials`;
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
throw new Error(`Database "${name}" has backup configured without backup credentials.\n` +
|
|
119
|
+
`\n` +
|
|
120
|
+
`Set an existing Secret holding keys 'access-key-id' and 'secret-access-key':\n` +
|
|
121
|
+
` backup={{ ..., credentialsSecret: 'my-backup-creds' }}\n` +
|
|
122
|
+
`\n` +
|
|
123
|
+
`or let the Platform secrets backend provision them from '<path>/${name}-s3-credentials':\n` +
|
|
124
|
+
` <Platform secrets={{ backend: 'openbao', mount: 'kv', path: 'apps' }}>`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
65
127
|
const cluster = {
|
|
66
128
|
apiVersion: 'postgresql.cnpg.io/v1',
|
|
67
129
|
kind: 'Cluster',
|
|
68
130
|
metadata: { name, namespace },
|
|
69
131
|
spec: {
|
|
70
|
-
instances
|
|
71
|
-
storage: {
|
|
132
|
+
instances,
|
|
133
|
+
storage: {
|
|
134
|
+
size: storage,
|
|
135
|
+
...(storageClass && { storageClass }),
|
|
136
|
+
},
|
|
72
137
|
bootstrap: {
|
|
73
138
|
initdb: {
|
|
74
|
-
database:
|
|
75
|
-
owner:
|
|
76
|
-
|
|
139
|
+
database: databaseName,
|
|
140
|
+
owner: ownerName,
|
|
141
|
+
// 'cnpg' credentialsMode: let CNPG default to '<cluster>-app'
|
|
142
|
+
// (the native credentials secret incl. fqdn-uri references)
|
|
143
|
+
...(credentialsMode === 'cnpg' ? {} : { secret: { name: secretName } }),
|
|
144
|
+
// Roles/extensions the application needs on a fresh cluster —
|
|
145
|
+
// applied once by CNPG after the initial bootstrap.
|
|
146
|
+
...(postInitSQL && postInitSQL.length > 0
|
|
147
|
+
? { postInitApplicationSQL: postInitSQL }
|
|
148
|
+
: {}),
|
|
77
149
|
},
|
|
78
150
|
},
|
|
79
151
|
monitoring: { enablePodMonitor: true },
|
|
152
|
+
...(parameters && { postgresql: { parameters } }),
|
|
153
|
+
...(backup && backupCredentials
|
|
154
|
+
? {
|
|
155
|
+
backup: {
|
|
156
|
+
retentionPolicy: backup.retention ?? '30d',
|
|
157
|
+
barmanObjectStore: {
|
|
158
|
+
destinationPath: backup.destinationPath,
|
|
159
|
+
endpointURL: backup.endpointURL,
|
|
160
|
+
s3Credentials: {
|
|
161
|
+
accessKeyId: { name: backupCredentials, key: 'access-key-id' },
|
|
162
|
+
secretAccessKey: { name: backupCredentials, key: 'secret-access-key' },
|
|
163
|
+
},
|
|
164
|
+
data: { compression: backup.compression ?? 'gzip' },
|
|
165
|
+
wal: {
|
|
166
|
+
compression: backup.compression ?? 'gzip',
|
|
167
|
+
encryption: backup.encryption ?? 'AES256',
|
|
168
|
+
},
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
}
|
|
172
|
+
: {}),
|
|
80
173
|
},
|
|
81
174
|
};
|
|
82
175
|
const connection = {
|
|
83
176
|
host: `${name}-rw`,
|
|
84
177
|
port: 5432,
|
|
85
|
-
database:
|
|
86
|
-
username:
|
|
178
|
+
database: databaseName,
|
|
179
|
+
username: ownerName,
|
|
87
180
|
passwordSecret: { name: secretName, key: 'password' },
|
|
88
181
|
passwordKey: 'password',
|
|
89
182
|
vendor: 'postgres',
|
|
@@ -92,12 +185,31 @@ function Database(props) {
|
|
|
92
185
|
resources.push((0, core_1.declareOperator)((0, operators_1.cnpgOperator)(operatorVersion)));
|
|
93
186
|
}
|
|
94
187
|
resources.push((0, core_1.jsx)('Cluster', cluster));
|
|
188
|
+
if (backup && backupCredentials) {
|
|
189
|
+
resources.push((0, core_1.jsx)('ScheduledBackup', {
|
|
190
|
+
apiVersion: 'postgresql.cnpg.io/v1',
|
|
191
|
+
kind: 'ScheduledBackup',
|
|
192
|
+
metadata: { name: `${name}-backup`, namespace },
|
|
193
|
+
spec: {
|
|
194
|
+
cluster: { name },
|
|
195
|
+
schedule: backup.schedule ?? '0 3 * * *',
|
|
196
|
+
backupOwnerReference: 'self',
|
|
197
|
+
},
|
|
198
|
+
}));
|
|
199
|
+
// Backend-provisioned S3 credentials for barman
|
|
200
|
+
if (!backup.credentialsSecret && secretProvider) {
|
|
201
|
+
resources.push(...createStaticSecretResource(`${name}-backup-credentials`, `${name}-backup-credentials`, namespace, secretProvider, `${secretProvider.path}/${name}-s3-credentials`, undefined));
|
|
202
|
+
}
|
|
203
|
+
}
|
|
95
204
|
// For dedicated clusters with a secrets backend, the backend manages
|
|
96
|
-
// credentials. For kubernetes backend, CNPG manages the
|
|
97
|
-
// automatically —
|
|
98
|
-
//
|
|
99
|
-
|
|
100
|
-
|
|
205
|
+
// credentials. For kubernetes/manual-secrets backend, CNPG manages the
|
|
206
|
+
// bootstrap secret automatically — no plaintext Secret is rendered.
|
|
207
|
+
// 'cnpg' credentialsMode: the operator generates the bootstrap secret
|
|
208
|
+
// in-cluster (incl. fqdn-uri) even when a secrets backend is present —
|
|
209
|
+
// apps referencing the CNPG-generated secret directly (e.g. paperclip's
|
|
210
|
+
// externalURLSecretRef) work without vault-stored DB credentials.
|
|
211
|
+
if (secretProvider && credentialsMode === 'backend') {
|
|
212
|
+
resources.push(...createSecretResources(name, namespace, secretName, secretProvider, 'dedicated', rolloutRestartTargets));
|
|
101
213
|
}
|
|
102
214
|
if (children) {
|
|
103
215
|
resources.push((0, core_1.jsx)(defaults_1.DatabaseContext.Provider, { value: connection, children }));
|
|
@@ -107,63 +219,34 @@ function Database(props) {
|
|
|
107
219
|
}
|
|
108
220
|
/**
|
|
109
221
|
* Create the secret resources for a database based on the active secrets
|
|
110
|
-
* backend.
|
|
111
|
-
*
|
|
222
|
+
* backend. Plaintext credentials are never rendered — backends either
|
|
223
|
+
* reference credentials stored externally (openbao/vault), hold
|
|
224
|
+
* user-sealed ciphertext (sealed-secrets), or delegate to CNPG's
|
|
225
|
+
* in-cluster bootstrap secret generation (kubernetes/manual-secrets on
|
|
226
|
+
* dedicated clusters).
|
|
112
227
|
*/
|
|
113
|
-
function createSecretResources(name, namespace, secretName, secretProvider,
|
|
228
|
+
function createSecretResources(name, namespace, secretName, secretProvider, mode, rolloutRestartTargets) {
|
|
114
229
|
const resources = [];
|
|
115
230
|
if (!secretProvider) {
|
|
116
|
-
if (
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
` <Platform secrets={{ backend: 'openbao' }}>\n` +
|
|
121
|
-
` <Database name="${name}" />\n` +
|
|
122
|
-
` </Platform>\n` +
|
|
123
|
-
`\n` +
|
|
124
|
-
`Or provide a password directly (not recommended for production):\n` +
|
|
125
|
-
` <Database name="${name}" password="..." />`);
|
|
231
|
+
if (mode === 'dedicated') {
|
|
232
|
+
// CNPG generates the bootstrap secret in-cluster — no credential
|
|
233
|
+
// in the rendered manifest at all.
|
|
234
|
+
return resources;
|
|
126
235
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
}));
|
|
137
|
-
return resources;
|
|
236
|
+
throw new Error(`Database "${name}" is attached to a shared Cluster without a secrets backend.\n` +
|
|
237
|
+
`\n` +
|
|
238
|
+
`CNPG only provisions credentials for databases on dedicated clusters, so a ` +
|
|
239
|
+
`shared-cluster database needs a managed secrets backend:\n` +
|
|
240
|
+
` <Platform secrets={{ backend: 'openbao', mount: 'kv', path: 'apps' }}>\n` +
|
|
241
|
+
` <Database name="${name}" />\n` +
|
|
242
|
+
` </Platform>\n` +
|
|
243
|
+
`\n` +
|
|
244
|
+
`Supported backends: 'openbao', 'vault', 'sealed-secrets', 'kubernetes', 'manual-secrets'`);
|
|
138
245
|
}
|
|
139
246
|
switch (secretProvider.backend) {
|
|
140
247
|
case 'vault':
|
|
141
|
-
resources.push((0, core_1.jsx)('VaultStaticSecret', {
|
|
142
|
-
apiVersion: 'secrets.hashicorp.com/v1beta1',
|
|
143
|
-
kind: 'VaultStaticSecret',
|
|
144
|
-
metadata: { name: `${name}-db-secret`, namespace },
|
|
145
|
-
spec: {
|
|
146
|
-
vaultAuthRef: secretProvider.authRef,
|
|
147
|
-
mount: secretProvider.mount,
|
|
148
|
-
type: 'kv-v2',
|
|
149
|
-
path: `${secretProvider.path}/${name}`,
|
|
150
|
-
destination: { create: true, name: secretName },
|
|
151
|
-
},
|
|
152
|
-
}));
|
|
153
|
-
break;
|
|
154
248
|
case 'openbao':
|
|
155
|
-
resources.push((
|
|
156
|
-
apiVersion: 'secrets.openbao.org/v1beta1',
|
|
157
|
-
kind: 'OpenBaoStaticSecret',
|
|
158
|
-
metadata: { name: `${name}-db-secret`, namespace },
|
|
159
|
-
spec: {
|
|
160
|
-
openbaoAuthRef: secretProvider.authRef,
|
|
161
|
-
mount: secretProvider.mount,
|
|
162
|
-
type: 'kv-v2',
|
|
163
|
-
path: `${secretProvider.path}/${name}`,
|
|
164
|
-
destination: { create: true, name: secretName },
|
|
165
|
-
},
|
|
166
|
-
}));
|
|
249
|
+
resources.push(...createStaticSecretResource(`${name}-db-secret`, secretName, namespace, secretProvider, `${secretProvider.path}/${name}`, rolloutRestartTargets));
|
|
167
250
|
break;
|
|
168
251
|
case 'sealed-secrets':
|
|
169
252
|
// Sealed Secrets: the user provides a sealed secret that was encrypted
|
|
@@ -182,31 +265,58 @@ function createSecretResources(name, namespace, secretName, secretProvider, pass
|
|
|
182
265
|
}));
|
|
183
266
|
break;
|
|
184
267
|
case 'kubernetes':
|
|
185
|
-
|
|
186
|
-
|
|
268
|
+
case 'manual-secrets':
|
|
269
|
+
// Plain Kubernetes Secrets — but the credential itself must never be
|
|
270
|
+
// in the rendered manifest. On dedicated clusters CNPG generates the
|
|
271
|
+
// bootstrap secret in-cluster; on shared clusters there is nothing to
|
|
272
|
+
// generate the credential, so a managed backend is required.
|
|
273
|
+
if (mode === 'shared') {
|
|
274
|
+
throw new Error(`Database "${name}" uses the '${secretProvider.backend}' secrets backend on a shared Cluster.\n` +
|
|
187
275
|
`\n` +
|
|
188
|
-
`
|
|
189
|
-
`
|
|
190
|
-
` <Platform secrets={{ backend: 'openbao' }}>\n` +
|
|
276
|
+
`Credentials for shared-cluster databases cannot be provisioned automatically. ` +
|
|
277
|
+
`Use a managed backend instead:\n` +
|
|
278
|
+
` <Platform secrets={{ backend: 'openbao', mount: 'kv', path: 'apps' }}>\n` +
|
|
279
|
+
` <Database name="${name}" />\n` +
|
|
280
|
+
` </Platform>\n` +
|
|
191
281
|
`\n` +
|
|
192
|
-
`
|
|
193
|
-
` <Database name="${name}" password="..." />`);
|
|
282
|
+
`Supported backends: 'openbao', 'vault', 'sealed-secrets', 'kubernetes', 'manual-secrets'`);
|
|
194
283
|
}
|
|
195
|
-
resources.push((0, core_1.jsx)('Secret', {
|
|
196
|
-
apiVersion: 'v1',
|
|
197
|
-
kind: 'Secret',
|
|
198
|
-
metadata: { name: secretName, namespace },
|
|
199
|
-
stringData: {
|
|
200
|
-
password,
|
|
201
|
-
username: name,
|
|
202
|
-
uri: `postgresql://${name}:${password}@${host}:5432/${name}`,
|
|
203
|
-
},
|
|
204
|
-
}));
|
|
205
284
|
break;
|
|
206
285
|
default:
|
|
207
286
|
throw new Error(`Database "${name}" has an unknown secrets backend "${secretProvider.backend}".\n` +
|
|
208
|
-
`Supported backends: 'openbao', 'vault', 'sealed-secrets', 'kubernetes'`);
|
|
287
|
+
`Supported backends: 'openbao', 'vault', 'sealed-secrets', 'kubernetes', 'manual-secrets'`);
|
|
209
288
|
}
|
|
210
289
|
return resources;
|
|
211
290
|
}
|
|
291
|
+
/**
|
|
292
|
+
* Render a VaultStaticSecret / OpenBaoStaticSecret syncing one backend entry
|
|
293
|
+
* into a Kubernetes Secret. Rotation semantics are first-class:
|
|
294
|
+
* `refreshAfter` comes from the provider (Platform secrets config),
|
|
295
|
+
* `rolloutRestartTargets` restarts consuming workloads on rotation.
|
|
296
|
+
* The secret content itself is never rendered into the manifest.
|
|
297
|
+
*
|
|
298
|
+
* Delegates to the shared provisioner in raw-sync mode (empty keys → the
|
|
299
|
+
* destination passes the whole store entry through — byte-identical to
|
|
300
|
+
* the legacy inline emission). Identity awareness lives ONLY in
|
|
301
|
+
* `secret-provider.tsx`.
|
|
302
|
+
*/
|
|
303
|
+
function createStaticSecretResource(resourceName, destinationName, namespace, secretProvider, vaultPath, rolloutRestartTargets) {
|
|
304
|
+
const targets = rolloutRestartTargets?.map((t) => ({
|
|
305
|
+
apiVersion: t.apiVersion ?? 'apps/v1',
|
|
306
|
+
kind: t.kind ?? 'Deployment',
|
|
307
|
+
name: t.name,
|
|
308
|
+
}));
|
|
309
|
+
const el = (0, secret_provider_1.provisionerForSecretProvider)(secretProvider)({
|
|
310
|
+
name: resourceName,
|
|
311
|
+
namespace,
|
|
312
|
+
path: vaultPath,
|
|
313
|
+
// Raw sync: callers (DB credentials, backup creds) don't enumerate
|
|
314
|
+
// store keys at render time — pass the whole entry through
|
|
315
|
+
keys: {},
|
|
316
|
+
secretName: destinationName,
|
|
317
|
+
refreshAfter: secretProvider.refreshAfter,
|
|
318
|
+
restartTargets: targets,
|
|
319
|
+
});
|
|
320
|
+
return Array.isArray(el) ? el : [el];
|
|
321
|
+
}
|
|
212
322
|
//# sourceMappingURL=database.js.map
|
package/dist/database.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.tsx"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.tsx"],"names":[],"mappings":"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"}
|
package/dist/dns-provider.js
CHANGED
|
@@ -102,7 +102,7 @@ function DnsProvider(props) {
|
|
|
102
102
|
: config.settings.tsig.path;
|
|
103
103
|
const SecretKind = secrets.backend === 'openbao' ? 'OpenBaoStaticSecret' : 'VaultStaticSecret';
|
|
104
104
|
resources.push((0, core_1.jsx)(SecretKind, {
|
|
105
|
-
apiVersion: 'secrets.hashicorp.com/
|
|
105
|
+
apiVersion: 'secrets.hashicorp.com/v1beta1',
|
|
106
106
|
kind: SecretKind,
|
|
107
107
|
metadata: { name: secretName, namespace: 'external-dns' },
|
|
108
108
|
spec: {
|
package/dist/dns-provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dns-provider.js","sourceRoot":"","sources":["../src/dns-provider.tsx"],"names":[],"mappings":";;;AA0CA,kCAKC;AA6ED,kCAqEC;AAjMD,oCAAsE;AACtE,iDAAkD;AAClD,iDAAmE;AACnE,oCAAqC;AAuCrC,SAAgB,WAAW,CAAC,KAAuB;IACjD,OAAO;QACL,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,KAAK;KAChB,CAAA;AACH,CAAC;AAaY,QAAA,UAAU,GAAG,IAAA,wBAAa,EAAmB,IAAI,CAAC,CAAA;AAmB/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,SAAgB,WAAW,CAAC,KAAuB;IACjD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAA;IAEpC,MAAM,eAAe,GAAG,IAAA,iBAAU,EAAC,0BAAe,CAAC,CAAA;IACnD,MAAM,OAAO,GAAG,IAAA,iBAAU,EAAC,wBAAa,CAAC,CAAA;IAEzC,0BAA0B;IAC1B,IAAI,MAAiB,CAAA;IACrB,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;IACrC,CAAC;SAAM,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC;QAClC,MAAM,GAAG,QAAQ,CAAA;IACnB,CAAC;SAAM,IACL,QAAQ;QACR,OAAO,QAAQ,KAAK,QAAQ;QAC5B,MAAM,IAAI,QAAQ;QACjB,QAAgB,CAAC,IAAI,KAAK,WAAW,EACtC,CAAC;QACD,sDAAsD;QACtD,MAAM,GAAG,WAAW,CAAE,QAAgB,CAAC,KAAK,CAAC,CAAA;IAC/C,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAA;IAC3D,CAAC;IAED,MAAM,SAAS,GAA6B,EAAE,CAAA;IAE9C,gCAAgC;IAChC,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,cAAc,CAAC,CAAA;IAC/E,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,SAAS,CAAC,IAAI,CAAC,IAAA,sBAAe,EAAC,gBAAS,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAA;IAC9D,CAAC;IAED,sBAAsB;IACtB,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,EAAE,CAAC;YAC/E,MAAM,IAAI,KAAK,CACb,+EAA+E;gBAC7E,YAAY,OAAO,EAAE,OAAO,IAAI,MAAM,IAAI;gBAC1C,kEAAkE,CACrE,CAAA;QACH,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,IAAI,mBAAmB,CAAA;QACzE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAA;QACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAA;QACnC,MAAM,QAAQ,GAAG,QAAQ;YACvB,CAAC,CAAC,GAAG,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE;YAC5C,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAA;QAE7B,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,mBAAmB,CAAA;QAC9F,SAAS,CAAC,IAAI,CACZ,IAAA,UAAG,EAAC,UAAU,EAAE;YACd,UAAU,EAAE
|
|
1
|
+
{"version":3,"file":"dns-provider.js","sourceRoot":"","sources":["../src/dns-provider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoint-provider.d.ts","sourceRoot":"","sources":["../src/endpoint-provider.tsx"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gCAAgC;IAChC,GAAG,CAAC,EAAE;QACJ,qCAAqC;QACrC,aAAa,CAAC,EAAE,MAAM,CAAA;KACvB,CAAA;CACF;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,CAQvD;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gCAAgC;IAChC,GAAG,CAAC,EAAE;QACJ,qCAAqC;QACrC,aAAa,CAAC,EAAE,MAAM,CAAA;KACvB,CAAA;CACF;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,cAAc,CAQrE;AAED,sCAAsC;AACtC,MAAM,WAAW,cAAc;IAC7B,6BAA6B;IAC7B,QAAQ,EAAE,OAAO,GAAG,eAAe,CAAA;IACnC,iCAAiC;IACjC,QAAQ,CAAC,EAAE;QACT,8CAA8C;QAC9C,gBAAgB,CAAC,EAAE,MAAM,CAAA;QACzB,sCAAsC;QACtC,gBAAgB,CAAC,EAAE,MAAM,CAAA;QACzB,gCAAgC;QAChC,GAAG,CAAC,EAAE;YACJ,aAAa,CAAC,EAAE,MAAM,CAAA;SACvB,CAAA;KACF,CAAA;CACF;AAED,oDAAoD;AACpD,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,eAAe,GAAG,cAAc,CAAA;AAE9E,eAAO,MAAM,eAAe,0DAAuD,CAAA;AAEnF,MAAM,WAAW,qBAAqB;IACpC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,QAAQ,EAAE,qBAAqB,CAAA;IAC/B,uBAAuB;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"endpoint-provider.d.ts","sourceRoot":"","sources":["../src/endpoint-provider.tsx"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gCAAgC;IAChC,GAAG,CAAC,EAAE;QACJ,qCAAqC;QACrC,aAAa,CAAC,EAAE,MAAM,CAAA;KACvB,CAAA;CACF;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,CAQvD;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gCAAgC;IAChC,GAAG,CAAC,EAAE;QACJ,qCAAqC;QACrC,aAAa,CAAC,EAAE,MAAM,CAAA;KACvB,CAAA;CACF;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,cAAc,CAQrE;AAED,sCAAsC;AACtC,MAAM,WAAW,cAAc;IAC7B,6BAA6B;IAC7B,QAAQ,EAAE,OAAO,GAAG,eAAe,CAAA;IACnC,iCAAiC;IACjC,QAAQ,CAAC,EAAE;QACT,8CAA8C;QAC9C,gBAAgB,CAAC,EAAE,MAAM,CAAA;QACzB,sCAAsC;QACtC,gBAAgB,CAAC,EAAE,MAAM,CAAA;QACzB,gCAAgC;QAChC,GAAG,CAAC,EAAE;YACJ,aAAa,CAAC,EAAE,MAAM,CAAA;SACvB,CAAA;KACF,CAAA;CACF;AAED,oDAAoD;AACpD,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,eAAe,GAAG,cAAc,CAAA;AAE9E,eAAO,MAAM,eAAe,0DAAuD,CAAA;AAEnF,MAAM,WAAW,qBAAqB;IACpC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,QAAQ,EAAE,qBAAqB,CAAA;IAC/B,uBAAuB;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,kCAiC5D"}
|
|
@@ -64,8 +64,28 @@ exports.EndpointContext = (0, defaults_1.createContext)({ provider: 'nginx' });
|
|
|
64
64
|
*/
|
|
65
65
|
function EndpointProvider(props) {
|
|
66
66
|
const { provider, children } = props;
|
|
67
|
-
// Resolve provider config
|
|
68
|
-
|
|
67
|
+
// Resolve provider config. Accepts:
|
|
68
|
+
// - string ('nginx' | 'envoy-gateway')
|
|
69
|
+
// - a plain EndpointConfig object
|
|
70
|
+
// - a JSX element of a provider component (e.g. <EnvoyGateway className="eg" />)
|
|
71
|
+
// — invoked here to produce its EndpointConfig
|
|
72
|
+
let config;
|
|
73
|
+
if (typeof provider === 'string') {
|
|
74
|
+
config = { provider };
|
|
75
|
+
}
|
|
76
|
+
else if (provider && typeof provider === 'object') {
|
|
77
|
+
const element = provider;
|
|
78
|
+
if (typeof element.type === 'function') {
|
|
79
|
+
const ProviderComponent = element.type;
|
|
80
|
+
config = ProviderComponent(element.props ?? {});
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
config = provider;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
config = provider;
|
|
88
|
+
}
|
|
69
89
|
// Map to RoutingContext for backward compatibility
|
|
70
90
|
const routing = {
|
|
71
91
|
mode: config.provider === 'envoy-gateway' ? 'gateway' : 'ingress',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoint-provider.js","sourceRoot":"","sources":["../src/endpoint-provider.tsx"],"names":[],"mappings":";;;AAsBA,sBAQC;AAoBD,oCAQC;AAyFD,
|
|
1
|
+
{"version":3,"file":"endpoint-provider.js","sourceRoot":"","sources":["../src/endpoint-provider.tsx"],"names":[],"mappings":";;;AAsBA,sBAQC;AAoBD,oCAQC;AAyFD,4CAiCC;AApLD,oCAA2C;AAC3C,iDAAkD;AAClD,iDAAmD;AAoBnD,SAAgB,KAAK,CAAC,KAAiB;IACrC,OAAO;QACL,QAAQ,EAAE,OAAO;QACjB,QAAQ,EAAE;YACR,gBAAgB,EAAE,KAAK,CAAC,SAAS,IAAI,OAAO;YAC5C,GAAG,EAAE,KAAK,CAAC,GAAG;SACf;KACF,CAAA;AACH,CAAC;AAoBD,SAAgB,YAAY,CAAC,KAAwB;IACnD,OAAO;QACL,QAAQ,EAAE,eAAe;QACzB,QAAQ,EAAE;YACR,gBAAgB,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;YACzC,GAAG,EAAE,KAAK,CAAC,GAAG;SACf;KACF,CAAA;AACH,CAAC;AAsBY,QAAA,eAAe,GAAG,IAAA,wBAAa,EAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;AA+BnF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,SAAgB,gBAAgB,CAAC,KAA4B;IAC3D,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAA;IAEpC,oCAAoC;IACpC,wCAAwC;IACxC,mCAAmC;IACnC,kFAAkF;IAClF,kDAAkD;IAClD,IAAI,MAAsB,CAAA;IAC1B,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,GAAG,EAAE,QAAQ,EAAE,CAAA;IACvB,CAAC;SAAM,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACpD,MAAM,OAAO,GAAG,QAA8C,CAAA;QAC9D,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACvC,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAqC,CAAA;YACvE,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;QACjD,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,QAA0B,CAAA;QACrC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,QAA0B,CAAA;IACrC,CAAC;IAED,mDAAmD;IACnD,MAAM,OAAO,GAAG;QACd,IAAI,EAAE,MAAM,CAAC,QAAQ,KAAK,eAAe,CAAC,CAAC,CAAE,SAAmB,CAAC,CAAC,CAAE,SAAmB;QACvF,gBAAgB,EAAE,MAAM,CAAC,QAAQ,EAAE,gBAAgB,IAAI,IAAI;KAC5D,CAAA;IAED,OAAO,IAAA,UAAG,EAAC,yBAAc,CAAC,QAAQ,EAAE;QAClC,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,IAAA,UAAG,EAAC,uBAAe,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;KACrE,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/endpoint.d.ts
CHANGED
|
@@ -6,10 +6,27 @@ export interface EndpointProps extends Omit<BaseRouteProps, 'host'> {
|
|
|
6
6
|
serviceName: string;
|
|
7
7
|
/** Service port (default: 80) */
|
|
8
8
|
servicePort?: number;
|
|
9
|
+
/**
|
|
10
|
+
* Request path to route (default: '/'). Path-based routes are rendered
|
|
11
|
+
* as Prefix paths in Ingress mode AND PathPrefix matches in Gateway
|
|
12
|
+
* (HTTPRoute) mode so one host can serve multiple services.
|
|
13
|
+
*/
|
|
14
|
+
path?: string;
|
|
15
|
+
/** Ingress pathType when `path` is set (default: 'Prefix') */
|
|
16
|
+
pathType?: 'Prefix' | 'Exact' | 'ImplementationSpecific';
|
|
9
17
|
/** Create a DNS record via ExternalDNS (default: false, or true when DnsProvider is set) */
|
|
10
18
|
dns?: boolean;
|
|
11
19
|
/** DNS record TTL in seconds (default: 300) */
|
|
12
20
|
dnsTtl?: number;
|
|
21
|
+
/**
|
|
22
|
+
* Reference to an existing shared Gateway instead of creating a new one.
|
|
23
|
+
* Set this to avoid allocating a new LoadBalancer IP per app.
|
|
24
|
+
* When set, only an HTTPRoute is created (no Gateway resource).
|
|
25
|
+
*/
|
|
26
|
+
sharedGateway?: {
|
|
27
|
+
name: string;
|
|
28
|
+
namespace?: string;
|
|
29
|
+
};
|
|
13
30
|
}
|
|
14
31
|
/**
|
|
15
32
|
* Endpoint — cluster-adaptive routing for a service.
|
|
@@ -39,5 +56,5 @@ export interface EndpointProps extends Omit<BaseRouteProps, 'host'> {
|
|
|
39
56
|
* </Platform>
|
|
40
57
|
* )
|
|
41
58
|
*/
|
|
42
|
-
export declare function Endpoint(props: EndpointProps):
|
|
59
|
+
export declare function Endpoint(props: EndpointProps): unknown;
|
|
43
60
|
//# sourceMappingURL=endpoint.d.ts.map
|
package/dist/endpoint.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoint.d.ts","sourceRoot":"","sources":["../src/endpoint.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"endpoint.d.ts","sourceRoot":"","sources":["../src/endpoint.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAQpD,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC;IACjE,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAA;IACZ,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAA;IACnB,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,wBAAwB,CAAA;IACxD,4FAA4F;IAC5F,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;OAIG;IACH,aAAa,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACrD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,WAoR5C"}
|