@leverege/build-tools 2.8.11 → 2.8.12
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/lib/server/repo-init/RepoInit.js +3 -4
- package/lib/server/repo-init/config.tgz +0 -0
- package/lib/server/service-man/Config.js +45 -0
- package/lib/server/service-man/ServiceMan.js +42 -0
- package/lib/server/service-man/index.js +6 -0
- package/lib/server/service-man/utils/Shell.js +102 -0
- package/lib/server/service-man/utils/VersionCheck.js +82 -0
- package/lib/server/service-man/utils/index.js +67 -0
- package/lib/server/unleash.js +8 -1
- package/lib/web/service-man/Config.js +45 -0
- package/lib/web/service-man/ServiceMan.js +42 -0
- package/lib/web/service-man/index.js +6 -0
- package/lib/web/service-man/utils/Shell.js +102 -0
- package/lib/web/service-man/utils/VersionCheck.js +82 -0
- package/lib/web/service-man/utils/index.js +67 -0
- package/lib/web/unleash.js +8 -1
- package/package.json +5 -8
- package/src/helm-starters/baseline/Chart.yaml +4 -0
- package/src/helm-starters/baseline/templates/NOTES.txt +52 -0
- package/src/helm-starters/baseline/templates/configmap.yaml +6 -0
- package/src/helm-starters/baseline/templates/deployment.yaml +97 -0
- package/src/helm-starters/baseline/templates/ingress.yaml +17 -0
- package/src/helm-starters/baseline/templates/pdb.yaml +9 -0
- package/src/helm-starters/baseline/templates/service.yaml +16 -0
- package/src/helm-starters/baseline/templates/serviceaccount.yaml +10 -0
- package/src/helm-starters/baseline/values.yaml +57 -0
- package/src/helm-starters/deprecated/templates/hpa.yaml +12 -0
- package/src/pkgck +16 -3
- package/src/sa-tools/roles/baseline/leveregeBigQueryReader.json +10 -0
- package/src/sa-tools/roles/baseline/leveregeBigQueryWriter.json +10 -0
- package/src/sa-tools/roles/baseline/leveregeCloudFunctionsAdmin.json +12 -0
- package/src/sa-tools/roles/baseline/leveregeFirebaseUpdates.json +8 -0
- package/src/sa-tools/roles/baseline/leveregeLogsViewer.json +8 -0
- package/src/sa-tools/roles/{LeveregePubSubAccess.json → baseline/leveregePubSub.json} +3 -3
- package/src/sa-tools/roles/baseline/leveregeSecretsViewer.json +8 -0
- package/src/sa-tools/roles/baseline/leveregeStorageObjectAccess.json +10 -0
- package/src/sa-tools/roles/baseline/leveregeSvcAcctActor.json +8 -0
- package/src/sa-tools/roles/baseline/leveregeSvcAcctTokenCreator.json +8 -0
- package/src/sa-tools/roles/leverege-dev-john/20220113-121423/leveregeBigQueryReader.json +10 -0
- package/src/sa-tools/roles/leverege-dev-john/20220113-121423/leveregeBigQueryWriter.json +10 -0
- package/src/sa-tools/roles/leverege-dev-john/20220113-121423/leveregeCloudFunctionsAdmin.json +12 -0
- package/src/sa-tools/roles/leverege-dev-john/20220113-121423/leveregeFirebaseUpdates.json +8 -0
- package/src/sa-tools/roles/leverege-dev-john/20220113-121423/leveregeLogsViewer.json +8 -0
- package/src/sa-tools/roles/leverege-dev-john/20220113-121423/leveregePubSub.json +13 -0
- package/src/sa-tools/roles/leverege-dev-john/20220113-121423/leveregeSecretsViewer.json +8 -0
- package/src/sa-tools/roles/leverege-dev-john/20220113-121423/leveregeStorageObjectAccess.json +10 -0
- package/src/sa-tools/roles/leverege-dev-john/20220113-121423/leveregeSvcAcctActor.json +8 -0
- package/src/sa-tools/roles/leverege-dev-john/20220113-121423/leveregeSvcAcctTokenCreator.json +8 -0
- package/src/sa-tools/roles/prd-indoor-zoning/20220113-121935/leveregeBigQueryReader.json +10 -0
- package/src/sa-tools/roles/prd-indoor-zoning/20220113-121935/leveregeBigQueryWriter.json +10 -0
- package/src/sa-tools/roles/prd-indoor-zoning/20220113-121935/leveregeCloudFunctionsAdmin.json +12 -0
- package/src/sa-tools/roles/prd-indoor-zoning/20220113-121935/leveregeFirebaseUpdates.json +8 -0
- package/src/sa-tools/roles/prd-indoor-zoning/20220113-121935/leveregeLogsViewer.json +8 -0
- package/src/sa-tools/roles/prd-indoor-zoning/20220113-121935/leveregePubSub.json +13 -0
- package/src/sa-tools/roles/prd-indoor-zoning/20220113-121935/leveregeSecretsViewer.json +8 -0
- package/src/sa-tools/roles/prd-indoor-zoning/20220113-121935/leveregeStorageObjectAccess.json +10 -0
- package/src/sa-tools/roles/prd-indoor-zoning/20220113-121935/leveregeSvcAcctActor.json +8 -0
- package/src/sa-tools/roles/prd-indoor-zoning/20220113-121935/leveregeSvcAcctTokenCreator.json +8 -0
- package/src/sa-tools/roles-grab +30 -0
- package/src/sa-tools/roles-push +19 -0
- package/src/service-man/Config.js +40 -0
- package/src/service-man/ServiceMan.js +32 -0
- package/src/service-man/index.js +5 -0
- package/src/service-man/utils/Shell.js +95 -0
- package/src/service-man/utils/VersionCheck.js +77 -0
- package/src/service-man/utils/index.js +54 -0
- package/src/unleash.js +8 -2
- package/src/sa-tools/roles/LeveregeSecretManagerAccess.json +0 -8
- /package/src/helm-starters/{chart → baseline}/templates/hpa.yaml +0 -0
- /package/src/helm-starters/{chart → deprecated}/Chart.yaml +0 -0
- /package/src/helm-starters/{chart → deprecated}/templates/NOTES.txt +0 -0
- /package/src/helm-starters/{chart → deprecated}/templates/configmap.yaml +0 -0
- /package/src/helm-starters/{chart → deprecated}/templates/deployment.yaml +0 -0
- /package/src/helm-starters/{chart → deprecated}/templates/ingress.yaml +0 -0
- /package/src/helm-starters/{chart → deprecated}/templates/pdb.yaml +0 -0
- /package/src/helm-starters/{chart → deprecated}/templates/service.yaml +0 -0
- /package/src/helm-starters/{chart → deprecated}/templates/serviceaccount.yaml +0 -0
- /package/src/helm-starters/{chart → deprecated}/values.yaml +0 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const inquirer = require('inquirer');
|
|
4
|
+
|
|
5
|
+
const Shell = require('./Shell');
|
|
6
|
+
|
|
7
|
+
const VersionCheck = require('./VersionCheck');
|
|
8
|
+
/**
|
|
9
|
+
* Clears the screen and optionally homes the cursor.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
const clear = (home = true) => {
|
|
14
|
+
// console.log( ( home ? '\x1B[0f' : '' ) + '\x1B[2J' )
|
|
15
|
+
console.log(`${home ? '\x1B[0f' : ''}\x1B[2J`);
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* A simple object dumping convenience.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
const condir = (log, thing) => {
|
|
23
|
+
console.dir({
|
|
24
|
+
log,
|
|
25
|
+
thing
|
|
26
|
+
}, {
|
|
27
|
+
depth: 8,
|
|
28
|
+
colors: true
|
|
29
|
+
}); // eslint-disable-line
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* General "yes" to proceed function.
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
const proceed = async (query = 'Do you wish to proceed?') => {
|
|
37
|
+
await inquirer.prompt([{
|
|
38
|
+
type: 'confirm',
|
|
39
|
+
name: 'proceed',
|
|
40
|
+
message: query,
|
|
41
|
+
default: true
|
|
42
|
+
}]).then(answer => {
|
|
43
|
+
if (!answer.proceed) {
|
|
44
|
+
process.exit(0);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* A simple mS sleeper.
|
|
50
|
+
*/
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
const sleep = (ms = 0) => {
|
|
54
|
+
return new Promise(resolve => {
|
|
55
|
+
setTimeout(resolve, ms);
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
module.exports = {
|
|
60
|
+
clear,
|
|
61
|
+
condir,
|
|
62
|
+
proceed,
|
|
63
|
+
sleep,
|
|
64
|
+
pause: sleep,
|
|
65
|
+
Shell,
|
|
66
|
+
VersionCheck
|
|
67
|
+
};
|
package/lib/web/unleash.js
CHANGED
|
@@ -8,7 +8,12 @@ const SimpleGit = require('simple-git');
|
|
|
8
8
|
const git = new SimpleGit();
|
|
9
9
|
|
|
10
10
|
const getCurrentBranchName = async () => {
|
|
11
|
-
const branchInfo = await git.branch();
|
|
11
|
+
const branchInfo = await git.branch(); // first check to see if there are no branches - new repo?
|
|
12
|
+
|
|
13
|
+
if (Object.keys(branchInfo.branches).length === 0) {
|
|
14
|
+
return '';
|
|
15
|
+
}
|
|
16
|
+
|
|
12
17
|
return Object.entries(branchInfo.branches).find(([name, info]) => info.current)[0];
|
|
13
18
|
};
|
|
14
19
|
|
|
@@ -27,6 +32,8 @@ const npmRunner = async script => {
|
|
|
27
32
|
} catch (err) {
|
|
28
33
|
process.exit(1);
|
|
29
34
|
}
|
|
35
|
+
|
|
36
|
+
return undefined;
|
|
30
37
|
};
|
|
31
38
|
|
|
32
39
|
(async () => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@leverege/build-tools",
|
|
3
|
-
"version": "2.8.
|
|
3
|
+
"version": "2.8.12",
|
|
4
4
|
"description": "A collection of build / support tools for Leverege developers",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -9,8 +9,6 @@
|
|
|
9
9
|
"compile": "npm run clean && npm run compile_server && npm run compile_web",
|
|
10
10
|
"compile_server": "NODE_ENV=server babel -d lib/server src/ && npm run repo_init_publisher",
|
|
11
11
|
"compile_web": "NODE_ENV=web babel -d lib/web src/",
|
|
12
|
-
"licenseCheck": "license-checker --summary --failOn GPL",
|
|
13
|
-
"npm-check-updates": "npm-check-updates -i",
|
|
14
12
|
"postinstall": "src/npm-scripts/postinstall.js",
|
|
15
13
|
"prepublintOnly": "npm run lint && npm run build",
|
|
16
14
|
"prepublishOnly": "npm run compile",
|
|
@@ -64,7 +62,6 @@
|
|
|
64
62
|
"inquirer": "^8.2.0",
|
|
65
63
|
"js-yaml": "^4.1.0",
|
|
66
64
|
"ncp": "^2.0.0",
|
|
67
|
-
"npm-check-updates": "^12.0.5",
|
|
68
65
|
"npm-registry-fetch": "^11.0.0",
|
|
69
66
|
"open": "^8.4.0",
|
|
70
67
|
"ora": "^5.4.1",
|
|
@@ -74,11 +71,11 @@
|
|
|
74
71
|
"simple-git": "^2.48.0"
|
|
75
72
|
},
|
|
76
73
|
"devDependencies": {
|
|
77
|
-
"@babel/cli": "^7.16.
|
|
78
|
-
"@babel/core": "^7.16.
|
|
79
|
-
"@babel/node": "^7.16.
|
|
74
|
+
"@babel/cli": "^7.16.8",
|
|
75
|
+
"@babel/core": "^7.16.7",
|
|
76
|
+
"@babel/node": "^7.16.8",
|
|
80
77
|
"@leverege/babel-preset-leverege-node": "^2.0.0",
|
|
81
78
|
"@leverege/eslint-config-leverege": "^3.0.1",
|
|
82
|
-
"npm": "^8.3.
|
|
79
|
+
"npm": "^8.3.1"
|
|
83
80
|
}
|
|
84
81
|
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
-------------------------------------------------------------------------------
|
|
2
|
+
|
|
3
|
+
Service: {{ .Chart.Name }}
|
|
4
|
+
|
|
5
|
+
This service relies on the presence of a Service Account (SA) to define its
|
|
6
|
+
permissions on the clusters that it is deployed to. Verify or create an SA
|
|
7
|
+
with the following name and IAM roles:
|
|
8
|
+
|
|
9
|
+
SA name => {{ .Chart.Name }}
|
|
10
|
+
IAM roles => pubsub.editor
|
|
11
|
+
secretmanager.secretAccessor
|
|
12
|
+
|
|
13
|
+
{{- if .Values.workloadIdentity.disabled }}
|
|
14
|
+
|
|
15
|
+
Workload Identity is disabled for this service, most likely because this is
|
|
16
|
+
running on a legacy cluster which does not support it. In order for this
|
|
17
|
+
service to function properly a set of JSON keys will need to be generated and
|
|
18
|
+
then stored as a secret using this syntax:
|
|
19
|
+
|
|
20
|
+
cat <keyfileName> | kubectl create secret generic {{ .Chart.Name }}-sa-key \
|
|
21
|
+
--from-file=key.json=/dev/stdin
|
|
22
|
+
|
|
23
|
+
{{- else }}
|
|
24
|
+
|
|
25
|
+
Workload identity is enabled for this service, therefore the SA must have the
|
|
26
|
+
proper IAM policy bound to it. This can be verified by running:
|
|
27
|
+
|
|
28
|
+
$ gcloud iam service-accounts get-iam-policy \
|
|
29
|
+
--project {{ .Values.service.project_id }} \
|
|
30
|
+
{{ .Chart.Name }}@{{ .Values.service.project_id }}.iam.gserviceaccount.com
|
|
31
|
+
|
|
32
|
+
which should return something resembling:
|
|
33
|
+
|
|
34
|
+
bindings:
|
|
35
|
+
- members:
|
|
36
|
+
- serviceAccount:{{ .Values.service.project_id }}.svc.id.goog[default/<service name>]
|
|
37
|
+
role: roles/iam.workloadIdentityUser
|
|
38
|
+
etag: <uuencoded tag>
|
|
39
|
+
version: 1
|
|
40
|
+
|
|
41
|
+
If the role of roles/iam.workloadIdentityUser does not appear on the SA then
|
|
42
|
+
run the following command to add it:
|
|
43
|
+
|
|
44
|
+
$ gcloud iam service-accounts add-iam-policy-binding \
|
|
45
|
+
--project {{ .Values.service.project_id }} \
|
|
46
|
+
--role roles/iam.workloadIdentityUser \
|
|
47
|
+
--member "serviceAccount:{{ .Values.service.project_id }}.svc.id.goog[default/{{ .Chart.Name }}]" \
|
|
48
|
+
{{ .Chart.Name }}@{{ .Values.service.project_id }}.iam.gserviceaccount.com
|
|
49
|
+
|
|
50
|
+
{{- end }}
|
|
51
|
+
|
|
52
|
+
-------------------------------------------------------------------------------
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
apiVersion: apps/v1
|
|
2
|
+
kind: Deployment
|
|
3
|
+
metadata:
|
|
4
|
+
name: {{ .Chart.Name }}
|
|
5
|
+
labels:
|
|
6
|
+
app: {{ .Chart.Name }}
|
|
7
|
+
chart/version: {{ .Values.image.tag }}
|
|
8
|
+
redis-client: {{ .Values.redis.enabled | quote }}
|
|
9
|
+
spec:
|
|
10
|
+
selector:
|
|
11
|
+
matchLabels:
|
|
12
|
+
app: {{ .Chart.Name }}
|
|
13
|
+
template:
|
|
14
|
+
metadata:
|
|
15
|
+
labels:
|
|
16
|
+
app: {{ .Chart.Name }}
|
|
17
|
+
chart/version: {{ .Chart.Version }}
|
|
18
|
+
chart/appVersion: {{ .Values.image.tag }}
|
|
19
|
+
redis-client: {{ .Values.redis.enabled | quote }}
|
|
20
|
+
annotations:
|
|
21
|
+
checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
|
|
22
|
+
prometheus.io/port: "5111"
|
|
23
|
+
prometheus.io/scrape: "true"
|
|
24
|
+
configmap.reloader.stakater.com/reload: "default-configs"
|
|
25
|
+
spec:
|
|
26
|
+
serviceAccountName: {{ .Chart.Name }}
|
|
27
|
+
volumes:
|
|
28
|
+
- name: tmpfs
|
|
29
|
+
emptyDir: {}
|
|
30
|
+
{{- if .Values.workloadIdentity.disabled }}
|
|
31
|
+
- name: google-cloud-key
|
|
32
|
+
secret:
|
|
33
|
+
secretName: {{ .Chart.Name }}-sa-key
|
|
34
|
+
{{- end }}
|
|
35
|
+
{{- if .Values.service.preemptible }}
|
|
36
|
+
tolerations:
|
|
37
|
+
- key: "preemptible"
|
|
38
|
+
operator: "Equal"
|
|
39
|
+
value: "true"
|
|
40
|
+
effect: "NoSchedule"
|
|
41
|
+
affinity:
|
|
42
|
+
nodeAffinity:
|
|
43
|
+
preferredDuringSchedulingIgnoredDuringExecution:
|
|
44
|
+
- preference:
|
|
45
|
+
matchExpressions:
|
|
46
|
+
- key: cloud.google.com/gke-preemptible
|
|
47
|
+
operator: Exists
|
|
48
|
+
weight: 100
|
|
49
|
+
{{- end }}
|
|
50
|
+
containers:
|
|
51
|
+
- name: {{ .Chart.Name }}
|
|
52
|
+
imagePullPolicy: IfNotPresent
|
|
53
|
+
image: {{ .Values.image.registry }}/{{ .Chart.Name }}:{{ .Values.image.tag }}
|
|
54
|
+
securityContext:
|
|
55
|
+
readOnlyRootFilesystem: {{ .Values.securityContext.readOnlyRootFs }}
|
|
56
|
+
runAsNonRoot: true
|
|
57
|
+
runAsUser: 1000
|
|
58
|
+
allowPrivilegeEscalation: false
|
|
59
|
+
{{ if .Values.probes.enabled }}
|
|
60
|
+
readinessProbe:
|
|
61
|
+
httpGet:
|
|
62
|
+
path: /healthz
|
|
63
|
+
port: api
|
|
64
|
+
initialDelaySeconds: 30
|
|
65
|
+
livenessProbe:
|
|
66
|
+
httpGet:
|
|
67
|
+
path: /livenessProbe
|
|
68
|
+
port: api
|
|
69
|
+
initialDelaySeconds: 30
|
|
70
|
+
periodSeconds: 60
|
|
71
|
+
{{ end }}
|
|
72
|
+
resources:
|
|
73
|
+
limits:
|
|
74
|
+
cpu: "100m"
|
|
75
|
+
memory: "256Mi"
|
|
76
|
+
# requests:
|
|
77
|
+
# cpu: "100m"
|
|
78
|
+
# memory: "128Mi"
|
|
79
|
+
ports:
|
|
80
|
+
- name: api
|
|
81
|
+
containerPort: {{ .Values.service.port }}
|
|
82
|
+
protocol: TCP
|
|
83
|
+
- name: node-metrics
|
|
84
|
+
containerPort: 5111
|
|
85
|
+
volumeMounts:
|
|
86
|
+
- name: tmpfs
|
|
87
|
+
mountPath: "/tmp"
|
|
88
|
+
envFrom:
|
|
89
|
+
- configMapRef:
|
|
90
|
+
name: default-configs
|
|
91
|
+
- configMapRef:
|
|
92
|
+
name: {{ .Chart.Name }}-configs
|
|
93
|
+
env:
|
|
94
|
+
{{- if .Values.workloadIdentity.disabled }}
|
|
95
|
+
- name: GOOGLE_APPLICATION_CREDENTIALS
|
|
96
|
+
value: /var/secrets/google/key.json
|
|
97
|
+
{{- end }}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
apiVersion: networking.k8s.io/v1
|
|
2
|
+
kind: Ingress
|
|
3
|
+
metadata:
|
|
4
|
+
name: {{ .Chart.Name }}
|
|
5
|
+
labels:
|
|
6
|
+
app: {{ .Chart.Name }}
|
|
7
|
+
annotations:
|
|
8
|
+
# kubernetes.io/ingress.allow-http: "false"
|
|
9
|
+
kubernetes.io/ingress.global-static-ip-name: {{ .Chart.Name }}
|
|
10
|
+
spec:
|
|
11
|
+
tls:
|
|
12
|
+
- secretName: {{ .Values.ingress.secretName }}
|
|
13
|
+
defaultBackend:
|
|
14
|
+
service:
|
|
15
|
+
name: {{ .Chart.Name }}
|
|
16
|
+
port:
|
|
17
|
+
number: {{ .Values.service.port }}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
apiVersion: v1
|
|
2
|
+
kind: Service
|
|
3
|
+
metadata:
|
|
4
|
+
name: {{ .Chart.Name }}
|
|
5
|
+
spec:
|
|
6
|
+
type: NodePort
|
|
7
|
+
{{- if .Values.loadbalancer.ip }}
|
|
8
|
+
loadBalancerIP: {{ .Values.loadbalancer.ip }}
|
|
9
|
+
{{- end }}
|
|
10
|
+
selector:
|
|
11
|
+
app: {{ .Chart.Name }}
|
|
12
|
+
ports:
|
|
13
|
+
- name: {{ .Chart.Name }}
|
|
14
|
+
protocol: TCP
|
|
15
|
+
port: {{ .Values.service.port }}
|
|
16
|
+
targetPort: {{ .Values.service.port }}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
apiVersion: v1
|
|
2
|
+
kind: ServiceAccount
|
|
3
|
+
metadata:
|
|
4
|
+
annotations:
|
|
5
|
+
iam.gke.io/gcp-service-account: {{ .Chart.Name }}@{{ .Values.service.project_id }}.iam.gserviceaccount.com
|
|
6
|
+
name: {{ .Chart.Name }}
|
|
7
|
+
labels:
|
|
8
|
+
app: {{ .Chart.Name }}
|
|
9
|
+
chart/version: {{ .Chart.Version }}
|
|
10
|
+
chart/appVersion: {{ .Values.image.tag }}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
image:
|
|
2
|
+
tag: v0.1.0
|
|
3
|
+
registry: gcr.io/leverege-docker-images
|
|
4
|
+
|
|
5
|
+
# define all config values as quoted strings
|
|
6
|
+
config:
|
|
7
|
+
# server configs
|
|
8
|
+
LOG_CONFIG: '{"type":"pino","level":"warn"}'
|
|
9
|
+
|
|
10
|
+
# imagine configs
|
|
11
|
+
logExpressRequests: "false"
|
|
12
|
+
ALIAS_KEY: "needs-to-be-set"
|
|
13
|
+
BLUEPRINT_ID: "needs-to-be-set"
|
|
14
|
+
IMAGINE_URL: "http://api-server:8181"
|
|
15
|
+
INGESTION_TOPIC: "needs-to-be-set"
|
|
16
|
+
NETWORK_ID: "needs-to-be-set"
|
|
17
|
+
SYSTEM_ID: "needs-to-be-set"
|
|
18
|
+
|
|
19
|
+
# overwhelm will auto inject project_id, host and ingress into service
|
|
20
|
+
service:
|
|
21
|
+
port: 8383
|
|
22
|
+
preemptible: true
|
|
23
|
+
|
|
24
|
+
# can be used to set load balancer to registered static IP
|
|
25
|
+
loadbalancer:
|
|
26
|
+
ip: nil
|
|
27
|
+
|
|
28
|
+
# liveness and readiness probe to prove k8s health
|
|
29
|
+
probes:
|
|
30
|
+
enabled: true
|
|
31
|
+
|
|
32
|
+
# this tells calico that redis access is needed
|
|
33
|
+
redis:
|
|
34
|
+
enabled: false
|
|
35
|
+
|
|
36
|
+
# setting to false will allow pod disk to mount read/write
|
|
37
|
+
# setting this to false should only be done for debugging
|
|
38
|
+
securityContext:
|
|
39
|
+
readOnlyRootFs: true
|
|
40
|
+
|
|
41
|
+
horizontalScaler:
|
|
42
|
+
minReplicas: 2
|
|
43
|
+
maxReplicas: 3
|
|
44
|
+
maxCPU: 75
|
|
45
|
+
|
|
46
|
+
affinity: {}
|
|
47
|
+
|
|
48
|
+
# typically handled by traefik, but not always
|
|
49
|
+
ingress: {}
|
|
50
|
+
|
|
51
|
+
nodeSelector: {}
|
|
52
|
+
|
|
53
|
+
podAnnotations: {}
|
|
54
|
+
|
|
55
|
+
tolerations: []
|
|
56
|
+
|
|
57
|
+
workloadIdentity: {}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
apiVersion: autoscaling/v1
|
|
2
|
+
kind: HorizontalPodAutoscaler
|
|
3
|
+
metadata:
|
|
4
|
+
name: {{ .Chart.Name }}
|
|
5
|
+
spec:
|
|
6
|
+
scaleTargetRef:
|
|
7
|
+
apiVersion: apps/v1
|
|
8
|
+
kind: Deployment
|
|
9
|
+
name: {{ .Chart.Name }}
|
|
10
|
+
minReplicas: {{ .Values.horizontalScaler.minReplicas }}
|
|
11
|
+
maxReplicas: {{ .Values.horizontalScaler.maxReplicas }}
|
|
12
|
+
targetCPUUtilizationPercentage: {{ .Values.horizontalScaler.maxCPU }}
|
package/src/pkgck
CHANGED
|
@@ -9,6 +9,10 @@ good() {
|
|
|
9
9
|
printf "\e[32m✔${C_off}"
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
+
meh() {
|
|
13
|
+
printf "\e[36m✩${C_off}"
|
|
14
|
+
}
|
|
15
|
+
|
|
12
16
|
bad() {
|
|
13
17
|
printf "\e[31m✘${C_off}"
|
|
14
18
|
}
|
|
@@ -31,6 +35,7 @@ check_babel () {
|
|
|
31
35
|
local C_stat=$(bad)
|
|
32
36
|
[ -f .babelrc ] && grep --silent @leverege/babel-preset-leverege-node .babelrc
|
|
33
37
|
[ $? -eq 0 ] && C_stat=$(good)
|
|
38
|
+
[ ! -f .babelrc ] && C_stat=$(meh)
|
|
34
39
|
printf $C_stat
|
|
35
40
|
}
|
|
36
41
|
|
|
@@ -48,7 +53,7 @@ check_eslint () {
|
|
|
48
53
|
}
|
|
49
54
|
|
|
50
55
|
check_license () {
|
|
51
|
-
local C_stat=$(
|
|
56
|
+
local C_stat=$(meh)
|
|
52
57
|
local lic="`node -p \"require('./package.json').scripts.licenseCheck !== undefined\"`"
|
|
53
58
|
[ $lic == true ] && C_stat=$(good)
|
|
54
59
|
printf $C_stat
|
|
@@ -93,6 +98,13 @@ check_scope() {
|
|
|
93
98
|
printf "${result}${C_off}"
|
|
94
99
|
}
|
|
95
100
|
|
|
101
|
+
check_ESM() {
|
|
102
|
+
local C_stat=$(bad)
|
|
103
|
+
jstype="`getjson --file package.json --key type`"
|
|
104
|
+
[[ "$jstype" == "module" ]] && C_stat=$(good)
|
|
105
|
+
printf $C_stat
|
|
106
|
+
}
|
|
107
|
+
|
|
96
108
|
repos=0
|
|
97
109
|
check_repo() {
|
|
98
110
|
local dir=$1
|
|
@@ -118,10 +130,11 @@ check_repo() {
|
|
|
118
130
|
local babel7=$(check_babel)
|
|
119
131
|
local circle=$(check_circle)
|
|
120
132
|
local eslint=$(check_eslint)
|
|
133
|
+
local esmlib=$(check_ESM)
|
|
121
134
|
local license=$(check_license)
|
|
122
135
|
local scoped=$(check_scope)
|
|
123
|
-
[ $(( $repos % 15)) -eq 0 ] && printf "\n%35s pkg git cln scop cir lic
|
|
124
|
-
printf "%32s: %-8s %-16s %s %8s %s %s %s %s %s\n" $dir $pkgver $(check_git_version $gitver $pkgver) $localmods $scoped $circle $license $
|
|
136
|
+
[ $(( $repos % 15)) -eq 0 ] && printf "\n%35s pkg git cln scop cir lic ESM bl7\n"
|
|
137
|
+
printf "%32s: %-8s %-16s %s %8s %s %s %s %s %s\n" $dir $pkgver $(check_git_version $gitver $pkgver) $localmods $scoped $circle $license $esmlib $babel7 "$needspush"
|
|
125
138
|
let "repos++"
|
|
126
139
|
cd - &> /dev/null
|
|
127
140
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Leverege limited Cloud Functions Admin",
|
|
3
|
+
"includedPermissions": [
|
|
4
|
+
"cloudfunctions.functions.create",
|
|
5
|
+
"cloudfunctions.functions.delete",
|
|
6
|
+
"cloudfunctions.functions.get",
|
|
7
|
+
"cloudfunctions.functions.sourceCodeSet",
|
|
8
|
+
"cloudfunctions.functions.update"
|
|
9
|
+
],
|
|
10
|
+
"stage": "BETA",
|
|
11
|
+
"title": "Leverege Cloud Functions Admin"
|
|
12
|
+
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
3
|
-
"description": "Read/Write access to the Pub/Sub messaging service",
|
|
2
|
+
"description": "Leverege Pub/Sub",
|
|
4
3
|
"includedPermissions": [
|
|
5
4
|
"pubsub.subscriptions.consume",
|
|
6
5
|
"pubsub.subscriptions.create",
|
|
@@ -9,5 +8,6 @@
|
|
|
9
8
|
"pubsub.topics.list",
|
|
10
9
|
"pubsub.topics.publish"
|
|
11
10
|
],
|
|
12
|
-
"stage": "BETA"
|
|
11
|
+
"stage": "BETA",
|
|
12
|
+
"title": "Leverege Pub/Sub"
|
|
13
13
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Leverege limited Cloud Functions Admin",
|
|
3
|
+
"includedPermissions": [
|
|
4
|
+
"cloudfunctions.functions.create",
|
|
5
|
+
"cloudfunctions.functions.delete",
|
|
6
|
+
"cloudfunctions.functions.get",
|
|
7
|
+
"cloudfunctions.functions.sourceCodeSet",
|
|
8
|
+
"cloudfunctions.functions.update"
|
|
9
|
+
],
|
|
10
|
+
"stage": "BETA",
|
|
11
|
+
"title": "Leverege Cloud Functions Admin"
|
|
12
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Leverege Pub/Sub",
|
|
3
|
+
"includedPermissions": [
|
|
4
|
+
"pubsub.subscriptions.consume",
|
|
5
|
+
"pubsub.subscriptions.create",
|
|
6
|
+
"pubsub.topics.attachSubscription",
|
|
7
|
+
"pubsub.topics.create",
|
|
8
|
+
"pubsub.topics.list",
|
|
9
|
+
"pubsub.topics.publish"
|
|
10
|
+
],
|
|
11
|
+
"stage": "BETA",
|
|
12
|
+
"title": "Leverege Pub/Sub"
|
|
13
|
+
}
|