charts: softserve support network, ingress with source port, keyless
diff --git a/charts/soft-serve/templates/ingress.yaml b/charts/soft-serve/templates/ingress.yaml
new file mode 100644
index 0000000..490a5b3
--- /dev/null
+++ b/charts/soft-serve/templates/ingress.yaml
@@ -0,0 +1,31 @@
+{{ if .Values.ingress.enabled }}
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+ name: ingress
+ namespace: {{ .Release.Namespace }}
+ {{- if .Values.ingress.certificateIssuer }}
+ annotations:
+ acme.cert-manager.io/http01-edit-in-place: "true"
+ cert-manager.io/cluster-issuer: {{ .Values.ingress.certificateIssuer }}
+ {{- end }}
+spec:
+ ingressClassName: {{ .Values.ingress.ingressClassName }}
+ {{- if .Values.ingress.certificateIssuer }}
+ tls:
+ - hosts:
+ - {{ .Values.ingress.domain }}
+ secretName: cert-soft-serve
+ {{- end }}
+ rules:
+ - host: {{ .Values.ingress.domain }}
+ http:
+ paths:
+ - path: /
+ pathType: Prefix
+ backend:
+ service:
+ name: soft-serve
+ port:
+ name: http
+{{ end }}
diff --git a/charts/soft-serve/templates/keys.yaml b/charts/soft-serve/templates/keys.yaml
index 5a89250..6ba4849 100644
--- a/charts/soft-serve/templates/keys.yaml
+++ b/charts/soft-serve/templates/keys.yaml
@@ -1,3 +1,4 @@
+{{ if and .Values.privateKey .Values.publicKey }}
apiVersion: v1
kind: ConfigMap
metadata:
@@ -6,3 +7,4 @@
data:
key: {{ toYaml .Values.privateKey | indent 2 }}
key.pub: {{ toYaml .Values.publicKey | indent 2 }}
+{{ end }}
diff --git a/charts/soft-serve/templates/service-transport.yaml b/charts/soft-serve/templates/service-transport.yaml
new file mode 100644
index 0000000..969fbbe
--- /dev/null
+++ b/charts/soft-serve/templates/service-transport.yaml
@@ -0,0 +1,13 @@
+{{ if .Values.ingress.enabled }}
+apiVersion: transport.dodo.cloud/v1
+kind: ServiceTransport
+metadata:
+ name: ingress-transport
+ namespace: {{ .Release.Namespace }}
+spec:
+ port: {{ .Values.port }}
+ sourcePort: {{ .Values.ingress.sourcePort }}
+ protocol: TCP
+ service: soft-serve
+ ingressClassName: {{ .Values.ingress.ingressClassName }}
+{{ end }}
diff --git a/charts/soft-serve/templates/service.yaml b/charts/soft-serve/templates/service.yaml
index c1e3326..13c3f52 100644
--- a/charts/soft-serve/templates/service.yaml
+++ b/charts/soft-serve/templates/service.yaml
@@ -4,7 +4,12 @@
name: soft-serve
namespace: {{ .Release.Namespace }}
annotations:
+ {{ if .Values.reservedIP }}
metallb.universe.tf/loadBalancerIPs: {{ .Values.reservedIP }}
+ {{ end }}
+ {{ if .Values.addressPool }}
+ metallb.universe.tf/address-pool: {{ .Values.addressPool }}
+ {{ end }}
spec:
type: LoadBalancer
selector:
@@ -13,3 +18,9 @@
- name: ssh
port: {{ .Values.port }}
protocol: TCP
+ {{ if .Values.ingress.enabled }}
+ - name: http
+ port: 80
+ targetPort: http
+ protocol: TCP
+ {{ end }}
diff --git a/charts/soft-serve/templates/stateful-set.yaml b/charts/soft-serve/templates/stateful-set.yaml
index 1436ec8..891e828 100644
--- a/charts/soft-serve/templates/stateful-set.yaml
+++ b/charts/soft-serve/templates/stateful-set.yaml
@@ -18,9 +18,11 @@
- name: data
persistentVolumeClaim:
claimName: data
+ {{ if and .Values.privateKey .Values.publicKey }}
- name: keys
configMap:
name: keys
+ {{ end }}
containers:
- name: soft-serve
image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
@@ -30,18 +32,31 @@
value: ":{{ .Values.port }}"
- name: SOFT_SERVE_INITIAL_ADMIN_KEYS
value: "{{ .Values.adminKey }}"
+ {{ if and .Values.privateKey .Values.publicKey }}
- name: SOFT_SERVE_SSH_KEY_PATH
value: /.ssh/key
+ {{ end }}
- name: SOFT_SERVE_DATA_PATH
value: /var/lib/soft-serve/repos
+ {{ if .Values.ingress.enabled }}
+ - name: SOFT_SERVE_HTTP_LISTEN_ADDR
+ value: ":80"
+ - name: SOFT_SERVE_HTTP_PUBLIC_URL
+ value: "http://{{ .Values.ingress.domain }}"
+ {{ end }}
ports:
- name: ssh
containerPort: {{ .Values.port }}
protocol: TCP
+ - name: http
+ containerPort: 80
+ protocol: TCP
volumeMounts:
- name: data
mountPath: /var/lib/soft-serve
readOnly: false
+ {{ if and .Values.privateKey .Values.publicKey }}
- name: keys
mountPath: /.ssh
readOnly: true
+ {{ end }}
diff --git a/charts/soft-serve/values.yaml b/charts/soft-serve/values.yaml
index 2188afb..a9911f4 100644
--- a/charts/soft-serve/values.yaml
+++ b/charts/soft-serve/values.yaml
@@ -8,4 +8,11 @@
privateKey: ""
publicKey: ""
adminKey: ""
-reservedIP: 192.168.0.100
+reservedIP: ""
+addressPool: ""
+ingress:
+ enabled: false
+ domain: git.p.example.com
+ ingressClassName: example-ingress-private
+ certificateIssuer: ""
+ sourcePort: 0