feat: Automate generation of kube manifests
This commit is contained in:
parent
f1b089eb8a
commit
5bdd4f2b52
5 changed files with 583 additions and 10550 deletions
69
infrastructure/kube.yml
Normal file
69
infrastructure/kube.yml
Normal file
|
@ -0,0 +1,69 @@
|
|||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: legendary
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: legendary
|
||||
namespace: legendary
|
||||
spec:
|
||||
replicas: 2
|
||||
selector:
|
||||
matchLabels:
|
||||
app: legendary
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: legendary
|
||||
spec:
|
||||
containers:
|
||||
- name: app
|
||||
image: registry.gitlab.com/mythic-insight/legendary:1.0.12
|
||||
ports:
|
||||
- containerPort: 4000
|
||||
env:
|
||||
- name: DATABASE_URL
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: database
|
||||
key: url
|
||||
- name: SECRET_KEY_BASE
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: legendary
|
||||
key: secret-key-base
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: legendary
|
||||
namespace: legendary
|
||||
spec:
|
||||
selector:
|
||||
app: legendary
|
||||
ports:
|
||||
- protocol: TCP
|
||||
port: 80
|
||||
targetPort: 4000
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: legendary
|
||||
namespace: legendary
|
||||
annotations:
|
||||
kubernetes.io/ingress.class: nginx
|
||||
spec:
|
||||
rules:
|
||||
- host: legendary-demo.mythicinsight.com
|
||||
http:
|
||||
paths:
|
||||
- backend:
|
||||
service:
|
||||
name: legendary
|
||||
port:
|
||||
number: 80
|
||||
path: /
|
||||
pathType: Prefix
|
69
infrastructure/kube.yml.dot
Normal file
69
infrastructure/kube.yml.dot
Normal file
|
@ -0,0 +1,69 @@
|
|||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: legendary
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: legendary
|
||||
namespace: legendary
|
||||
spec:
|
||||
replicas: 2
|
||||
selector:
|
||||
matchLabels:
|
||||
app: legendary
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: legendary
|
||||
spec:
|
||||
containers:
|
||||
- name: app
|
||||
image: registry.gitlab.com/mythic-insight/legendary:{{=it.version}}
|
||||
ports:
|
||||
- containerPort: 4000
|
||||
env:
|
||||
- name: DATABASE_URL
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: database
|
||||
key: url
|
||||
- name: SECRET_KEY_BASE
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: legendary
|
||||
key: secret-key-base
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: legendary
|
||||
namespace: legendary
|
||||
spec:
|
||||
selector:
|
||||
app: legendary
|
||||
ports:
|
||||
- protocol: TCP
|
||||
port: 80
|
||||
targetPort: 4000
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: legendary
|
||||
namespace: legendary
|
||||
annotations:
|
||||
kubernetes.io/ingress.class: nginx
|
||||
spec:
|
||||
rules:
|
||||
- host: legendary-demo.mythicinsight.com
|
||||
http:
|
||||
paths:
|
||||
- backend:
|
||||
service:
|
||||
name: legendary
|
||||
port:
|
||||
number: 80
|
||||
path: /
|
||||
pathType: Prefix
|
10960
package-lock.json
generated
10960
package-lock.json
generated
File diff suppressed because it is too large
Load diff
20
package.json
20
package.json
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@mythic-insight/legendary",
|
||||
"version": "0.0.0-development",
|
||||
"version": "1.0.12",
|
||||
"description": "The Legendary Phoenix Boilerplate.",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
|
@ -18,7 +18,10 @@
|
|||
"homepage": "https://gitlab.com/mythic-insight/legendary#readme",
|
||||
"devDependencies": {
|
||||
"@semantic-release/commit-analyzer": "^6.1.0",
|
||||
"@semantic-release/exec": "^5.0.0",
|
||||
"@semantic-release/git": "^7.0.8",
|
||||
"@semantic-release/npm": "^7.0.9",
|
||||
"dot": "^1.1.3",
|
||||
"semantic-release": "^15.14.0",
|
||||
"semantic-release-docker": "^2.2.0"
|
||||
},
|
||||
|
@ -28,7 +31,20 @@
|
|||
[
|
||||
"@semantic-release/git",
|
||||
{
|
||||
"message": "chore(release): ${nextRelease.version}\n\n${nextRelease.notes}"
|
||||
"message": "chore(release): ${nextRelease.version}\n\n${nextRelease.notes}",
|
||||
"assets": [
|
||||
"package.json",
|
||||
"infrastructure/kube.yml"
|
||||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
"prepare": [
|
||||
"@semantic-release/npm",
|
||||
[
|
||||
"@semantic-release/exec",
|
||||
{
|
||||
"prepareCmd": "scripts/generate-kube"
|
||||
}
|
||||
]
|
||||
],
|
||||
|
|
15
script/generate-kube
Executable file
15
script/generate-kube
Executable file
|
@ -0,0 +1,15 @@
|
|||
#!/usr/bin/env node
|
||||
|
||||
const fs = require("fs");
|
||||
const doT = require("dot");
|
||||
doT.templateSettings = {...doT.templateSettings, strip: false};
|
||||
|
||||
const dots = doT.process({path: "./infrastructure"});
|
||||
|
||||
var packageText = fs.readFileSync("package.json", {encoding: "utf8"});
|
||||
var packageConfig = JSON.parse(packageText);
|
||||
|
||||
const {version} = packageConfig;
|
||||
const manifestText = dots.kube({version: version});
|
||||
|
||||
fs.writeFileSync("infrastructure/kube.yml", manifestText);
|
Loading…
Reference in a new issue