@r8s/superset 0.1.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/index.d.ts +73 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +195 -0
- package/dist/index.js.map +1 -0
- package/package.json +45 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
export interface SupersetProps {
|
|
2
|
+
/** Resource name */
|
|
3
|
+
name?: string;
|
|
4
|
+
/** Kubernetes namespace */
|
|
5
|
+
namespace?: string;
|
|
6
|
+
/** Superset version (default: 4.0.0) */
|
|
7
|
+
version?: string;
|
|
8
|
+
/** Hostname for Superset */
|
|
9
|
+
host: string;
|
|
10
|
+
/** Database connection */
|
|
11
|
+
database: {
|
|
12
|
+
host: string;
|
|
13
|
+
database: string;
|
|
14
|
+
user: string;
|
|
15
|
+
passwordSecret: string;
|
|
16
|
+
passwordKey?: string;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Redis connection. Either point at an existing Redis (`host`) or let
|
|
20
|
+
* the component create a managed RedisCluster (`create: true`).
|
|
21
|
+
*/
|
|
22
|
+
redis: {
|
|
23
|
+
host: string;
|
|
24
|
+
port?: number;
|
|
25
|
+
create?: false;
|
|
26
|
+
} | {
|
|
27
|
+
create: true;
|
|
28
|
+
host?: string;
|
|
29
|
+
port?: number;
|
|
30
|
+
};
|
|
31
|
+
/** Admin credentials secret */
|
|
32
|
+
adminSecret: string;
|
|
33
|
+
/** Number of replicas (default: 1) */
|
|
34
|
+
replicas?: number;
|
|
35
|
+
/** Resources */
|
|
36
|
+
resources?: {
|
|
37
|
+
requests?: {
|
|
38
|
+
cpu?: string;
|
|
39
|
+
memory?: string;
|
|
40
|
+
};
|
|
41
|
+
limits?: {
|
|
42
|
+
cpu?: string;
|
|
43
|
+
memory?: string;
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
/** TLS config */
|
|
47
|
+
tls?: {
|
|
48
|
+
secretName: string;
|
|
49
|
+
clusterIssuer: string;
|
|
50
|
+
};
|
|
51
|
+
/** OAuth config for Keycloak */
|
|
52
|
+
oauth?: {
|
|
53
|
+
clientId: string;
|
|
54
|
+
clientSecret: string;
|
|
55
|
+
keycloakUrl: string;
|
|
56
|
+
realm?: string;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Apache Superset analytics and visualization platform.
|
|
61
|
+
* Deploys without operator — native Kubernetes resources only.
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* <Superset
|
|
65
|
+
* host="superset.example.com"
|
|
66
|
+
* database={{ host: "superset-db-rw", database: "superset", user: "superset", passwordSecret: "superset-db-credentials" }}
|
|
67
|
+
* redis={{ host: "redis-master" }}
|
|
68
|
+
* adminSecret="superset-admin"
|
|
69
|
+
* tls={{ secretName: "superset-tls", clusterIssuer: "letsencrypt" }}
|
|
70
|
+
* />
|
|
71
|
+
*/
|
|
72
|
+
export declare function Superset(props: SupersetProps): import("@r8s/core").r8sElement;
|
|
73
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC5B,oBAAoB;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,0BAA0B;IAC1B,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAA;QACZ,QAAQ,EAAE,MAAM,CAAA;QAChB,IAAI,EAAE,MAAM,CAAA;QACZ,cAAc,EAAE,MAAM,CAAA;QACtB,WAAW,CAAC,EAAE,MAAM,CAAA;KACrB,CAAA;IACD;;;OAGG;IACH,KAAK,EACH;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,KAAK,CAAA;KAAE,GAAG;QAAE,MAAM,EAAE,IAAI,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAClG,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAA;IACnB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gBAAgB;IAChB,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,iBAAiB;IACjB,GAAG,CAAC,EAAE;QACJ,UAAU,EAAE,MAAM,CAAA;QAClB,aAAa,EAAE,MAAM,CAAA;KACtB,CAAA;IACD,gCAAgC;IAChC,KAAK,CAAC,EAAE;QACN,QAAQ,EAAE,MAAM,CAAA;QAChB,YAAY,EAAE,MAAM,CAAA;QACpB,WAAW,EAAE,MAAM,CAAA;QACnB,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;CACF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,kCA+M5C"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Superset = Superset;
|
|
4
|
+
const core_1 = require("@r8s/core");
|
|
5
|
+
const defaults_1 = require("@r8s/core/defaults");
|
|
6
|
+
const crds_1 = require("@r8s/crds");
|
|
7
|
+
const redis_1 = require("@r8s/crds/redis");
|
|
8
|
+
/**
|
|
9
|
+
* Apache Superset analytics and visualization platform.
|
|
10
|
+
* Deploys without operator — native Kubernetes resources only.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* <Superset
|
|
14
|
+
* host="superset.example.com"
|
|
15
|
+
* database={{ host: "superset-db-rw", database: "superset", user: "superset", passwordSecret: "superset-db-credentials" }}
|
|
16
|
+
* redis={{ host: "redis-master" }}
|
|
17
|
+
* adminSecret="superset-admin"
|
|
18
|
+
* tls={{ secretName: "superset-tls", clusterIssuer: "letsencrypt" }}
|
|
19
|
+
* />
|
|
20
|
+
*/
|
|
21
|
+
function Superset(props) {
|
|
22
|
+
const { name = 'superset', namespace = 'superset', version = '4.0.0', host, database, redis, adminSecret, replicas = 1, resources = {
|
|
23
|
+
requests: { cpu: '250m', memory: '1Gi' },
|
|
24
|
+
limits: { cpu: '1000m', memory: '2Gi' },
|
|
25
|
+
}, tls, oauth, } = props;
|
|
26
|
+
const resources_list = [];
|
|
27
|
+
// Namespace
|
|
28
|
+
resources_list.push((0, core_1.jsx)('Namespace', {
|
|
29
|
+
apiVersion: 'v1',
|
|
30
|
+
kind: 'Namespace',
|
|
31
|
+
metadata: { name: namespace },
|
|
32
|
+
}));
|
|
33
|
+
// Managed Redis — without this the Superset config references a Redis
|
|
34
|
+
// host that doesn't exist and the pod crash-loops.
|
|
35
|
+
let redisHost;
|
|
36
|
+
let redisPort;
|
|
37
|
+
if ('create' in redis && redis.create) {
|
|
38
|
+
const sharedOperators = (0, core_1.useContext)(defaults_1.OperatorContext);
|
|
39
|
+
const hasRedis = sharedOperators.some((op) => op.name === 'redis-operator');
|
|
40
|
+
if (!hasRedis) {
|
|
41
|
+
resources_list.push((0, core_1.declareOperator)(crds_1.operators['redis-operator']()));
|
|
42
|
+
}
|
|
43
|
+
const redisName = `${name}-redis`;
|
|
44
|
+
resources_list.push((0, redis_1.RedisClusterComponent)({
|
|
45
|
+
metadata: { name: redisName, namespace },
|
|
46
|
+
spec: {
|
|
47
|
+
clusterSize: 3,
|
|
48
|
+
kubernetesConfig: { image: 'redis:7.2-alpine' },
|
|
49
|
+
storage: {
|
|
50
|
+
volumeClaimTemplate: {
|
|
51
|
+
spec: {
|
|
52
|
+
accessModes: ['ReadWriteOnce'],
|
|
53
|
+
resources: { requests: { storage: '1Gi' } },
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
}));
|
|
59
|
+
redisHost = redis.host ?? `${redisName}.${namespace}.svc.cluster.local`;
|
|
60
|
+
redisPort = redis.port ?? 6379;
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
redisHost = redis.host;
|
|
64
|
+
redisPort = redis.port ?? 6379;
|
|
65
|
+
}
|
|
66
|
+
// ConfigMap for superset_config.py
|
|
67
|
+
const configScript = `
|
|
68
|
+
import os
|
|
69
|
+
|
|
70
|
+
SECRET_KEY = os.environ.get('SUPERSET_SECRET_KEY', 'change-me')
|
|
71
|
+
SQLALCHEMY_DATABASE_URI = f"postgresql://{os.environ['DB_USER']}:{os.environ['DB_PASS']}@{os.environ['DB_HOST']}/{os.environ['DB_NAME']}"
|
|
72
|
+
CACHE_CONFIG = {
|
|
73
|
+
'CACHE_TYPE': 'RedisCache',
|
|
74
|
+
'CACHE_DEFAULT_TIMEOUT': 300,
|
|
75
|
+
'CACHE_KEY_PREFIX': 'superset_',
|
|
76
|
+
'CACHE_REDIS_HOST': os.environ.get('REDIS_HOST', 'localhost'),
|
|
77
|
+
'CACHE_REDIS_PORT': int(os.environ.get('REDIS_PORT', '6379')),
|
|
78
|
+
}
|
|
79
|
+
`;
|
|
80
|
+
resources_list.push((0, core_1.jsx)('ConfigMap', {
|
|
81
|
+
apiVersion: 'v1',
|
|
82
|
+
kind: 'ConfigMap',
|
|
83
|
+
metadata: { name: `${name}-config`, namespace },
|
|
84
|
+
data: {
|
|
85
|
+
'superset_config.py': configScript,
|
|
86
|
+
},
|
|
87
|
+
}));
|
|
88
|
+
// Deployment
|
|
89
|
+
resources_list.push((0, core_1.jsx)('Deployment', {
|
|
90
|
+
apiVersion: 'apps/v1',
|
|
91
|
+
kind: 'Deployment',
|
|
92
|
+
metadata: { name, namespace },
|
|
93
|
+
spec: {
|
|
94
|
+
replicas,
|
|
95
|
+
selector: { matchLabels: { app: name } },
|
|
96
|
+
template: {
|
|
97
|
+
metadata: { labels: { app: name } },
|
|
98
|
+
spec: {
|
|
99
|
+
containers: [
|
|
100
|
+
{
|
|
101
|
+
name: 'superset',
|
|
102
|
+
image: `apache/superset:${version}`,
|
|
103
|
+
ports: [{ containerPort: 8088, name: 'http' }],
|
|
104
|
+
env: [
|
|
105
|
+
{
|
|
106
|
+
name: 'SUPERSET_SECRET_KEY',
|
|
107
|
+
valueFrom: { secretKeyRef: { name: adminSecret, key: 'secretKey' } },
|
|
108
|
+
},
|
|
109
|
+
{ name: 'DB_HOST', value: database.host },
|
|
110
|
+
{ name: 'DB_NAME', value: database.database },
|
|
111
|
+
{ name: 'DB_USER', value: database.user },
|
|
112
|
+
{
|
|
113
|
+
name: 'DB_PASS',
|
|
114
|
+
valueFrom: {
|
|
115
|
+
secretKeyRef: {
|
|
116
|
+
name: database.passwordSecret,
|
|
117
|
+
key: database.passwordKey || 'password',
|
|
118
|
+
},
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
{ name: 'REDIS_HOST', value: redisHost },
|
|
122
|
+
{ name: 'REDIS_PORT', value: String(redisPort) },
|
|
123
|
+
...(oauth
|
|
124
|
+
? [
|
|
125
|
+
{ name: 'KEYCLOAK_CLIENT_ID', value: oauth.clientId },
|
|
126
|
+
{ name: 'KEYCLOAK_CLIENT_SECRET', value: oauth.clientSecret },
|
|
127
|
+
{ name: 'KEYCLOAK_BASE_URL', value: oauth.keycloakUrl },
|
|
128
|
+
]
|
|
129
|
+
: []),
|
|
130
|
+
],
|
|
131
|
+
volumeMounts: [{ name: 'config', mountPath: '/app/pythonpath', readOnly: true }],
|
|
132
|
+
resources,
|
|
133
|
+
},
|
|
134
|
+
],
|
|
135
|
+
volumes: [{ name: 'config', configMap: { name: `${name}-config` } }],
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
},
|
|
139
|
+
}));
|
|
140
|
+
// Service
|
|
141
|
+
resources_list.push((0, core_1.jsx)('Service', {
|
|
142
|
+
apiVersion: 'v1',
|
|
143
|
+
kind: 'Service',
|
|
144
|
+
metadata: { name, namespace },
|
|
145
|
+
spec: {
|
|
146
|
+
selector: { app: name },
|
|
147
|
+
ports: [{ port: 80, targetPort: 8088 }],
|
|
148
|
+
},
|
|
149
|
+
}));
|
|
150
|
+
// Ingress
|
|
151
|
+
const ingressSpec = {
|
|
152
|
+
rules: [
|
|
153
|
+
{
|
|
154
|
+
host,
|
|
155
|
+
http: {
|
|
156
|
+
paths: [
|
|
157
|
+
{
|
|
158
|
+
path: '/',
|
|
159
|
+
pathType: 'Prefix',
|
|
160
|
+
backend: {
|
|
161
|
+
service: { name, port: { number: 80 } },
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
],
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
],
|
|
168
|
+
};
|
|
169
|
+
if (tls) {
|
|
170
|
+
ingressSpec.tls = [
|
|
171
|
+
{
|
|
172
|
+
hosts: [host],
|
|
173
|
+
secretName: tls.secretName,
|
|
174
|
+
},
|
|
175
|
+
];
|
|
176
|
+
}
|
|
177
|
+
resources_list.push((0, core_1.jsx)('Ingress', {
|
|
178
|
+
apiVersion: 'networking.k8s.io/v1',
|
|
179
|
+
kind: 'Ingress',
|
|
180
|
+
metadata: {
|
|
181
|
+
name,
|
|
182
|
+
namespace,
|
|
183
|
+
annotations: tls
|
|
184
|
+
? {
|
|
185
|
+
'cert-manager.io/cluster-issuer': tls.clusterIssuer,
|
|
186
|
+
'nginx.ingress.kubernetes.io/proxy-body-size': '50m',
|
|
187
|
+
'nginx.ingress.kubernetes.io/proxy-read-timeout': '300',
|
|
188
|
+
}
|
|
189
|
+
: undefined,
|
|
190
|
+
},
|
|
191
|
+
spec: ingressSpec,
|
|
192
|
+
}));
|
|
193
|
+
return (0, core_1.jsx)(core_1.Fragment, { children: resources_list });
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@r8s/superset",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Apache Superset analytics and visualization platform components for r8s",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "Berget AI AB",
|
|
7
|
+
"homepage": "https://r8s.berget.ai",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/berget-ai/r8s.git",
|
|
11
|
+
"directory": "packages/superset"
|
|
12
|
+
},
|
|
13
|
+
"bugs": "https://github.com/berget-ai/r8s/issues",
|
|
14
|
+
"publishConfig": {
|
|
15
|
+
"access": "public"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist"
|
|
19
|
+
],
|
|
20
|
+
"keywords": [
|
|
21
|
+
"superset",
|
|
22
|
+
"bi",
|
|
23
|
+
"analytics",
|
|
24
|
+
"dashboards",
|
|
25
|
+
"data"
|
|
26
|
+
],
|
|
27
|
+
"r8s": {
|
|
28
|
+
"category": "Data & Analytics"
|
|
29
|
+
},
|
|
30
|
+
"main": "./dist/index.js",
|
|
31
|
+
"types": "./dist/index.d.ts",
|
|
32
|
+
"scripts": {
|
|
33
|
+
"build": "tsc --build",
|
|
34
|
+
"test": "vitest run",
|
|
35
|
+
"clean": "rm -rf dist tsconfig.tsbuildinfo"
|
|
36
|
+
},
|
|
37
|
+
"dependencies": {
|
|
38
|
+
"@r8s/core": "^0.1.0",
|
|
39
|
+
"@r8s/k8s-types": "^0.1.0"
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"typescript": "^5.3.0",
|
|
43
|
+
"vitest": "^1.0.0"
|
|
44
|
+
}
|
|
45
|
+
}
|