Skip to content

Commit

Permalink
Adding a section for a single pod hosted server-repository setup (#26)
Browse files Browse the repository at this point in the history
Signed-off-by: Matt Halder <[email protected]>
  • Loading branch information
rustyShacklefurd authored Oct 9, 2023
1 parent 0053234 commit 5c8c366
Show file tree
Hide file tree
Showing 13 changed files with 495 additions and 19 deletions.
18 changes: 18 additions & 0 deletions charts/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,13 @@ Selector labels for the server deployment.
app.kubernetes.io/name: {{ printf "%s-%s" .Chart.Name "server" }}
{{- end }}

{{/*
Selector labels for the serverRepository deployment.
*/}}
{{- define "sourcify.serverRepository.selectorLabels" -}}
app.kubernetes.io/name: {{ printf "%s-%s" .Chart.Name "server-repository" }}
{{- end }}

{{/*
Selector labels for the monitor deployment.
*/}}
Expand Down Expand Up @@ -92,6 +99,17 @@ Create the souricfy-server name of the service account to use
{{- end }}
{{- end }}

{{/*
Create the souricfy-serverRepository name of the service account to use
*/}}
{{- define "sourcify.serverRepository.serviceAccountName" -}}
{{- if .Values.serverRepository.serviceAccount.create }}
{{- default (include "sourcify.fullname" .) .Values.serverRepository.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.serverRepository.serviceAccount.name }}
{{- end }}
{{- end }}

{{/*
Create the sourcify-monitor name of the service account to use
*/}}
Expand Down
38 changes: 38 additions & 0 deletions charts/templates/server-repository/configmap.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ template "sourcify.name" . }}
labels:
{{- include "sourcify.labels" . | nindent 4 }}
{{- include "sourcify.serverRepository.selectorLabels" . | nindent 4 }}
{{- if .Values.serverRepository.annotations }}
annotations:
{{ toYaml .Values.serverRepository.annotations | indent 4 }}
{{- end }}
data:
REPOSITORY_PATH: {{ .Values.serverRepository.config.REPOSITORY_PATH }}
SERVER_URL: {{ .Values.serverRepository.config.SERVER_URL }}
REPOSITORY_SERVER_URL: {{ .Values.serverRepository.config.REPOSITORY_SERVER_URL }}
SERVER_PORT: {{ .Values.serverRepository.service.server.port | quote }}
SERVER_EXTERNAL_PORT: {{ .Values.serverRepository.service.server.port | quote }}
REPOSITORY_SERVER_PORT: {{ .Values.serverRepository.service.repository.port | quote }}
REPOSITORY_SERVER_EXTERNAL_PORT: {{ .Values.serverRepository.service.repository.port | quote }}
TESTING: {{ .Values.serverRepository.config.TESTING | quote }}
NODE_ENV: {{ .Values.serverRepository.config.NODE_ENV | default "development" }}
UI_DOMAIN_NAME: {{ .Values.serverRepository.config.UI_DOMAIN_NAME }}

---
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ printf "%s-%s" .Chart.Name "repository" }}
labels:
{{- include "sourcify.labels" . | nindent 4 }}
{{- include "sourcify.serverRepository.selectorLabels" . | nindent 4 }}
{{- if .Values.serverRepository.annotations }}
annotations:
{{ toYaml .Values.serverRepository.annotations | indent 4 }}
{{- end }}
data:
config.json: |-
{{- .Values.serverRepository.config.repository | toJson | nindent 4 }}
127 changes: 127 additions & 0 deletions charts/templates/server-repository/deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
{{- if .Values.serverRepository.enabled }}
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ template "sourcify.name" . }}
labels:
{{- include "sourcify.labels" . | nindent 4 }}
{{- include "sourcify.serverRepository.selectorLabels" . | nindent 4 }}
{{- if .Values.serverRepository.annotations }}
annotations:
{{ toYaml .Values.serverRepository.annotations | indent 4 }}
{{- end }}
spec:
{{- if not .Values.serverRepository.autoscaling.enabled }}
replicas: {{ .Values.serverRepository.replicaCount }}
{{- end }}
selector:
matchLabels:
{{- include "sourcify.serverRepository.selectorLabels" . | nindent 6 }}
template:
metadata:
{{- if .Values.serverRepository.podAnnotations }}
annotations:
{{- toYaml .Values.serverRepository.podAnnotations | nindent 8 }}
{{- end }}
labels:
{{- include "sourcify.serverRepository.selectorLabels" . | nindent 8 }}
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
serviceAccountName: {{ template "sourcify.serverRepository.serviceAccountName" . }}
{{- if .Values.serverRepository.podSecurityContext }}
securityContext:
{{- toYaml .Values.serverRepository.podSecurityContext | nindent 8 }}
{{- end }}
containers:
- name: {{ printf "%s-%s" .Chart.Name "server" }}
securityContext:
{{- toYaml .Values.serverRepository.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ .Values.serverRepository.image.server.tag | default "server-latest" }}"
imagePullPolicy: {{ .Values.serverRepository.image.pullPolicy }}
envFrom:
- configMapRef:
name: {{ template "sourcify.name" . }}
ports:
- name: serverport
containerPort: {{ .Values.serverRepository.service.server.port }}
protocol: TCP
readinessProbe:
httpGet:
path: /health
port: serverport
initialDelaySeconds: 10
livenessProbe:
httpGet:
path: /health
port: serverport
periodSeconds: 10
failureThreshold: 6
{{- if .Values.serverRepository.server.resources }}
resources:
{{- toYaml .Values.serverRepository.server.resources | nindent 12 }}
{{- end }}
volumeMounts:
- name: {{ .Chart.Name }}
mountPath: /data
- name: {{ printf "%s-%s" .Chart.Name "repository" }}
securityContext:
{{- toYaml .Values.repository.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ .Values.serverRepository.image.repository.tag | default "repository-latest" }}"
imagePullPolicy: {{ .Values.repository.image.pullPolicy }}
envFrom:
- configMapRef:
name: {{ template "sourcify.name" . }}
ports:
- name: repositoryport
containerPort: {{ .Values.serverRepository.service.repository.port }}
protocol: TCP
readinessProbe:
httpGet:
path: /select-contract/health
port: repositoryport
initialDelaySeconds: 10
livenessProbe:
httpGet:
path: /select-contract/health
port: repositoryport
periodSeconds: 10
{{- if .Values.serverRepository.repository.resources }}
resources:
{{- toYaml .Values.serverRepository.repository.resources | nindent 12 }}
{{- end }}
volumeMounts:
- name: {{ .Chart.Name }}
mountPath: /data
readOnly: true
- name: {{ printf "%s-%s" .Chart.Name "repository" }}
mountPath: /redirects/config.json
subPath: config.json
{{- if .Values.serverRepository.nodeSelector }}
nodeSelector:
{{- toYaml .Values.serverRepository.nodeSelector | nindent 8 }}
{{- end }}
{{- if .Values.serverRepository.affinity }}
affinity:
{{- toYaml .Values.serverRepository.affinity | nindent 8 }}
{{- end }}
{{- if .Values.serverRepository.tolerations }}
tolerations:
{{- toYaml .Values.serverRepository.tolerations | nindent 8 }}
{{- end }}
{{- if .Values.serverRepository.persistence.enabled }}
volumes:
- name: {{ .Chart.Name }}
persistentVolumeClaim:
claimName: {{ template "sourcify.name" . }}-pvc
{{- else }}
volumes:
- name: {{ .Chart.Name }}
emptyDir: {}
{{- end }}
- configMap:
name: {{ printf "%s-%s" .Chart.Name "repository" }}
name: {{ printf "%s-%s" .Chart.Name "repository" }}
{{- end -}}
28 changes: 28 additions & 0 deletions charts/templates/server-repository/hpa.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{{- if and .Values.serverRepository.enabled .Values.serverRepository.autoscaling.enabled }}
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: {{ template "sourcify.name" . }}-serverRepository
labels:
{{- include "sourcify.serverRepository.labels" . | nindent 4 }}
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: {{ template "sourcify.name" . }}-serverRepository
minReplicas: {{ .Values.serverRepository.autoscaling.minReplicas }}
maxReplicas: {{ .Values.serverRepository.autoscaling.maxReplicas }}
metrics:
{{- if .Values.serverRepository.autoscaling.targetCPUUtilizationPercentage }}
- type: Resource
resource:
name: cpu
targetAverageUtilization: {{ .Values.serverRepository.autoscaling.targetCPUUtilizationPercentage }}
{{- end }}
{{- if .Values.serverRepository.autoscaling.targetMemoryUtilizationPercentage }}
- type: Resource
resource:
name: memory
targetAverageUtilization: {{ .Values.serverRepository.autoscaling.targetMemoryUtilizationPercentage }}
{{- end }}
{{- end }}
61 changes: 61 additions & 0 deletions charts/templates/server-repository/ingress.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
{{- if .Values.serverRepository.ingress.enabled -}}
{{- $fullName := printf "%s-%s" "sourcify.fullname" "serverrepository" -}}
{{- $svcPort := .Values.serverRepository.service.port -}}
{{- if and .Values.serverRepository.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }}
{{- if not (hasKey .Values.serverRepository.ingress.annotations "kubernetes.io/ingress.class") }}
{{- $_ := set .Values.serverRepository.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}}
{{- end }}
{{- end }}
{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}}
apiVersion: networking.k8s.io/v1
{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
apiVersion: networking.k8s.io/v1beta1
{{- else -}}
apiVersion: extensions/v1beta1
{{- end }}
kind: Ingress
metadata:
name: {{ $fullName }}
labels:
{{- include "sourcify.serverRepository.labels" . | nindent 4 }}
{{- if .Values.serverRepository.ingress.annotations }}
annotations:
{{- toYaml .Values.serverRepository.ingress.annotations | nindent 4 }}
{{- end }}
spec:
{{- if and .Values.serverRepository.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }}
ingressClassName: {{ .Values.serverRepository.ingress.className }}
{{- end }}
{{- if .Values.serverRepository.ingress.tls }}
tls:
{{- range .Values.serverRepository.ingress.tls }}
- hosts:
{{- range .hosts }}
- {{ . | quote }}
{{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
{{- range .Values.serverRepository.ingress.hosts }}
- host: {{ .host | quote }}
http:
paths:
{{- range .paths }}
- path: {{ .path }}
{{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }}
pathType: {{ .pathType }}
{{- end }}
backend:
{{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
service:
name: {{ $fullName }}
port:
number: {{ $svcPort }}
{{- else }}
serviceName: {{ $fullName }}
servicePort: {{ $svcPort }}
{{- end }}
{{- end }}
{{- end }}
{{- end }}
20 changes: 20 additions & 0 deletions charts/templates/server-repository/persistentvolumeclaim.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{{- if and .Values.serverRepository.enabled .Values.serverRepository.persistence.enabled }}
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{ template "sourcify.name" . }}-pvc
labels:
{{- include "sourcify.labels" . | nindent 4 }}
{{- include "sourcify.serverRepository.selectorLabels" . | nindent 4 }}
{{- if .Values.serverRepository.annotations }}
annotations:
{{ toYaml .Values.serverRepository.annotations | indent 4 }}
{{- end }}
spec:
accessModes:
- {{ .Values.serverRepository.persistence.accessMode }}
resources:
requests:
storage: {{ .Values.serverRepository.persistence.size }}
storageClassName: {{ .Values.serverRepository.persistence.storageClassName | default "nil" }}
{{- end }}
42 changes: 42 additions & 0 deletions charts/templates/server-repository/service.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
{{- if .Values.serverRepository.enabled }}
apiVersion: v1
kind: Service
metadata:
name: {{ printf "%s-%s" .Chart.Name "server" }}
{{- if .Values.serverRepository.service.server.annotations }}
annotations:
{{- toYaml .Values.serverRepository.service.server.annotations | nindent 4 }}
{{- end }}
labels:
{{- include "sourcify.labels" . | nindent 4 }}
spec:
type: {{ .Values.serverRepository.service.type }}
ports:
- port: {{ .Values.serverRepository.service.server.port }}
targetPort: serverport
protocol: TCP
name: serverport
selector:
{{- include "sourcify.serverRepository.selectorLabels" . | nindent 4 }}

---
apiVersion: v1
kind: Service
metadata:
name: {{ printf "%s-%s" .Chart.Name "repository" }}
{{- if .Values.serverRepository.service.repository.annotations }}
annotations:
{{- toYaml .Values.serverRepository.service.repository.annotations | nindent 4 }}
{{- end }}
labels:
{{- include "sourcify.labels" . | nindent 4 }}
spec:
type: {{ .Values.serverRepository.service.type }}
ports:
- port: {{ .Values.serverRepository.service.repository.port }}
targetPort: repositoryport
protocol: TCP
name: repositoryport
selector:
{{- include "sourcify.serverRepository.selectorLabels" . | nindent 4 }}
{{- end }}
12 changes: 12 additions & 0 deletions charts/templates/server-repository/serviceaccount.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{{- if and .Values.serverRepository.enabled .Values.serverRepository.serviceAccount.create -}}
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ template "sourcify.serverRepository.serviceAccountName" . }}
labels:
{{- include "sourcify.labels" . | nindent 4 }}
{{- with .Values.serverRepository.serviceAccount.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
{{- end }}
17 changes: 17 additions & 0 deletions charts/templates/server-repository/tests/test-connection.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{{- if .Values.serverRepository.enabled }}
apiVersion: v1
kind: Pod
metadata:
name: "{{ include "sourcify.fullname" . }}-server-repository-test-connection"
labels:
{{- include "sourcify.labels" . | nindent 4 }}
annotations:
"helm.sh/hook": test
spec:
containers:
- name: wget
image: busybox
command: ['wget']
args: ['{{ include "sourcify.fullname" . }}:{{ .Values.serverRepository.service.port }}']
restartPolicy: Never
{{- end }}
Loading

0 comments on commit 5c8c366

Please sign in to comment.