Compare commits
29 Commits
091b6baf9d
...
v1.0.1
Author | SHA1 | Date | |
---|---|---|---|
d50a40259d | |||
c26a7295b9 | |||
d81ca32460 | |||
f1e0a25d1c | |||
931bd61ad9 | |||
377260449c | |||
d5759d3f29 | |||
d9dcf86077 | |||
5c6b3cc9fc | |||
893f4ccb4e | |||
d45a3e1f7a | |||
c78e5df746 | |||
24fde16871 | |||
b0586dede0 | |||
d24b91f0a6 | |||
75c1172047 | |||
e122264b71 | |||
56bd49735e | |||
f592d75764 | |||
7f08271a4e | |||
6d6c4d53d2 | |||
a85702d856 | |||
ca1196b371 | |||
c5600cac26 | |||
d00dd86775 | |||
6c47c45f6d | |||
5d08acf764 | |||
638adc1c40 | |||
a050bd8cba |
@ -2,8 +2,11 @@ name: Container & Helm chart
|
|||||||
on: [push]
|
on: [push]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
Semantic Release (Dry-run):
|
semrel_dryrun:
|
||||||
|
name: Semantic Release (Dry-run)
|
||||||
runs-on: dind-rootless
|
runs-on: dind-rootless
|
||||||
|
outputs:
|
||||||
|
version: ${{ steps.sem_rel.outputs.version }}
|
||||||
steps:
|
steps:
|
||||||
- name: Check out repository code
|
- name: Check out repository code
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
@ -29,18 +32,22 @@ jobs:
|
|||||||
--plugins @semantic-release/commit-analyzer,@semantic-release/exec \
|
--plugins @semantic-release/commit-analyzer,@semantic-release/exec \
|
||||||
--analyzeCommits @semantic-release/commit-analyzer \
|
--analyzeCommits @semantic-release/commit-analyzer \
|
||||||
--verifyRelease @semantic-release/exec \
|
--verifyRelease @semantic-release/exec \
|
||||||
--verifyReleaseCmd 'echo "version=$${nextRelease.version}" >> $GITHUB_OUTPUT'
|
--verifyReleaseCmd 'echo "version=${nextRelease.version}" >> $GITHUB_OUTPUT'
|
||||||
# --verifyReleaseCmd 'echo "$${nextRelease.version}" > .version'
|
|
||||||
env:
|
env:
|
||||||
GIT_CREDENTIALS: djpbessems:${{ secrets.GIT_APIKEY }}
|
GIT_CREDENTIALS: ${{ secrets.GIT_USERNAME }}:${{ secrets.GIT_APIKEY }}
|
||||||
- name: Assert semantic release output
|
- name: Assert semantic release output
|
||||||
run: |
|
run: |
|
||||||
[[ -z "${{ steps.sem_rel.outputs.version }}" ]] && (echo 'No release tag - exiting'; exit 1) || exit 0
|
[[ -z "${{ steps.sem_rel.outputs.version }}" ]] && {
|
||||||
|
echo 'No release tag - exiting'; exit 1
|
||||||
|
} || {
|
||||||
|
echo 'Release tag set correctly: ${{ steps.sem_rel.outputs.version }}'; exit 0
|
||||||
|
}
|
||||||
|
|
||||||
Container image:
|
build_container:
|
||||||
|
name: Container image
|
||||||
container: catthehacker/ubuntu:act-latest
|
container: catthehacker/ubuntu:act-latest
|
||||||
runs-on: dind
|
runs-on: dind
|
||||||
needs: Semantic Release (Dry-run)
|
needs: semrel_dryrun
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@ -51,33 +58,66 @@ jobs:
|
|||||||
image: djpbessems/spamasaurusrex
|
image: djpbessems/spamasaurusrex
|
||||||
username: ${{ secrets.GIT_USERNAME }}
|
username: ${{ secrets.GIT_USERNAME }}
|
||||||
password: ${{ secrets.GIT_APIKEY }}
|
password: ${{ secrets.GIT_APIKEY }}
|
||||||
tag: ${{ steps.sem_rel.outputs.version }}
|
tag: ${{ needs.semrel_dryrun.outputs.version }}
|
||||||
|
|
||||||
Helm chart:
|
build_chart:
|
||||||
container: alpine/helm
|
name: Helm chart
|
||||||
runs-on: dind-rootless
|
runs-on: dind-rootless
|
||||||
needs: Semantic Release (Dry-run)
|
needs: semrel_dryrun
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
- name: Inject semantic release version
|
- name: Inject semantic release version
|
||||||
run: |
|
run: |
|
||||||
sed -i 's/{{ chart_version }}/'${{ steps.sem_rel.outputs.version }}'/g' charts/spamasaurusrex/Chart.yaml
|
sed -i 's/{{ chart_version }}/'${{ needs.semrel_dryrun.outputs.version }}'/g' charts/spamasaurusrex/Chart.yaml
|
||||||
sed -i 's/{{ image_tag }}/'${{ steps.sem_rel.outputs.version }}'/g' charts/spamasaurusrex/values.yaml
|
sed -i 's/{{ image_tag }}/'${{ needs.semrel_dryrun.outputs.version }}'/g' charts/spamasaurusrex/values.yaml
|
||||||
|
- name: Install helm w/ plugins
|
||||||
|
run: |
|
||||||
|
curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | tee /usr/share/keyrings/helm.gpg > /dev/null
|
||||||
|
apt-get install apt-transport-https --yes
|
||||||
|
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | tee /etc/apt/sources.list.d/helm-stable-debian.list
|
||||||
|
apt-get update && apt-get install helm --yes
|
||||||
|
helm plugin install https://github.com/chartmuseum/helm-push
|
||||||
- name: Package helm chart into archive
|
- name: Package helm chart into archive
|
||||||
run: |
|
run: |
|
||||||
helm package ./charts/spamasaurusrex
|
helm package ./charts/spamasaurusrex
|
||||||
- name: Install helm plugin
|
|
||||||
run: |
|
|
||||||
helm plugin install https://github.com/chartmuseum/helm-push
|
|
||||||
- name: Add target helm repository
|
- name: Add target helm repository
|
||||||
run: |
|
run: |
|
||||||
helm repo add \
|
helm repo add \
|
||||||
--username $GIT_USERNAME \
|
--username ${{ secrets.GIT_USERNAME }} \
|
||||||
--password $GIT_APIKEY \
|
--password ${{ secrets.GIT_APIKEY }} \
|
||||||
spamasaurus \
|
spamasaurus \
|
||||||
https://code.spamasaurus.com/api/packages/$GIT_USERNAME/helm
|
https://code.spamasaurus.com/api/packages/${{ secrets.GIT_USERNAME }}/helm
|
||||||
- name: Push helm chart
|
- name: Push helm chart
|
||||||
run: |
|
run: |
|
||||||
helm cm-push \
|
helm cm-push \
|
||||||
spamasaurusrex-*.tgz \
|
spamasaurusrex-*.tgz \
|
||||||
spamasaurus
|
spamasaurus
|
||||||
|
|
||||||
|
semrel:
|
||||||
|
name: Semantic Release
|
||||||
|
runs-on: dind-rootless
|
||||||
|
needs: [build_container, build_chart]
|
||||||
|
steps:
|
||||||
|
- name: Check out repository code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: Setup Node
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
npm install \
|
||||||
|
semantic-release \
|
||||||
|
@semantic-release/changelog \
|
||||||
|
@semantic-release/commit-analyzer \
|
||||||
|
@semantic-release/git \
|
||||||
|
@semantic-release/release-notes-generator
|
||||||
|
- name: Semantic Release
|
||||||
|
run: |
|
||||||
|
npx semantic-release \
|
||||||
|
--branches ${{ gitea.refname }} \
|
||||||
|
--tag-format 'v${version}' \
|
||||||
|
--plugins @semantic-release/commit-analyzer,@semantic-release/release-notes-generator,@semantic-release/changelog,@semantic-release/git
|
||||||
|
env:
|
||||||
|
GIT_CREDENTIALS: ${{ secrets.GIT_USERNAME }}:${{ secrets.GIT_APIKEY }}
|
||||||
|
13
CHANGELOG.md
Normal file
13
CHANGELOG.md
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
## [1.0.1](http://gitea.gitea.svc.cluster.local:3000/djpbessems/ContainerImage.SpamasaurusRex/compare/v1.0.0...v1.0.1) (2024-02-28)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* Align chart port configuration and health/readiness endpoints w/ golang code ([d81ca32](http://gitea.gitea.svc.cluster.local:3000/djpbessems/ContainerImage.SpamasaurusRex/commit/d81ca32460e5c87b49507f8163c6e64c3d2c8f15))
|
||||||
|
|
||||||
|
# 1.0.0 (2024-02-28)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* Replace chart release-name ([6d6c4d5](http://gitea.gitea.svc.cluster.local:3000/djpbessems/ContainerImage.SpamasaurusRex/commit/6d6c4d53d2e69f3af064a94a4e0fc009cf83b965))
|
@ -6,16 +6,16 @@
|
|||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- else if contains "NodePort" .Values.service.type }}
|
{{- else if contains "NodePort" .Values.service.type }}
|
||||||
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "json-server.fullname" . }})
|
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "spamasaurusrex.fullname" . }})
|
||||||
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||||
echo http://$NODE_IP:$NODE_PORT
|
echo http://$NODE_IP:$NODE_PORT
|
||||||
{{- else if contains "LoadBalancer" .Values.service.type }}
|
{{- else if contains "LoadBalancer" .Values.service.type }}
|
||||||
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||||
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "json-server.fullname" . }}'
|
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "spamasaurusrex.fullname" . }}'
|
||||||
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "json-server.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
|
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "spamasaurusrex.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
|
||||||
echo http://$SERVICE_IP:{{ .Values.service.port }}
|
echo http://$SERVICE_IP:{{ .Values.service.port }}
|
||||||
{{- else if contains "ClusterIP" .Values.service.type }}
|
{{- else if contains "ClusterIP" .Values.service.type }}
|
||||||
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "json-server.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "spamasaurusrex.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||||
export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
|
export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
|
||||||
echo "Visit http://127.0.0.1:8080 to use your application"
|
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||||
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT
|
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{{/*
|
{{/*
|
||||||
Expand the name of the chart.
|
Expand the name of the chart.
|
||||||
*/}}
|
*/}}
|
||||||
{{- define "json-server.name" -}}
|
{{- define "spamasaurusrex.name" -}}
|
||||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
@ -10,7 +10,7 @@ Create a default fully qualified app name.
|
|||||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
If release name contains chart name it will be used as a full name.
|
If release name contains chart name it will be used as a full name.
|
||||||
*/}}
|
*/}}
|
||||||
{{- define "json-server.fullname" -}}
|
{{- define "spamasaurusrex.fullname" -}}
|
||||||
{{- if .Values.fullnameOverride }}
|
{{- if .Values.fullnameOverride }}
|
||||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
{{- else }}
|
{{- else }}
|
||||||
@ -26,16 +26,16 @@ If release name contains chart name it will be used as a full name.
|
|||||||
{{/*
|
{{/*
|
||||||
Create chart name and version as used by the chart label.
|
Create chart name and version as used by the chart label.
|
||||||
*/}}
|
*/}}
|
||||||
{{- define "json-server.chart" -}}
|
{{- define "spamasaurusrex.chart" -}}
|
||||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
{{/*
|
{{/*
|
||||||
Common labels
|
Common labels
|
||||||
*/}}
|
*/}}
|
||||||
{{- define "json-server.labels" -}}
|
{{- define "spamasaurusrex.labels" -}}
|
||||||
helm.sh/chart: {{ include "json-server.chart" . }}
|
helm.sh/chart: {{ include "spamasaurusrex.chart" . }}
|
||||||
{{ include "json-server.selectorLabels" . }}
|
{{ include "spamasaurusrex.selectorLabels" . }}
|
||||||
{{- if .Chart.AppVersion }}
|
{{- if .Chart.AppVersion }}
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
@ -45,17 +45,17 @@ app.kubernetes.io/managed-by: {{ .Release.Service }}
|
|||||||
{{/*
|
{{/*
|
||||||
Selector labels
|
Selector labels
|
||||||
*/}}
|
*/}}
|
||||||
{{- define "json-server.selectorLabels" -}}
|
{{- define "spamasaurusrex.selectorLabels" -}}
|
||||||
app.kubernetes.io/name: {{ include "json-server.name" . }}
|
app.kubernetes.io/name: {{ include "spamasaurusrex.name" . }}
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
{{/*
|
{{/*
|
||||||
Create the name of the service account to use
|
Create the name of the service account to use
|
||||||
*/}}
|
*/}}
|
||||||
{{- define "json-server.serviceAccountName" -}}
|
{{- define "spamasaurusrex.serviceAccountName" -}}
|
||||||
{{- if .Values.serviceAccount.create }}
|
{{- if .Values.serviceAccount.create }}
|
||||||
{{- default (include "json-server.fullname" .) .Values.serviceAccount.name }}
|
{{- default (include "spamasaurusrex.fullname" .) .Values.serviceAccount.name }}
|
||||||
{{- else }}
|
{{- else }}
|
||||||
{{- default "default" .Values.serviceAccount.name }}
|
{{- default "default" .Values.serviceAccount.name }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
@ -4,7 +4,7 @@ metadata:
|
|||||||
name: {{ .Release.Name }}-clusterrolebinding
|
name: {{ .Release.Name }}-clusterrolebinding
|
||||||
subjects:
|
subjects:
|
||||||
- kind: ServiceAccount
|
- kind: ServiceAccount
|
||||||
name: {{ include "json-server.serviceAccountName" . }}
|
name: {{ include "spamasaurusrex.serviceAccountName" . }}
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
roleRef:
|
roleRef:
|
||||||
kind: ClusterRole
|
kind: ClusterRole
|
||||||
|
@ -1,96 +0,0 @@
|
|||||||
{{- if not .Values.jsonServer.seedData.existingConfigMap }}
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name }}-configmap
|
|
||||||
data:
|
|
||||||
index.html: |
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<link
|
|
||||||
rel="stylesheet"
|
|
||||||
href="https://use.fontawesome.com/releases/v5.8.2/css/all.css"
|
|
||||||
integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay"
|
|
||||||
crossorigin="anonymous"
|
|
||||||
/>
|
|
||||||
<link rel="stylesheet" href="style.css" />
|
|
||||||
<title>JSON Server</title>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<header>
|
|
||||||
<div class="container">
|
|
||||||
<nav>
|
|
||||||
<ul>
|
|
||||||
<li class="title">
|
|
||||||
JSON Server
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
<main>
|
|
||||||
<div class="container">
|
|
||||||
<h1>Congrats!</h1>
|
|
||||||
<p>
|
|
||||||
You're successfully running JSON Server
|
|
||||||
<br />
|
|
||||||
✧*。٩(ˊᗜˋ*)و✧*。
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<div id="resources"></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</main>
|
|
||||||
|
|
||||||
<footer>
|
|
||||||
<div class="container">
|
|
||||||
<p>
|
|
||||||
Howdy mates!
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
|
|
||||||
<script src="script.js"></script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
update.sh: |
|
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
while getopts u: flag
|
|
||||||
do
|
|
||||||
case "${flag}" in
|
|
||||||
u) URL=${OPTARG};;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
[[ $(getent hosts $URL) ]] || {
|
|
||||||
echo 'Could not resolve' $URL
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
echo '['$(date "+%Y-%m-%d %H:%M:%S")'] Started polling helm releases with 60 second interval'
|
|
||||||
|
|
||||||
while sleep 60;
|
|
||||||
do
|
|
||||||
echo '['$(date "+%Y-%m-%d %H:%M:%S")']' $(curl -ks https://$URL/components | jq length) 'known releases in database'
|
|
||||||
|
|
||||||
for entry in $(helm list --all-namespaces --output json | jq -r '.[] | @base64'); do
|
|
||||||
RELEASE=$(echo $entry | base64 -d | jq -cS '.type="helm" | del(.namespace, .revision, .status)')
|
|
||||||
APP_NAME=$(echo $RELEASE | jq -r '.name')
|
|
||||||
APP_ID=$(curl -ks https://$URL/components?name=$APP_NAME | jq -r '.[0].id')
|
|
||||||
|
|
||||||
# Release is not yet in database
|
|
||||||
[ "$APP_ID" == null ] && {
|
|
||||||
curl -ks -X POST https://$URL/components -H 'Content-Type: application/json' --data "$RELEASE" -o /dev/null
|
|
||||||
}
|
|
||||||
# Release is already in database
|
|
||||||
[ "$APP_ID" != null ] && {
|
|
||||||
curl -ks -X PATCH https://$URL/components/$APP_ID -H 'Content-Type: application/json' --data "$RELEASE" -o /dev/null
|
|
||||||
}
|
|
||||||
done
|
|
||||||
|
|
||||||
done
|
|
||||||
db.json: |
|
|
||||||
{{ include "common.tplvalues.render" ( dict "value" .Values.jsonServer.seedData.configInline "context" $) | indent 4 }}
|
|
||||||
{{- end -}}
|
|
@ -1,14 +1,14 @@
|
|||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
kind: Deployment
|
kind: Deployment
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ include "json-server.fullname" . }}
|
name: {{ include "spamasaurusrex.fullname" . }}
|
||||||
labels:
|
labels:
|
||||||
{{- include "json-server.labels" . | nindent 4 }}
|
{{- include "spamasaurusrex.labels" . | nindent 4 }}
|
||||||
spec:
|
spec:
|
||||||
replicas: {{ .Values.replicaCount }}
|
replicas: {{ .Values.replicaCount }}
|
||||||
selector:
|
selector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
{{- include "json-server.selectorLabels" . | nindent 6 }}
|
{{- include "spamasaurusrex.selectorLabels" . | nindent 6 }}
|
||||||
template:
|
template:
|
||||||
metadata:
|
metadata:
|
||||||
{{- with .Values.podAnnotations }}
|
{{- with .Values.podAnnotations }}
|
||||||
@ -16,69 +16,35 @@ spec:
|
|||||||
{{- toYaml . | nindent 8 }}
|
{{- toYaml . | nindent 8 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
labels:
|
labels:
|
||||||
{{- include "json-server.selectorLabels" . | nindent 8 }}
|
{{- include "spamasaurusrex.selectorLabels" . | nindent 8 }}
|
||||||
spec:
|
spec:
|
||||||
{{- with .Values.imagePullSecrets }}
|
{{- with .Values.imagePullSecrets }}
|
||||||
imagePullSecrets:
|
imagePullSecrets:
|
||||||
{{- toYaml . | nindent 8 }}
|
{{- toYaml . | nindent 8 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
serviceAccountName: {{ include "json-server.serviceAccountName" . }}
|
serviceAccountName: {{ include "spamasaurusrex.serviceAccountName" . }}
|
||||||
securityContext:
|
securityContext:
|
||||||
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||||
containers:
|
containers:
|
||||||
- name: {{ .Chart.Name }}
|
- name: {{ .Chart.Name }}
|
||||||
securityContext:
|
securityContext:
|
||||||
{{- toYaml .Values.securityContext | nindent 12 }}
|
{{- toYaml .Values.securityContext | nindent 12 }}
|
||||||
image: "{{ .Values.jsonServer.image.repository }}:{{ .Values.jsonServer.image.tag | default .Chart.AppVersion }}"
|
image: "{{ .Values.spamasaurusRex.image.repository }}:{{ .Values.spamasaurusRex.image.tag | default .Chart.AppVersion }}"
|
||||||
imagePullPolicy: {{ .Values.jsonServer.image.pullPolicy }}
|
imagePullPolicy: {{ .Values.spamasaurusRex.image.pullPolicy }}
|
||||||
ports:
|
ports:
|
||||||
- name: http
|
- name: http
|
||||||
containerPort: {{ .Values.service.port }}
|
containerPort: {{ .Values.service.port }}
|
||||||
protocol: TCP
|
protocol: TCP
|
||||||
livenessProbe:
|
livenessProbe:
|
||||||
httpGet:
|
httpGet:
|
||||||
path: /
|
path: /health
|
||||||
port: http
|
port: http
|
||||||
readinessProbe:
|
readinessProbe:
|
||||||
httpGet:
|
httpGet:
|
||||||
path: /
|
path: /readiness
|
||||||
port: http
|
port: http
|
||||||
resources:
|
resources:
|
||||||
{{- toYaml .Values.resources | nindent 12 }}
|
{{- toYaml .Values.resources | nindent 12 }}
|
||||||
volumeMounts:
|
|
||||||
- name: {{ .Release.Name }}-configmap
|
|
||||||
mountPath: /data/db.json
|
|
||||||
subPath: db.json
|
|
||||||
- name: {{ .Release.Name }}-configmap
|
|
||||||
mountPath: /usr/local/lib/node_modules/json-server/public/index.html
|
|
||||||
subPath: index.html
|
|
||||||
- name: {{ .Chart.Name }}-sidecar
|
|
||||||
securityContext:
|
|
||||||
{{- toYaml .Values.securityContext | nindent 12 }}
|
|
||||||
image: "{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}"
|
|
||||||
imagePullPolicy: {{ .Values.sidecar.image.pullPolicy }}
|
|
||||||
resources:
|
|
||||||
{{- toYaml .Values.resources | nindent 12 }}
|
|
||||||
command:
|
|
||||||
- /bin/bash
|
|
||||||
- -c
|
|
||||||
- "/opt/update.sh -u {{ .Values.sidecar.targetUrl }}"
|
|
||||||
volumeMounts:
|
|
||||||
- name: {{ .Release.Name }}-configmap
|
|
||||||
mountPath: /opt/update.sh
|
|
||||||
subPath: update.sh
|
|
||||||
volumes:
|
|
||||||
- name: {{ .Release.Name }}-configmap
|
|
||||||
configMap:
|
|
||||||
name: {{ .Release.Name }}-configmap
|
|
||||||
items:
|
|
||||||
- key: db.json
|
|
||||||
path: db.json
|
|
||||||
- key: index.html
|
|
||||||
path: index.html
|
|
||||||
- key: update.sh
|
|
||||||
path: update.sh
|
|
||||||
mode: 0744
|
|
||||||
{{- with .Values.nodeSelector }}
|
{{- with .Values.nodeSelector }}
|
||||||
nodeSelector:
|
nodeSelector:
|
||||||
{{- toYaml . | nindent 8 }}
|
{{- toYaml . | nindent 8 }}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{{- if .Values.ingress.enabled -}}
|
{{- if .Values.ingress.enabled -}}
|
||||||
{{- $fullName := include "json-server.fullname" . -}}
|
{{- $fullName := include "spamasaurusrex.fullname" . -}}
|
||||||
{{- $svcPort := .Values.service.port -}}
|
{{- $svcPort := .Values.service.port -}}
|
||||||
{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }}
|
{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }}
|
||||||
{{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }}
|
{{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }}
|
||||||
@ -17,7 +17,7 @@ kind: Ingress
|
|||||||
metadata:
|
metadata:
|
||||||
name: {{ $fullName }}
|
name: {{ $fullName }}
|
||||||
labels:
|
labels:
|
||||||
{{- include "json-server.labels" . | nindent 4 }}
|
{{- include "spamasaurusrex.labels" . | nindent 4 }}
|
||||||
{{- with .Values.ingress.annotations }}
|
{{- with .Values.ingress.annotations }}
|
||||||
annotations:
|
annotations:
|
||||||
{{- toYaml . | nindent 4 }}
|
{{- toYaml . | nindent 4 }}
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: Service
|
kind: Service
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ include "json-server.fullname" . }}
|
name: {{ include "spamasaurusrex.fullname" . }}
|
||||||
labels:
|
labels:
|
||||||
{{- include "json-server.labels" . | nindent 4 }}
|
{{- include "spamasaurusrex.labels" . | nindent 4 }}
|
||||||
spec:
|
spec:
|
||||||
type: {{ .Values.service.type }}
|
type: {{ .Values.service.type }}
|
||||||
ports:
|
ports:
|
||||||
@ -12,4 +12,4 @@ spec:
|
|||||||
protocol: TCP
|
protocol: TCP
|
||||||
name: http
|
name: http
|
||||||
selector:
|
selector:
|
||||||
{{- include "json-server.selectorLabels" . | nindent 4 }}
|
{{- include "spamasaurusrex.selectorLabels" . | nindent 4 }}
|
||||||
|
@ -2,9 +2,9 @@
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: ServiceAccount
|
kind: ServiceAccount
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ include "json-server.serviceAccountName" . }}
|
name: {{ include "spamasaurusrex.serviceAccountName" . }}
|
||||||
labels:
|
labels:
|
||||||
{{- include "json-server.labels" . | nindent 4 }}
|
{{- include "spamasaurusrex.labels" . | nindent 4 }}
|
||||||
{{- with .Values.serviceAccount.annotations }}
|
{{- with .Values.serviceAccount.annotations }}
|
||||||
annotations:
|
annotations:
|
||||||
{{- toYaml . | nindent 4 }}
|
{{- toYaml . | nindent 4 }}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Default values for json-server.
|
# Default values for spamasaurusrex.
|
||||||
|
|
||||||
spamasaurusRex:
|
spamasaurusRex:
|
||||||
image:
|
image:
|
||||||
@ -37,7 +37,7 @@ securityContext: {}
|
|||||||
|
|
||||||
service:
|
service:
|
||||||
type: ClusterIP
|
type: ClusterIP
|
||||||
port: 80
|
port: 8080
|
||||||
|
|
||||||
ingress:
|
ingress:
|
||||||
enabled: true
|
enabled: true
|
||||||
@ -51,7 +51,7 @@ ingress:
|
|||||||
- path: /
|
- path: /
|
||||||
pathType: ImplementationSpecific
|
pathType: ImplementationSpecific
|
||||||
tls: []
|
tls: []
|
||||||
# - secretName: json-server-tls
|
# - secretName: spamasaurusrex-tls
|
||||||
# hosts:
|
# hosts:
|
||||||
# - alias.example.org
|
# - alias.example.org
|
||||||
|
|
||||||
|
6000
package-lock.json
generated
Normal file
6000
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
9
package.json
Normal file
9
package.json
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"dependencies": {
|
||||||
|
"@semantic-release/changelog": "^6.0.3",
|
||||||
|
"@semantic-release/commit-analyzer": "^11.1.0",
|
||||||
|
"@semantic-release/git": "^10.0.1",
|
||||||
|
"@semantic-release/release-notes-generator": "^12.1.0",
|
||||||
|
"semantic-release": "^23.0.2"
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user