@leverege/build-tools 2.5.12 → 2.5.14
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/overwhelm.js +9 -0
- package/lib/server/repo-init/config.tgz +0 -0
- package/lib/web/overwhelm.js +9 -0
- package/package.json +7 -7
- package/src/helmup +7 -3
- package/src/k8cycle +44 -0
- package/src/overwhelm.js +8 -0
- package/src/sa-tools/imp-sa +15 -12
- package/src/sa-tools/make-sa +15 -3
package/lib/server/overwhelm.js
CHANGED
|
@@ -273,6 +273,15 @@ ahoy.forEach(dir => {
|
|
|
273
273
|
valuesOut = doReplacements(valuesOut, over);
|
|
274
274
|
fs.writeFileSync(`${dir}/values.yaml`, valuesOut);
|
|
275
275
|
}
|
|
276
|
+
}); // we can also apply replaceables to any top level .ovh files to support top level config maps
|
|
277
|
+
|
|
278
|
+
glob.sync('*.ovh').forEach(cfgmap => {
|
|
279
|
+
const target = cfgmap.replace(/.ovh$/, '');
|
|
280
|
+
let valuesOut = fs.readFileSync(cfgmap, {
|
|
281
|
+
encoding: 'utf-8'
|
|
282
|
+
});
|
|
283
|
+
valuesOut = doReplacements(valuesOut, over);
|
|
284
|
+
fs.writeFileSync(target, valuesOut);
|
|
276
285
|
}); // Set the GCP context for safety!
|
|
277
286
|
|
|
278
287
|
const clusterName = over.CLUSTER_NAME;
|
|
Binary file
|
package/lib/web/overwhelm.js
CHANGED
|
@@ -273,6 +273,15 @@ ahoy.forEach(dir => {
|
|
|
273
273
|
valuesOut = doReplacements(valuesOut, over);
|
|
274
274
|
fs.writeFileSync(`${dir}/values.yaml`, valuesOut);
|
|
275
275
|
}
|
|
276
|
+
}); // we can also apply replaceables to any top level .ovh files to support top level config maps
|
|
277
|
+
|
|
278
|
+
glob.sync('*.ovh').forEach(cfgmap => {
|
|
279
|
+
const target = cfgmap.replace(/.ovh$/, '');
|
|
280
|
+
let valuesOut = fs.readFileSync(cfgmap, {
|
|
281
|
+
encoding: 'utf-8'
|
|
282
|
+
});
|
|
283
|
+
valuesOut = doReplacements(valuesOut, over);
|
|
284
|
+
fs.writeFileSync(target, valuesOut);
|
|
276
285
|
}); // Set the GCP context for safety!
|
|
277
286
|
|
|
278
287
|
const clusterName = over.CLUSTER_NAME;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@leverege/build-tools",
|
|
3
|
-
"version": "2.5.
|
|
3
|
+
"version": "2.5.14",
|
|
4
4
|
"description": "A collection of build / support tools for Leverege developers",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -55,25 +55,25 @@
|
|
|
55
55
|
"command-line-args": "^5.1.1",
|
|
56
56
|
"command-line-usage": "^6.1.1",
|
|
57
57
|
"dotenv": "^8.2.0",
|
|
58
|
-
"execa": "^
|
|
58
|
+
"execa": "^5.0.0",
|
|
59
59
|
"figlet": "^1.5.0",
|
|
60
60
|
"git-branch": "^2.0.1",
|
|
61
61
|
"glob": "^7.1.6",
|
|
62
62
|
"inquirer": "^7.3.3",
|
|
63
63
|
"js-yaml": "^3.14.0",
|
|
64
64
|
"ncp": "^2.0.0",
|
|
65
|
-
"npm-check-updates": "^10.2.
|
|
65
|
+
"npm-check-updates": "^10.2.3",
|
|
66
66
|
"npm-registry-fetch": "^9.0.0",
|
|
67
67
|
"open": "^7.3.0",
|
|
68
68
|
"ora": "^5.1.0",
|
|
69
69
|
"parse-gitignore": "^1.0.1",
|
|
70
70
|
"readline-sync": "^1.4.10",
|
|
71
|
-
"semver": "^7.3.
|
|
72
|
-
"simple-git": "^2.
|
|
71
|
+
"semver": "^7.3.4",
|
|
72
|
+
"simple-git": "^2.24.0"
|
|
73
73
|
},
|
|
74
74
|
"devDependencies": {
|
|
75
|
-
"@babel/cli": "^7.12.
|
|
76
|
-
"@babel/core": "^7.12.
|
|
75
|
+
"@babel/cli": "^7.12.8",
|
|
76
|
+
"@babel/core": "^7.12.9",
|
|
77
77
|
"@babel/node": "^7.12.6",
|
|
78
78
|
"@leverege/babel-preset-leverege-node": "^1.1.1",
|
|
79
79
|
"@leverege/eslint-config-leverege": "^2.2.0",
|
package/src/helmup
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
#
|
|
6
6
|
# printf "\n***** RUNNING LOCALLY *****\n" && sleep 2
|
|
7
7
|
PLATFORM=(
|
|
8
|
+
authz-server
|
|
8
9
|
api-server
|
|
9
10
|
db-curator
|
|
10
11
|
emailer
|
|
@@ -22,6 +23,7 @@ SYSTEM=(
|
|
|
22
23
|
elastic
|
|
23
24
|
redis
|
|
24
25
|
postgres
|
|
26
|
+
timescale-db
|
|
25
27
|
velero
|
|
26
28
|
reloader
|
|
27
29
|
monitoring
|
|
@@ -109,14 +111,16 @@ DIRTYGIT
|
|
|
109
111
|
# blow away the existing deployment
|
|
110
112
|
helm uninstall monitoring
|
|
111
113
|
|
|
114
|
+
NEWBASELINE=${BASELINE_ROOT:-new-baseline}
|
|
115
|
+
|
|
112
116
|
# Make certain the baseline branch is up to date
|
|
113
|
-
git fetch origin
|
|
117
|
+
git fetch origin ${NEWBASELINE}:${NEWBASELINE}
|
|
114
118
|
|
|
115
119
|
NEWMON="elasticsearch-exporter grafana prometheus stackdriver-exporter"
|
|
116
120
|
for SOURCE in $NEWMON;
|
|
117
121
|
do
|
|
118
|
-
printf "Grabbing $SOURCE from
|
|
119
|
-
git checkout --quiet
|
|
122
|
+
printf "Grabbing $SOURCE from ${NEWBASELINE}\n"
|
|
123
|
+
git checkout --quiet ${NEWBASELINE} $SOURCE
|
|
120
124
|
done
|
|
121
125
|
|
|
122
126
|
cat<<RERUN
|
package/src/k8cycle
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
const { Client } = require( 'kubernetes-client' )
|
|
3
|
+
const client = new Client( { version : '1.13' } )
|
|
4
|
+
|
|
5
|
+
const condir = ( log, thing ) => {
|
|
6
|
+
console.dir( { log, thing }, { depth : 8, colors : true } ) // eslint-disable-line
|
|
7
|
+
}
|
|
8
|
+
const getSecrets = async () => {
|
|
9
|
+
const p = await client.api.v1.secrets.get()
|
|
10
|
+
const secrets = []
|
|
11
|
+
p.body.items.forEach( ( item ) => {
|
|
12
|
+
console.log( item.metadata.name )
|
|
13
|
+
secrets.push( item.metadata.name, item.data )
|
|
14
|
+
} )
|
|
15
|
+
return secrets
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const getSecret = async ( name, ns = 'default' ) => {
|
|
19
|
+
//const p = await client.api.v1.namespaces.default.secrets.big-query.get()
|
|
20
|
+
const p = await client.api.v1.namespaces(ns).secrets(name).get()
|
|
21
|
+
console.dir( p, { depth : 8, colors : true } )
|
|
22
|
+
//console.log( p.body.data, '<=SRSLY?' )
|
|
23
|
+
let buff = Buffer.from( p.body.data.key, 'base64' )
|
|
24
|
+
console.log( `Name=>${name} Secret=>'${buff.toString( 'ascii' ).trim()}'` )
|
|
25
|
+
}
|
|
26
|
+
const getReplicas = async ( type, ns = 'default' ) => {
|
|
27
|
+
const replicas = await client.apis.apps.v1.namespaces( ns )[type].get()
|
|
28
|
+
return replicas.body.items.map( ( item, idx ) => {
|
|
29
|
+
return { type, ns, name : item.metadata.name }
|
|
30
|
+
} )
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const getDeploymentsAndStatefulsets = async ( name, ns = 'default' ) => {
|
|
34
|
+
return [
|
|
35
|
+
...await getReplicas( 'deployments' ),
|
|
36
|
+
...await getReplicas( 'statefulsets' ),
|
|
37
|
+
]
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
let depsets
|
|
41
|
+
async function main () {
|
|
42
|
+
console.log( '--- NOT READY FOR PRIME TIME ---' )
|
|
43
|
+
depsets = await getDeploymentsAndStatefulsets()
|
|
44
|
+
}
|
package/src/overwhelm.js
CHANGED
|
@@ -229,6 +229,14 @@ ahoy.forEach( ( dir ) => {
|
|
|
229
229
|
}
|
|
230
230
|
} )
|
|
231
231
|
|
|
232
|
+
// we can also apply replaceables to any top level .ovh files to support top level config maps
|
|
233
|
+
glob.sync( '*.ovh' ).forEach( ( cfgmap ) => {
|
|
234
|
+
const target = cfgmap.replace(/.ovh$/,'')
|
|
235
|
+
let valuesOut = fs.readFileSync( cfgmap, { encoding : 'utf-8' } )
|
|
236
|
+
valuesOut = doReplacements( valuesOut, over )
|
|
237
|
+
fs.writeFileSync( target, valuesOut )
|
|
238
|
+
} )
|
|
239
|
+
|
|
232
240
|
// Set the GCP context for safety!
|
|
233
241
|
const clusterName = over.CLUSTER_NAME
|
|
234
242
|
const projectId = over.PROJECT_ID
|
package/src/sa-tools/imp-sa
CHANGED
|
@@ -8,16 +8,19 @@ impersonate() {
|
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
case $1 in
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
11
|
+
terraform)
|
|
12
|
+
impersonate terraformer@leverege-dev-john.iam.gserviceaccount.com
|
|
13
|
+
;;
|
|
14
|
+
gke)
|
|
15
|
+
impersonate k8s@project.iam.gserviceaccount.com
|
|
16
|
+
;;
|
|
17
|
+
admin)
|
|
18
|
+
impersonate admin@other-project.iam.gserviceaccount.com
|
|
19
|
+
;;
|
|
20
|
+
clear)
|
|
21
|
+
gcloud config unset auth/impersonate_service_account
|
|
22
|
+
;;
|
|
23
|
+
*)
|
|
24
|
+
echo "Usage: Updates impersonated service account"
|
|
25
|
+
echo " imp-sa [gke|admin|clear]"
|
|
23
26
|
esac
|
package/src/sa-tools/make-sa
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
SVC_PROJ="leverege-dev-john"
|
|
4
4
|
|
|
5
|
-
SVC_NAME="
|
|
5
|
+
SVC_NAME="terraform"
|
|
6
6
|
SVC_ACCT="${SVC_NAME}@${SVC_PROJ}.iam.gserviceaccount.com"
|
|
7
7
|
|
|
8
8
|
function countdown() {
|
|
@@ -16,10 +16,12 @@ function countdown() {
|
|
|
16
16
|
done
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
+
gcloud config unset auth/impersonate_service_account
|
|
20
|
+
|
|
19
21
|
gcloud iam service-accounts create ${SVC_NAME} \
|
|
20
22
|
--project=${SVC_PROJ} --quiet \
|
|
21
|
-
--description="
|
|
22
|
-
--display-name="
|
|
23
|
+
--description="${SVC_NAME} SA" \
|
|
24
|
+
--display-name="${SVC_NAME}" &> /dev/null
|
|
23
25
|
|
|
24
26
|
gcloud projects add-iam-policy-binding ${SVC_PROJ} \
|
|
25
27
|
--project=${SVC_PROJ} --quiet \
|
|
@@ -31,8 +33,18 @@ gcloud projects add-iam-policy-binding ${SVC_PROJ} \
|
|
|
31
33
|
--member=serviceAccount:${SVC_ACCT} \
|
|
32
34
|
--role=roles/iam.securityAdmin &> /dev/null
|
|
33
35
|
|
|
36
|
+
gcloud projects add-iam-policy-binding ${SVC_PROJ} \
|
|
37
|
+
--project=${SVC_PROJ} --quiet \
|
|
38
|
+
--member=serviceAccount:${SVC_ACCT} \
|
|
39
|
+
--role=roles/iam.serviceAccountTokenCreator &> /dev/null
|
|
40
|
+
|
|
34
41
|
countdown 30 "will delete ${SVC_NAME} service account"
|
|
35
42
|
|
|
43
|
+
gcloud projects remove-iam-policy-binding ${SVC_PROJ} \
|
|
44
|
+
--project=${SVC_PROJ} --quiet \
|
|
45
|
+
--member=serviceAccount:${SVC_ACCT} \
|
|
46
|
+
--role=roles/iam.serviceAccountTokenCreator &> /dev/null
|
|
47
|
+
|
|
36
48
|
gcloud projects remove-iam-policy-binding ${SVC_PROJ} \
|
|
37
49
|
--project=${SVC_PROJ} --quiet \
|
|
38
50
|
--member=serviceAccount:${SVC_ACCT} \
|