mirror of
https://github.com/SinTan1729/chhoto-url
synced 2025-04-17 18:47:39 -05:00
add helm chart and add intructions for its usage in README
This commit is contained in:
parent
d42a738861
commit
63020b2c24
10 changed files with 166 additions and 0 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -10,3 +10,4 @@ urls.sqlite
|
||||||
.env
|
.env
|
||||||
cookie*
|
cookie*
|
||||||
.idea/
|
.idea/
|
||||||
|
.DS_Store
|
||||||
|
|
14
README.md
14
README.md
|
@ -154,6 +154,20 @@ to send your desired headers. It must be a comma separated list of valid
|
||||||
you can set it to `no-cache, private` to disable caching. It might help during testing if
|
you can set it to `no-cache, private` to disable caching. It might help during testing if
|
||||||
served through a proxy.
|
served through a proxy.
|
||||||
|
|
||||||
|
## Deploying in your Kubernetes cluster with Helm
|
||||||
|
The helm values are very sparse to keep it simple. If you need more values to be variable, feel free to adjust.
|
||||||
|
|
||||||
|
The PVC allocates 100Mi and the PV is using a host path volume.
|
||||||
|
|
||||||
|
The helm chart assumes you have [cert manager](https://github.com/jetstack/cert-manager) deployed to have TLS certificates managed easily in your cluster. Feel free to remove the issuer and adjust the ingress if you're on AWS with EKS for example.
|
||||||
|
|
||||||
|
To get started, `cp helm-chart/values.yaml helm-chart/my-values.yaml` and adjust `password`, `fqdn` and `letsencryptmail` in your new `my-values.yaml`, then just run
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
cd helm-chart
|
||||||
|
helm upgrade --install chhoto-url -n chhoto-url --create-namespace -f my-values.yaml
|
||||||
|
```
|
||||||
|
|
||||||
## Instructions for CLI usage
|
## Instructions for CLI usage
|
||||||
The application can be used from the terminal using something like `curl`. In all the examples
|
The application can be used from the terminal using something like `curl`. In all the examples
|
||||||
below, replace `http://localhost:4567` with where your instance of `chhoto-url` is accessible.
|
below, replace `http://localhost:4567` with where your instance of `chhoto-url` is accessible.
|
||||||
|
|
24
helm-chart/Chart.yaml
Normal file
24
helm-chart/Chart.yaml
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
apiVersion: v2
|
||||||
|
name: chhoto-url
|
||||||
|
description: A Helm chart for Kubernetes
|
||||||
|
|
||||||
|
# A chart can be either an 'application' or a 'library' chart.
|
||||||
|
#
|
||||||
|
# Application charts are a collection of templates that can be packaged into versioned archives
|
||||||
|
# to be deployed.
|
||||||
|
#
|
||||||
|
# Library charts provide useful utilities or functions for the chart developer. They're included as
|
||||||
|
# a dependency of application charts to inject those utilities and functions into the rendering
|
||||||
|
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
|
||||||
|
type: application
|
||||||
|
|
||||||
|
# This is the chart version. This version number should be incremented each time you make changes
|
||||||
|
# to the chart and its templates, including the app version.
|
||||||
|
# Versions are expected to follow Semantic Versioning (https://semver.org/)
|
||||||
|
version: 0.1.0
|
||||||
|
|
||||||
|
# This is the version number of the application being deployed. This version number should be
|
||||||
|
# incremented each time you make changes to the application. Versions are not expected to
|
||||||
|
# follow Semantic Versioning. They should reflect the version the application is using.
|
||||||
|
# It is recommended to use it with quotes.
|
||||||
|
appVersion: "1.16.0"
|
23
helm-chart/templates/ingress.yml
Normal file
23
helm-chart/templates/ingress.yml
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: chhoto-url
|
||||||
|
annotations:
|
||||||
|
cert-manager.io/issuer: "letsencrypt"
|
||||||
|
acme.cert-manager.io/http01-edit-in-place: "true"
|
||||||
|
spec:
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- {{ .Values.fqdn }}
|
||||||
|
secretName: my-tls
|
||||||
|
rules:
|
||||||
|
- host: {{ .Values.fqdn }}
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: chhoto-url
|
||||||
|
port:
|
||||||
|
number: 80
|
18
helm-chart/templates/issuer.yml
Normal file
18
helm-chart/templates/issuer.yml
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Issuer
|
||||||
|
metadata:
|
||||||
|
name: letsencrypt
|
||||||
|
spec:
|
||||||
|
acme:
|
||||||
|
# The ACME server URL
|
||||||
|
server: https://acme-v02.api.letsencrypt.org/directory
|
||||||
|
# Email address used for ACME registration
|
||||||
|
email: {{ .Values.letsencryptmail }}
|
||||||
|
# Name of a secret used to store the ACME account private key
|
||||||
|
privateKeySecretRef:
|
||||||
|
name: letsencrypt
|
||||||
|
# Enable the HTTP-01 challenge provider
|
||||||
|
solvers:
|
||||||
|
- http01:
|
||||||
|
ingress:
|
||||||
|
ingressClassName: nginx
|
13
helm-chart/templates/pv.yml
Normal file
13
helm-chart/templates/pv.yml
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolume
|
||||||
|
metadata:
|
||||||
|
name: chhoto-pv
|
||||||
|
labels:
|
||||||
|
app: chhoto-url
|
||||||
|
spec:
|
||||||
|
capacity:
|
||||||
|
storage: 100Mi
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
hostPath:
|
||||||
|
path: /mnt/data/chhoto-data
|
7
helm-chart/templates/secret.yml
Normal file
7
helm-chart/templates/secret.yml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: secret
|
||||||
|
type: Opaque
|
||||||
|
data:
|
||||||
|
password: {{ .Values.password }}
|
38
helm-chart/templates/sts.yml
Normal file
38
helm-chart/templates/sts.yml
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: StatefulSet
|
||||||
|
metadata:
|
||||||
|
name: chhoto-url
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: chhoto-url
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: chhoto-url
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: chhoto-url
|
||||||
|
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
||||||
|
ports:
|
||||||
|
- containerPort: 4567
|
||||||
|
env:
|
||||||
|
- name: password
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: secret
|
||||||
|
key: password
|
||||||
|
- name: db_url
|
||||||
|
value: /db/urls.sqlite
|
||||||
|
volumeMounts:
|
||||||
|
- name: data
|
||||||
|
mountPath: /db
|
||||||
|
volumeClaimTemplates:
|
||||||
|
- metadata:
|
||||||
|
name: data
|
||||||
|
spec:
|
||||||
|
accessModes: [ "ReadWriteOnce" ]
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 100Mi
|
14
helm-chart/templates/svc.yml
Normal file
14
helm-chart/templates/svc.yml
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: chhoto-url
|
||||||
|
labels:
|
||||||
|
app: chhoto-url
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
targetPort: 4567
|
||||||
|
protocol: TCP
|
||||||
|
selector:
|
||||||
|
app: chhoto-url
|
14
helm-chart/values.yaml
Normal file
14
helm-chart/values.yaml
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
# Default values for chhoto-url.
|
||||||
|
# This is a YAML-formatted file.
|
||||||
|
# Declare variables to be passed into your templates.
|
||||||
|
|
||||||
|
image:
|
||||||
|
repository: sintan1729/chhoto-url
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
tag: "5.4.6"
|
||||||
|
|
||||||
|
# please use a better password in your values and base64 encode it
|
||||||
|
password: cGFzc3dvcmQ=
|
||||||
|
|
||||||
|
fqdn: your.short.link.url.com
|
||||||
|
letsencryptmail: your.mail@address.com
|
Loading…
Reference in a new issue