feat: Automate generation of kube manifests

This commit is contained in:
Robert Prehn 2021-01-13 13:20:15 -06:00
parent f1b089eb8a
commit 5bdd4f2b52
5 changed files with 583 additions and 10550 deletions

69
infrastructure/kube.yml Normal file
View 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

View 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

File diff suppressed because it is too large Load diff

View file

@ -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
View 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);