diff --git a/cyberchef/.helmignore b/cyberchef/.helmignore new file mode 100644 index 0000000..0e8a0eb --- /dev/null +++ b/cyberchef/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/cyberchef/Chart.yaml b/cyberchef/Chart.yaml new file mode 100644 index 0000000..d1ea12c --- /dev/null +++ b/cyberchef/Chart.yaml @@ -0,0 +1,11 @@ +apiVersion: v2 +name: cyberchef +description: A Helm chart to deploy Cyberchef on Kubernetes + +type: application + +version: 1.0.0+up10.22.1 +appVersion: "10.22.1" + +maintainers: + - name: jklein \ No newline at end of file diff --git a/cyberchef/templates/cyberchef.deployment.yaml b/cyberchef/templates/cyberchef.deployment.yaml new file mode 100644 index 0000000..570aa7f --- /dev/null +++ b/cyberchef/templates/cyberchef.deployment.yaml @@ -0,0 +1,36 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ .Release.Name }}-{{ .Chart.Name }}-deployment + labels: + app: {{ .Release.Name }}-{{ .Chart.Name }}-deployment +spec: + replicas: 1 + selector: + matchLabels: + app: {{ .Release.Name }}-{{ .Chart.Name }}-deployment + template: + metadata: + name: {{ .Release.Name }}-{{ .Chart.Name }}-deployment + labels: + app: {{ .Release.Name }}-{{ .Chart.Name }}-deployment + spec: + automountServiceAccountToken: false + containers: + - name: {{ .Release.Name }}-{{ .Chart.Name }}-deployment + image: "ghcr.io/gchq/cyberchef:{{ .Chart.AppVersion }}" + imagePullPolicy: IfNotPresent + ports: + - containerPort: 80 + protocol: TCP + name: http + resources: + requests: + memory: "{{ .Values.cyberchef.resources.requests.memory }}" + cpu: "{{ .Values.cyberchef.resources.requests.cpu }}" + ephemeral-storage: "{{ .Values.cyberchef.resources.requests.ephemeralStorage }}" + limits: + memory: "{{ .Values.cyberchef.resources.limits.memory }}" + cpu: "{{ .Values.cyberchef.resources.limits.cpu }}" + ephemeral-storage: "{{ .Values.cyberchef.resources.limits.ephemeralStorage }}" + restartPolicy: Always diff --git a/cyberchef/templates/cyberchef.ingress.yaml b/cyberchef/templates/cyberchef.ingress.yaml new file mode 100644 index 0000000..0d0d312 --- /dev/null +++ b/cyberchef/templates/cyberchef.ingress.yaml @@ -0,0 +1,23 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: {{ .Release.Name }}-{{ .Chart.Name }}--ingress + annotations: + cert-manager.io/cluster-issuer: {{ required "A Cluster-Issuer must be provided" .Values.ingress.clusterIssuer}} +spec: + ingressClassName: nginx + rules: + - host: {{ required "A Domain/Host must be provided" .Values.ingress.domain }} + http: + paths: + - backend: + service: + name: {{ .Release.Name }}-{{ .Chart.Name }}-service + port: + name: http + path: / + pathType: Prefix + tls: + - hosts: + - {{ required "A Domain/Host must be provided" .Values.ingress.domain }} + secretName: tls-{{ .Release.Name }}-{{ .Chart.Name }}-ingress diff --git a/cyberchef/templates/cyberchef.service.yaml b/cyberchef/templates/cyberchef.service.yaml new file mode 100644 index 0000000..4c42512 --- /dev/null +++ b/cyberchef/templates/cyberchef.service.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ .Release.Name }}-{{ .Chart.Name }}-service +spec: + selector: + app: {{ .Release.Name }}-{{ .Chart.Name }}-deployment + ports: + - protocol: TCP + port: 80 + targetPort: http + name: http + type: ClusterIP diff --git a/cyberchef/values.yaml b/cyberchef/values.yaml new file mode 100644 index 0000000..ac44f32 --- /dev/null +++ b/cyberchef/values.yaml @@ -0,0 +1,15 @@ +cyberchef: + resources: + requests: + cpu: 0.1 + memory: 512Mi + ephemeralStorage: 10Mi + limits: + cpu: 1 + memory: 768Mi + ephemeralStorage: 100Mi + +ingress: + enabled: true + clusterIssuer: letsencrypt + domain: null \ No newline at end of file