underpost 2.8.651 → 2.8.781
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/.vscode/extensions.json +37 -2
- package/.vscode/settings.json +2 -0
- package/CHANGELOG.md +24 -4
- package/README.md +5 -5
- package/bin/deploy.js +1455 -144
- package/bin/file.js +2 -4
- package/cli.md +57 -14
- package/docker-compose.yml +1 -1
- package/manifests/deployment/adminer/deployment.yaml +32 -0
- package/manifests/deployment/adminer/kustomization.yaml +7 -0
- package/manifests/deployment/adminer/service.yaml +13 -0
- package/manifests/deployment/fastapi/backend-deployment.yml +120 -0
- package/manifests/deployment/fastapi/backend-service.yml +19 -0
- package/manifests/deployment/fastapi/frontend-deployment.yml +54 -0
- package/manifests/deployment/fastapi/frontend-service.yml +15 -0
- package/manifests/deployment/fastapi/initial_data.sh +56 -0
- package/manifests/deployment/kafka/deployment.yaml +69 -0
- package/manifests/deployment/spark/spark-pi-py.yaml +21 -0
- package/manifests/envoy-service-nodeport.yaml +23 -0
- package/manifests/kubeadm-calico-config.yaml +119 -0
- package/manifests/kubelet-config.yaml +65 -0
- package/manifests/mongodb/kustomization.yaml +1 -1
- package/manifests/mongodb/statefulset.yaml +12 -11
- package/manifests/mongodb/storage-class.yaml +9 -0
- package/manifests/mongodb-4.4/service-deployment.yaml +1 -1
- package/manifests/mysql/kustomization.yaml +7 -0
- package/manifests/mysql/pv-pvc.yaml +27 -0
- package/manifests/mysql/statefulset.yaml +55 -0
- package/manifests/postgresql/configmap.yaml +9 -0
- package/manifests/postgresql/kustomization.yaml +10 -0
- package/manifests/postgresql/pv.yaml +15 -0
- package/manifests/postgresql/pvc.yaml +13 -0
- package/manifests/postgresql/service.yaml +10 -0
- package/manifests/postgresql/statefulset.yaml +37 -0
- package/manifests/valkey/statefulset.yaml +4 -3
- package/package.json +2 -1
- package/src/cli/cluster.js +281 -27
- package/src/cli/deploy.js +82 -13
- package/src/cli/fs.js +14 -3
- package/src/cli/image.js +34 -7
- package/src/cli/index.js +36 -1
- package/src/cli/lxd.js +19 -0
- package/src/cli/monitor.js +86 -38
- package/src/cli/repository.js +9 -6
- package/src/client/components/core/JoyStick.js +2 -2
- package/src/client/components/core/Modal.js +1 -0
- package/src/index.js +1 -1
- package/src/runtime/lampp/Dockerfile +1 -1
- package/src/server/conf.js +5 -1
- package/src/server/dns.js +47 -17
- package/src/server/runtime.js +2 -0
- package/src/server/start.js +0 -1
package/bin/file.js
CHANGED
|
@@ -139,12 +139,10 @@ try {
|
|
|
139
139
|
const splitKeyword = '## underpost ci/cd cli';
|
|
140
140
|
fs.writeFileSync(
|
|
141
141
|
`../pwa-microservices-template/README.md`,
|
|
142
|
-
fs.readFileSync(`../pwa-microservices-template/README.md`, 'utf8').
|
|
143
|
-
`<!-- -->`,
|
|
142
|
+
fs.readFileSync(`../pwa-microservices-template/README.md`, 'utf8').split(`<!-- -->`)[0] +
|
|
144
143
|
`<!-- -->
|
|
145
144
|
${splitKeyword + fs.readFileSync(`./README.md`, 'utf8').split(splitKeyword)[1]}`,
|
|
146
|
-
|
|
147
|
-
),
|
|
145
|
+
'utf8',
|
|
148
146
|
);
|
|
149
147
|
}
|
|
150
148
|
|
package/cli.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
## underpost ci/cd cli v2.8.
|
|
1
|
+
## underpost ci/cd cli v2.8.781
|
|
2
2
|
|
|
3
3
|
### Usage: `underpost [options] [command]`
|
|
4
4
|
```
|
|
@@ -10,17 +10,17 @@ Commands:
|
|
|
10
10
|
new <app-name> Create a new project
|
|
11
11
|
start [options] <deploy-id> [env] Start up server, build pipelines, or services
|
|
12
12
|
clone [options] <uri> Clone github repository
|
|
13
|
-
pull <path> <uri>
|
|
13
|
+
pull [options] <path> <uri> Pull github repository
|
|
14
14
|
cmt [options] <path> <commit-type> [module-tag] [message] Commit github repository
|
|
15
15
|
push [options] <path> <uri> Push github repository
|
|
16
16
|
env <deploy-id> [env] Set environment variables files and conf related to <deploy-id>
|
|
17
17
|
config <operator> [key] [value] Manage configuration, operators
|
|
18
18
|
root Get npm root path
|
|
19
19
|
cluster [options] [pod-name] Manage cluster, for default initialization base kind cluster
|
|
20
|
-
deploy [options]
|
|
20
|
+
deploy [options] [deploy-list] [env] Manage deployment, for default deploy development pods
|
|
21
21
|
secret [options] <platform> Manage secrets
|
|
22
22
|
dockerfile-image-build [options] Build image from Dockerfile
|
|
23
|
-
dockerfile-pull-base-images
|
|
23
|
+
dockerfile-pull-base-images [options] Pull underpost dockerfile images requirements
|
|
24
24
|
install Fast import underpost npm dependencies
|
|
25
25
|
db [options] <deploy-list> Manage databases
|
|
26
26
|
script [options] <operator> <script-name> [script-value] Supports a number of built-in underpost global scripts and their preset life cycle events as well as arbitrary scripts
|
|
@@ -28,6 +28,7 @@ Commands:
|
|
|
28
28
|
fs [options] [path] File storage management, for default upload file
|
|
29
29
|
test [options] [deploy-list] Manage Test, for default run current underpost default test
|
|
30
30
|
monitor [options] <deploy-id> [env] Monitor health server management
|
|
31
|
+
lxd [options] Lxd management
|
|
31
32
|
help [command] display help for command
|
|
32
33
|
|
|
33
34
|
```
|
|
@@ -79,6 +80,7 @@ Arguments:
|
|
|
79
80
|
|
|
80
81
|
Options:
|
|
81
82
|
--bare Clone only .git files
|
|
83
|
+
-g8 Use g8 repo extension
|
|
82
84
|
-h, --help display help for command
|
|
83
85
|
|
|
84
86
|
```
|
|
@@ -95,6 +97,7 @@ Arguments:
|
|
|
95
97
|
uri e.g. username/repository
|
|
96
98
|
|
|
97
99
|
Options:
|
|
100
|
+
-g8 Use g8 repo extension
|
|
98
101
|
-h, --help display help for command
|
|
99
102
|
|
|
100
103
|
```
|
|
@@ -134,6 +137,7 @@ Arguments:
|
|
|
134
137
|
|
|
135
138
|
Options:
|
|
136
139
|
-f Force push overwriting repository
|
|
140
|
+
-g8 Use g8 repo extension
|
|
137
141
|
-h, --help display help for command
|
|
138
142
|
|
|
139
143
|
```
|
|
@@ -196,18 +200,26 @@ Arguments:
|
|
|
196
200
|
Options:
|
|
197
201
|
--reset Delete all clusters and prune all data and caches
|
|
198
202
|
--mariadb Init with mariadb statefulset
|
|
203
|
+
--mysql Init with mysql statefulset
|
|
199
204
|
--mongodb Init with mongodb statefulset
|
|
205
|
+
--postgresql Init with postgresql statefulset
|
|
200
206
|
--mongodb4 Init with mongodb 4.4 service
|
|
207
|
+
--istio Init base istio cluster
|
|
201
208
|
--valkey Init with valkey service
|
|
202
209
|
--contour Init with project contour base HTTPProxy and envoy
|
|
203
210
|
--cert-manager Init with letsencrypt-prod ClusterIssuer
|
|
211
|
+
--dedicated-gpu Init with dedicated gpu base resources env
|
|
204
212
|
--info Get all kinds objects deployed
|
|
205
213
|
--full Init with all statefulsets and services available
|
|
206
214
|
--ns-use <ns-name> Switches current context to namespace
|
|
215
|
+
--kubeadm Init with kubeadm controlplane management
|
|
207
216
|
--dev init with dev cluster
|
|
208
217
|
--list-pods Display list pods information
|
|
209
218
|
--info-capacity display current total machine capacity info
|
|
210
219
|
--info-capacity-pod display current machine capacity pod info
|
|
220
|
+
--pull-image Set optional pull associated image
|
|
221
|
+
--init-host Install k8s node necessary cli env: kind, kubeadm,
|
|
222
|
+
docker, podman, helm
|
|
211
223
|
-h, --help display help for command
|
|
212
224
|
|
|
213
225
|
```
|
|
@@ -215,7 +227,7 @@ Options:
|
|
|
215
227
|
|
|
216
228
|
### `deploy` :
|
|
217
229
|
```
|
|
218
|
-
Usage: underpost deploy [options]
|
|
230
|
+
Usage: underpost deploy [options] [deploy-list] [env]
|
|
219
231
|
|
|
220
232
|
Manage deployment, for default deploy development pods
|
|
221
233
|
|
|
@@ -238,6 +250,13 @@ Options:
|
|
|
238
250
|
--replicas <replicas> Set custom number of replicas
|
|
239
251
|
--versions <deployment-versions> Comma separated custom deployment versions
|
|
240
252
|
--traffic <traffic-versions> Comma separated custom deployment traffic
|
|
253
|
+
--disable-update-deployment Disable update deployments
|
|
254
|
+
--info-traffic get traffic conf form current resources
|
|
255
|
+
deployments
|
|
256
|
+
--kubeadm Enable kubeadm context
|
|
257
|
+
--restore-hosts Restore defautl etc hosts
|
|
258
|
+
--rebuild-clients-bundle Inside container, rebuild clients bundle,
|
|
259
|
+
only static public or storage client files
|
|
241
260
|
-h, --help display help for command
|
|
242
261
|
|
|
243
262
|
```
|
|
@@ -274,6 +293,7 @@ Options:
|
|
|
274
293
|
--dockerfile-name [dockerfile-name] set Dockerfile name
|
|
275
294
|
--podman-save Export tar file from podman
|
|
276
295
|
--kind-load Import tar image to Kind cluster
|
|
296
|
+
--kubeadm-load Import tar image to Kubeadm cluster
|
|
277
297
|
--secrets Dockerfile env secrets
|
|
278
298
|
--secrets-path [secrets-path] Dockerfile custom path env secrets
|
|
279
299
|
--no-cache Build without using cache
|
|
@@ -289,7 +309,11 @@ Options:
|
|
|
289
309
|
Pull underpost dockerfile images requirements
|
|
290
310
|
|
|
291
311
|
Options:
|
|
292
|
-
|
|
312
|
+
--path [path] Dockerfile path
|
|
313
|
+
--kind-load Import tar image to Kind cluster
|
|
314
|
+
--kubeadm-load Import tar image to Kubeadm cluster
|
|
315
|
+
--version Set custom version
|
|
316
|
+
-h, --help display help for command
|
|
293
317
|
|
|
294
318
|
```
|
|
295
319
|
|
|
@@ -382,16 +406,17 @@ Options:
|
|
|
382
406
|
File storage management, for default upload file
|
|
383
407
|
|
|
384
408
|
Arguments:
|
|
385
|
-
path
|
|
409
|
+
path Absolute or relative directory
|
|
386
410
|
|
|
387
411
|
Options:
|
|
388
|
-
--rm
|
|
389
|
-
--git
|
|
390
|
-
--recursive
|
|
391
|
-
--deploy-id <deploy-id>
|
|
392
|
-
--pull
|
|
393
|
-
--force
|
|
394
|
-
-
|
|
412
|
+
--rm Remove file
|
|
413
|
+
--git Current git changes
|
|
414
|
+
--recursive Upload files recursively
|
|
415
|
+
--deploy-id <deploy-id> Deploy configuration id
|
|
416
|
+
--pull Download file
|
|
417
|
+
--force Force action
|
|
418
|
+
--storage-file-path <storage-file-path> custom file storage path
|
|
419
|
+
-h, --help display help for command
|
|
395
420
|
|
|
396
421
|
```
|
|
397
422
|
|
|
@@ -432,8 +457,26 @@ Options:
|
|
|
432
457
|
--ms-interval <ms-interval> Custom ms interval delta time
|
|
433
458
|
--now Exec immediately monitor script
|
|
434
459
|
--single Disable recurrence
|
|
460
|
+
--replicas <replicas> Set custom number of replicas
|
|
435
461
|
--type <type> Set custom monitor type
|
|
462
|
+
--sync Sync with current proxy deployments proxy
|
|
463
|
+
traffic
|
|
436
464
|
-h, --help display help for command
|
|
437
465
|
|
|
438
466
|
```
|
|
467
|
+
|
|
468
|
+
|
|
469
|
+
### `lxd` :
|
|
470
|
+
```
|
|
471
|
+
Usage: underpost lxd [options]
|
|
472
|
+
|
|
473
|
+
Lxd management
|
|
474
|
+
|
|
475
|
+
Options:
|
|
476
|
+
--init Init lxd
|
|
477
|
+
--reset Reset lxd on current machine
|
|
478
|
+
--install Install lxd on current machine
|
|
479
|
+
-h, --help display help for command
|
|
480
|
+
|
|
481
|
+
```
|
|
439
482
|
|
package/docker-compose.yml
CHANGED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
apiVersion: apps/v1
|
|
2
|
+
kind: Deployment
|
|
3
|
+
metadata:
|
|
4
|
+
name: adminer
|
|
5
|
+
labels:
|
|
6
|
+
app: adminer
|
|
7
|
+
group: db
|
|
8
|
+
spec:
|
|
9
|
+
replicas: 1
|
|
10
|
+
selector:
|
|
11
|
+
matchLabels:
|
|
12
|
+
app: adminer
|
|
13
|
+
template:
|
|
14
|
+
metadata:
|
|
15
|
+
labels:
|
|
16
|
+
app: adminer
|
|
17
|
+
group: db
|
|
18
|
+
spec:
|
|
19
|
+
containers:
|
|
20
|
+
- name: adminer
|
|
21
|
+
image: adminer:4.7.6-standalone
|
|
22
|
+
ports:
|
|
23
|
+
- containerPort: 8080
|
|
24
|
+
env:
|
|
25
|
+
- name: ADMINER_DESIGN
|
|
26
|
+
value: pepa-linha
|
|
27
|
+
- name: ADMINER_DEFAULT_SERVER
|
|
28
|
+
value: postgres
|
|
29
|
+
resources:
|
|
30
|
+
limits:
|
|
31
|
+
memory: '256Mi'
|
|
32
|
+
cpu: '500m'
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
apiVersion: apps/v1
|
|
2
|
+
kind: Deployment
|
|
3
|
+
metadata:
|
|
4
|
+
name: fastapi-backend
|
|
5
|
+
labels:
|
|
6
|
+
app: fastapi-backend
|
|
7
|
+
spec:
|
|
8
|
+
replicas: 2
|
|
9
|
+
selector:
|
|
10
|
+
matchLabels:
|
|
11
|
+
app: fastapi-backend
|
|
12
|
+
template:
|
|
13
|
+
metadata:
|
|
14
|
+
labels:
|
|
15
|
+
app: fastapi-backend
|
|
16
|
+
spec:
|
|
17
|
+
containers:
|
|
18
|
+
- name: fastapi-backend-container
|
|
19
|
+
image: localhost/fastapi-backend:latest
|
|
20
|
+
imagePullPolicy: IfNotPresent
|
|
21
|
+
|
|
22
|
+
ports:
|
|
23
|
+
- containerPort: 8000
|
|
24
|
+
name: http-api
|
|
25
|
+
|
|
26
|
+
env:
|
|
27
|
+
- name: POSTGRES_SERVER
|
|
28
|
+
value: postgres-service
|
|
29
|
+
- name: POSTGRES_PORT
|
|
30
|
+
value: '5432'
|
|
31
|
+
- name: POSTGRES_DB
|
|
32
|
+
valueFrom:
|
|
33
|
+
secretKeyRef:
|
|
34
|
+
name: fastapi-postgres-credentials
|
|
35
|
+
key: POSTGRES_DB
|
|
36
|
+
- name: POSTGRES_USER
|
|
37
|
+
valueFrom:
|
|
38
|
+
secretKeyRef:
|
|
39
|
+
name: fastapi-postgres-credentials
|
|
40
|
+
key: POSTGRES_USER
|
|
41
|
+
- name: POSTGRES_PASSWORD
|
|
42
|
+
valueFrom:
|
|
43
|
+
secretKeyRef:
|
|
44
|
+
name: fastapi-postgres-credentials
|
|
45
|
+
key: POSTGRES_PASSWORD
|
|
46
|
+
|
|
47
|
+
- name: PROJECT_NAME
|
|
48
|
+
value: 'Full Stack FastAPI Project'
|
|
49
|
+
- name: STACK_NAME
|
|
50
|
+
value: 'full-stack-fastapi-project'
|
|
51
|
+
|
|
52
|
+
- name: BACKEND_CORS_ORIGINS
|
|
53
|
+
value: 'http://localhost,http://localhost:5173,https://localhost,https://localhost:5173'
|
|
54
|
+
- name: SECRET_KEY
|
|
55
|
+
valueFrom:
|
|
56
|
+
secretKeyRef:
|
|
57
|
+
name: fastapi-backend-config-secret
|
|
58
|
+
key: SECRET_KEY
|
|
59
|
+
- name: FIRST_SUPERUSER
|
|
60
|
+
valueFrom:
|
|
61
|
+
secretKeyRef:
|
|
62
|
+
name: fastapi-backend-config-secret
|
|
63
|
+
key: FIRST_SUPERUSER
|
|
64
|
+
- name: FIRST_SUPERUSER_PASSWORD
|
|
65
|
+
valueFrom:
|
|
66
|
+
secretKeyRef:
|
|
67
|
+
name: fastapi-backend-config-secret
|
|
68
|
+
key: FIRST_SUPERUSER_PASSWORD
|
|
69
|
+
- name: USERS_OPEN_REGISTRATION
|
|
70
|
+
value: 'True'
|
|
71
|
+
|
|
72
|
+
# - name: SMTP_HOST
|
|
73
|
+
# valueFrom:
|
|
74
|
+
# secretKeyRef:
|
|
75
|
+
# name: fastapi-backend-config-secret
|
|
76
|
+
# key: SMTP_HOST
|
|
77
|
+
# - name: SMTP_USER
|
|
78
|
+
# valueFrom:
|
|
79
|
+
# secretKeyRef:
|
|
80
|
+
# name: fastapi-backend-config-secret
|
|
81
|
+
# key: SMTP_USER
|
|
82
|
+
# - name: SMTP_PASSWORD
|
|
83
|
+
# valueFrom:
|
|
84
|
+
# secretKeyRef:
|
|
85
|
+
# name: fastapi-backend-config-secret
|
|
86
|
+
# key: SMTP_PASSWORD
|
|
87
|
+
- name: EMAILS_FROM_EMAIL
|
|
88
|
+
value: 'info@example.com'
|
|
89
|
+
- name: SMTP_TLS
|
|
90
|
+
value: 'True'
|
|
91
|
+
- name: SMTP_SSL
|
|
92
|
+
value: 'False'
|
|
93
|
+
- name: SMTP_PORT
|
|
94
|
+
value: '587'
|
|
95
|
+
|
|
96
|
+
livenessProbe:
|
|
97
|
+
httpGet:
|
|
98
|
+
path: /docs
|
|
99
|
+
port: 8000
|
|
100
|
+
initialDelaySeconds: 30
|
|
101
|
+
periodSeconds: 20
|
|
102
|
+
timeoutSeconds: 10
|
|
103
|
+
failureThreshold: 3
|
|
104
|
+
|
|
105
|
+
readinessProbe:
|
|
106
|
+
httpGet:
|
|
107
|
+
path: /docs
|
|
108
|
+
port: 8000
|
|
109
|
+
initialDelaySeconds: 30
|
|
110
|
+
periodSeconds: 20
|
|
111
|
+
timeoutSeconds: 10
|
|
112
|
+
failureThreshold: 3
|
|
113
|
+
|
|
114
|
+
resources:
|
|
115
|
+
requests:
|
|
116
|
+
cpu: 200m
|
|
117
|
+
memory: 256Mi
|
|
118
|
+
limits:
|
|
119
|
+
cpu: 1000m
|
|
120
|
+
memory: 1Gi
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
apiVersion: v1
|
|
2
|
+
kind: Service
|
|
3
|
+
metadata:
|
|
4
|
+
name: fastapi-backend-service
|
|
5
|
+
labels:
|
|
6
|
+
app: fastapi-backend
|
|
7
|
+
spec:
|
|
8
|
+
selector:
|
|
9
|
+
app: fastapi-backend
|
|
10
|
+
ports:
|
|
11
|
+
- name: 'tcp-8000'
|
|
12
|
+
protocol: TCP
|
|
13
|
+
port: 8000
|
|
14
|
+
targetPort: 8000
|
|
15
|
+
- name: 'udp-8000'
|
|
16
|
+
protocol: UDP
|
|
17
|
+
port: 8000
|
|
18
|
+
targetPort: 8000
|
|
19
|
+
type: ClusterIP
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
apiVersion: apps/v1
|
|
2
|
+
kind: Deployment
|
|
3
|
+
metadata:
|
|
4
|
+
name: react-frontend
|
|
5
|
+
labels:
|
|
6
|
+
app: react-frontend
|
|
7
|
+
spec:
|
|
8
|
+
replicas: 2
|
|
9
|
+
selector:
|
|
10
|
+
matchLabels:
|
|
11
|
+
app: react-frontend
|
|
12
|
+
template:
|
|
13
|
+
metadata:
|
|
14
|
+
labels:
|
|
15
|
+
app: react-frontend
|
|
16
|
+
spec:
|
|
17
|
+
containers:
|
|
18
|
+
- name: react-frontend-container
|
|
19
|
+
image: localhost/fastapi-frontend:latest
|
|
20
|
+
imagePullPolicy: IfNotPresent
|
|
21
|
+
|
|
22
|
+
ports:
|
|
23
|
+
- containerPort: 80
|
|
24
|
+
name: http-web
|
|
25
|
+
|
|
26
|
+
env:
|
|
27
|
+
- name: VITE_FASTAPI_URL
|
|
28
|
+
value: '/api'
|
|
29
|
+
|
|
30
|
+
livenessProbe:
|
|
31
|
+
httpGet:
|
|
32
|
+
path: /
|
|
33
|
+
port: 80
|
|
34
|
+
initialDelaySeconds: 5
|
|
35
|
+
periodSeconds: 10
|
|
36
|
+
timeoutSeconds: 3
|
|
37
|
+
failureThreshold: 3
|
|
38
|
+
|
|
39
|
+
readinessProbe:
|
|
40
|
+
httpGet:
|
|
41
|
+
path: /
|
|
42
|
+
port: 80
|
|
43
|
+
initialDelaySeconds: 3
|
|
44
|
+
periodSeconds: 5
|
|
45
|
+
timeoutSeconds: 3
|
|
46
|
+
failureThreshold: 3
|
|
47
|
+
|
|
48
|
+
resources:
|
|
49
|
+
requests:
|
|
50
|
+
cpu: 100m
|
|
51
|
+
memory: 128Mi
|
|
52
|
+
limits:
|
|
53
|
+
cpu: 500m
|
|
54
|
+
memory: 512Mi
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# IMPORTANT: For non-interactive scripts, 'conda activate' can be problematic
|
|
4
|
+
# because it relies on the shell's initialization.
|
|
5
|
+
# A more robust and recommended way to run commands within a Conda environment
|
|
6
|
+
# from a script is to use 'conda run'. This command directly executes a process
|
|
7
|
+
# in the specified environment without needing to manually source 'conda.sh'.
|
|
8
|
+
|
|
9
|
+
# Navigate to the application's root directory for module discovery.
|
|
10
|
+
# This is crucial for Python to correctly find your 'app' module using 'python -m'.
|
|
11
|
+
#
|
|
12
|
+
# Let's assume a common project structure:
|
|
13
|
+
# full-stack-fastapi-template/
|
|
14
|
+
# ├── backend/
|
|
15
|
+
# │ ├── app/
|
|
16
|
+
# │ │ └── initial_data.py (the Python script you want to run)
|
|
17
|
+
# │ └── initial_data.sh (this shell script)
|
|
18
|
+
# └── ...
|
|
19
|
+
#
|
|
20
|
+
# If `initial_data.sh` is located in `full-stack-fastapi-template/backend/`,
|
|
21
|
+
# and `app` is a subdirectory of `backend/`, then the Python command
|
|
22
|
+
# `python -m app.initial_data` needs to be executed from the `backend/` directory.
|
|
23
|
+
#
|
|
24
|
+
# If you are running this shell script from a different directory (e.g., `engine/`),
|
|
25
|
+
# Python's module import system won't automatically find 'app' unless the parent
|
|
26
|
+
# directory of 'app' is in the `PYTHONPATH` or you change the current working directory.
|
|
27
|
+
#
|
|
28
|
+
# The safest way is to change the current working directory to the script's location.
|
|
29
|
+
|
|
30
|
+
# Store the current directory to return to it later if needed (good practice for multi-step scripts).
|
|
31
|
+
CURRENT_DIR=$(pwd)
|
|
32
|
+
|
|
33
|
+
# Get the absolute path of the directory where this script is located.
|
|
34
|
+
# This is a robust way to ensure we always navigate to the correct 'backend' directory.
|
|
35
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
|
|
36
|
+
cd "$SCRIPT_DIR"
|
|
37
|
+
|
|
38
|
+
# Execute your Python script within the specified Conda environment using 'conda run'.
|
|
39
|
+
# -n fastapi_env specifies the Conda environment to use.
|
|
40
|
+
# This completely avoids the 'source conda.sh' issue and is generally more reliable.
|
|
41
|
+
conda run -n fastapi_env python -m app.initial_data
|
|
42
|
+
|
|
43
|
+
# Important Note: The 'ModuleNotFoundError: No module named 'sqlmodel'' indicates that
|
|
44
|
+
# the 'sqlmodel' package is not installed in your 'fastapi_env' Conda environment.
|
|
45
|
+
# After running this script, if you still get the 'sqlmodel' error,
|
|
46
|
+
# you will need to activate your environment manually and install it:
|
|
47
|
+
#
|
|
48
|
+
# conda activate fastapi_env
|
|
49
|
+
# pip install sqlmodel
|
|
50
|
+
# # or if it's a conda package:
|
|
51
|
+
# # conda install sqlmodel
|
|
52
|
+
#
|
|
53
|
+
# Then try running this script again.
|
|
54
|
+
|
|
55
|
+
# Optional Good Practice: Return to the original directory if the script is part of a larger workflow.
|
|
56
|
+
cd "$CURRENT_DIR"
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
apiVersion: apps/v1
|
|
2
|
+
kind: StatefulSet
|
|
3
|
+
metadata:
|
|
4
|
+
name: kafka
|
|
5
|
+
namespace: kafka
|
|
6
|
+
labels:
|
|
7
|
+
app: kafka-app
|
|
8
|
+
spec:
|
|
9
|
+
serviceName: kafka-svc
|
|
10
|
+
replicas: 3
|
|
11
|
+
selector:
|
|
12
|
+
matchLabels:
|
|
13
|
+
app: kafka-app
|
|
14
|
+
template:
|
|
15
|
+
metadata:
|
|
16
|
+
labels:
|
|
17
|
+
app: kafka-app
|
|
18
|
+
spec:
|
|
19
|
+
containers:
|
|
20
|
+
- name: kafka-container
|
|
21
|
+
image: doughgle/kafka-kraft
|
|
22
|
+
ports:
|
|
23
|
+
- containerPort: 9092
|
|
24
|
+
- containerPort: 9093
|
|
25
|
+
env:
|
|
26
|
+
- name: REPLICAS
|
|
27
|
+
value: '3'
|
|
28
|
+
- name: SERVICE
|
|
29
|
+
value: kafka-svc
|
|
30
|
+
- name: NAMESPACE
|
|
31
|
+
value: kafka
|
|
32
|
+
- name: SHARE_DIR
|
|
33
|
+
value: /mnt/kafka
|
|
34
|
+
- name: CLUSTER_ID
|
|
35
|
+
value: bXktY2x1c3Rlci0xMjM0NQ==
|
|
36
|
+
- name: DEFAULT_REPLICATION_FACTOR
|
|
37
|
+
value: '3'
|
|
38
|
+
- name: DEFAULT_MIN_INSYNC_REPLICAS
|
|
39
|
+
value: '2'
|
|
40
|
+
volumeMounts:
|
|
41
|
+
- name: data
|
|
42
|
+
mountPath: /mnt/kafka
|
|
43
|
+
volumeClaimTemplates:
|
|
44
|
+
- metadata:
|
|
45
|
+
name: data
|
|
46
|
+
spec:
|
|
47
|
+
accessModes:
|
|
48
|
+
- 'ReadWriteOnce'
|
|
49
|
+
resources:
|
|
50
|
+
requests:
|
|
51
|
+
storage: '1Gi'
|
|
52
|
+
---
|
|
53
|
+
apiVersion: v1
|
|
54
|
+
kind: Service
|
|
55
|
+
metadata:
|
|
56
|
+
name: kafka-svc
|
|
57
|
+
namespace: kafka
|
|
58
|
+
labels:
|
|
59
|
+
app: kafka-app
|
|
60
|
+
spec:
|
|
61
|
+
type: NodePort
|
|
62
|
+
ports:
|
|
63
|
+
- name: '9092'
|
|
64
|
+
port: 9092
|
|
65
|
+
protocol: TCP
|
|
66
|
+
targetPort: 9092
|
|
67
|
+
nodePort: 30092
|
|
68
|
+
selector:
|
|
69
|
+
app: kafka-app
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
apiVersion: sparkoperator.k8s.io/v1beta2
|
|
2
|
+
kind: SparkApplication
|
|
3
|
+
metadata:
|
|
4
|
+
name: spark-pi-python
|
|
5
|
+
namespace: default
|
|
6
|
+
spec:
|
|
7
|
+
type: Python
|
|
8
|
+
pythonVersion: '3'
|
|
9
|
+
mode: cluster
|
|
10
|
+
image: spark:3.5.5
|
|
11
|
+
imagePullPolicy: IfNotPresent
|
|
12
|
+
mainApplicationFile: local:///opt/spark/examples/src/main/python/pi.py
|
|
13
|
+
sparkVersion: 3.5.5
|
|
14
|
+
driver:
|
|
15
|
+
cores: 1
|
|
16
|
+
memory: 512m
|
|
17
|
+
serviceAccount: spark-operator-spark
|
|
18
|
+
executor:
|
|
19
|
+
instances: 1
|
|
20
|
+
cores: 1
|
|
21
|
+
memory: 512m
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
apiVersion: v1
|
|
2
|
+
kind: Service
|
|
3
|
+
metadata:
|
|
4
|
+
labels:
|
|
5
|
+
app: envoy
|
|
6
|
+
name: envoy
|
|
7
|
+
namespace: projectcontour
|
|
8
|
+
spec:
|
|
9
|
+
externalTrafficPolicy: Cluster
|
|
10
|
+
ports:
|
|
11
|
+
- name: http
|
|
12
|
+
nodePort: 30080
|
|
13
|
+
port: 80
|
|
14
|
+
protocol: TCP
|
|
15
|
+
targetPort: 8080
|
|
16
|
+
- name: https
|
|
17
|
+
nodePort: 30443
|
|
18
|
+
port: 443
|
|
19
|
+
protocol: TCP
|
|
20
|
+
targetPort: 8443
|
|
21
|
+
selector:
|
|
22
|
+
app: envoy
|
|
23
|
+
type: NodePort
|