diff --git a/charts/netbox/Chart.yaml b/charts/netbox/Chart.yaml index bff179b..3b82df3 100644 --- a/charts/netbox/Chart.yaml +++ b/charts/netbox/Chart.yaml @@ -4,4 +4,4 @@ appVersion: "2.6.1" description: An IP address management (IPAM) and data center infrastructure management (DCIM) tool. icon: https://raw.githubusercontent.com/digitalocean/netbox/develop/netbox/project-static/img/netbox.ico name: netbox -version: 0.1.2 +version: 0.2.0 diff --git a/charts/netbox/templates/configuration.yaml b/charts/netbox/templates/configuration.yaml index ecb2ad2..69e21ff 100644 --- a/charts/netbox/templates/configuration.yaml +++ b/charts/netbox/templates/configuration.yaml @@ -1,3 +1,4 @@ +--- apiVersion: v1 kind: ConfigMap metadata: diff --git a/charts/netbox/templates/deployment-front.yaml b/charts/netbox/templates/deployment-front.yaml deleted file mode 100644 index 0de61e6..0000000 --- a/charts/netbox/templates/deployment-front.yaml +++ /dev/null @@ -1,103 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "netbox.fullname" . }}-front - labels: - app.kubernetes.io/name: {{ include "netbox.name" . }} - helm.sh/chart: {{ include "netbox.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - com.digitalocean.netbox/component: front -spec: - replicas: {{ .Values.replicaCount }} - selector: - matchLabels: - app.kubernetes.io/name: {{ include "netbox.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - com.digitalocean.netbox/component: front - template: - metadata: - labels: - app.kubernetes.io/name: {{ include "netbox.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - com.digitalocean.netbox/component: front - spec: - initContainers: - - name: {{ .Chart.Name }} - image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" - imagePullPolicy: {{ .Values.image.pullPolicy }} - command: - - sh - - -c - - | - cp /etc/netbox-nginx/* /tmp/netbox-nginx - sed -e 's!http://netbox:8001!http://{{ include "netbox.fullname" . }}-api:8001!' -i /tmp/netbox-nginx/nginx.conf - cp -r /opt/netbox/netbox/project-static/* \ - /usr/local/lib/python3.6/site-packages/django/contrib/admin/static/* \ - /usr/local/lib/python3.6/site-packages/debug_toolbar/static/* \ - /usr/local/lib/python3.6/site-packages/django_tables2/static/* \ - /usr/local/lib/python3.6/site-packages/drf_yasg/static/* \ - /usr/local/lib/python3.6/site-packages/mptt/static/* \ - /usr/local/lib/python3.6/site-packages/rest_framework/static/* \ - /tmp/netbox-static - resources: - {{- toYaml .Values.resources | nindent 12 }} - volumeMounts: - - name: netbox-nginx-config - mountPath: /tmp/netbox-nginx - - name: netbox-static-files - mountPath: /tmp/netbox-static - # - name: netbox-configuration - # path: /etc/netbox/config - # readOnly: true - # - name: netbox-initializers - # path: /opt/netbox/initializers - # readOnly: true - # - name: netbox-startup-scripts - # path: /opt/netbox/startup_scripts - # readOnly: true - # - name: netbox-reports - # path: /opt/netbox/reports - # readOnly: true - containers: - - name: nginx - image: "nginx:alpine" - imagePullPolicy: Always - command: - - nginx - - -c - - /etc/netbox-nginx/nginx.conf - ports: - - name: http - containerPort: 8080 - protocol: TCP - livenessProbe: - tcpSocket: - port: http - readinessProbe: - tcpSocket: - port: http - volumeMounts: - - name: netbox-nginx-config - mountPath: /etc/netbox-nginx - readOnly: true - - name: netbox-static-files - mountPath: /opt/netbox/netbox/static - readOnly: true - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - volumes: - - name: netbox-nginx-config - emptyDir: {} - - name: netbox-static-files - emptyDir: {} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} diff --git a/charts/netbox/templates/deployment.yaml b/charts/netbox/templates/deployment.yaml index e8b0886..0e1499a 100644 --- a/charts/netbox/templates/deployment.yaml +++ b/charts/netbox/templates/deployment.yaml @@ -51,6 +51,14 @@ spec: {{- toYaml .Values.resources | nindent 12 }} {{- if or .Values.persistence.enabled .Values.extraVolumeMounts }} volumeMounts: + - name: netbox-static-files + mountPath: /opt/netbox/netbox/static + - name: netbox-config-files + mountPath: /etc/netbox/config/gunicorn_config.py + subPath: gunicorn_config.py + readOnly: true + - name: netbox-socket + mountPath: /tmp/netbox {{- if .Values.persistence.enabled }} - name: data mountPath: /etc/netbox/media @@ -71,11 +79,49 @@ spec: # - name: netbox-reports # path: /opt/netbox/reports # readOnly: true + - name: nginx + image: "nginx:alpine" + imagePullPolicy: Always + command: + - nginx + - -c + - /etc/netbox-nginx/nginx.conf + ports: + - name: http + containerPort: 8080 + protocol: TCP + livenessProbe: + tcpSocket: + port: http + readinessProbe: + tcpSocket: + port: http + volumeMounts: + - name: netbox-config-files + mountPath: /etc/netbox-nginx/nginx.conf + subPath: nginx.conf + readOnly: true + - name: netbox-static-files + mountPath: /opt/netbox/netbox/static + readOnly: true + - name: netbox-socket + mountPath: /tmp/netbox + # resources: + # limits: + # cpu: 125m + # memory: 50Mi {{- with .Values.nodeSelector }} nodeSelector: {{- toYaml . | nindent 8 }} {{- end }} volumes: + - name: netbox-config-files + configMap: + name: {{ .Chart.Name }}-config-files + - name: netbox-static-files + emptyDir: {} + - name: netbox-socket + emptyDir: {} # - name: netbox-configuration # configMap: # name: {{ .Chart.Name }}-configuration diff --git a/charts/netbox/templates/nginx-config.yaml b/charts/netbox/templates/nginx-config.yaml new file mode 100644 index 0000000..4907b2c --- /dev/null +++ b/charts/netbox/templates/nginx-config.yaml @@ -0,0 +1,57 @@ +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ .Chart.Name }}-config-files + labels: + app.kubernetes.io/name: {{ include "netbox.name" . }} + helm.sh/chart: {{ include "netbox.chart" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +data: + gunicorn_config.py: |- + command = '/usr/bin/gunicorn' + pythonpath = '/opt/netbox/netbox' + bind = 'unix:/tmp/netbox/gunicorn.sock' + workers = 3 + errorlog = '-' + accesslog = '-' + capture_output = False + loglevel = 'info' + nginx.conf: |- + daemon off; + worker_processes 1; + + error_log /dev/stderr info; + + events { + worker_connections 1024; + } + + http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + sendfile on; + tcp_nopush on; + keepalive_timeout 65; + gzip off; + server_tokens off; + client_max_body_size 10M; + + server { + listen 8080; + access_log off; + + location /static/ { + alias /opt/netbox/netbox/static/; + } + + location / { + proxy_pass unix:/tmp/netbox/gunicorn.sock; + proxy_set_header X-Forwarded-Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-Proto $scheme; + add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"'; + } + } + }