This commit is contained in:
		
							
								
								
									
										150
									
								
								helm-charts/harbor/templates/nginx/configmap-http.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										150
									
								
								helm-charts/harbor/templates/nginx/configmap-http.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,150 @@ | ||||
| {{- if and (ne .Values.expose.type "ingress") (not .Values.expose.tls.enabled) }} | ||||
| {{- $scheme := (include "harbor.component.scheme" .) -}} | ||||
| apiVersion: v1 | ||||
| kind: ConfigMap | ||||
| metadata: | ||||
|   name: {{ template "harbor.nginx" . }} | ||||
|   labels: | ||||
| {{ include "harbor.labels" . | indent 4 }} | ||||
| data: | ||||
|   nginx.conf: |+ | ||||
|     worker_processes auto; | ||||
|     pid /tmp/nginx.pid; | ||||
|  | ||||
|     events { | ||||
|       worker_connections 3096; | ||||
|       use epoll; | ||||
|       multi_accept on; | ||||
|     } | ||||
|  | ||||
|     http { | ||||
|       client_body_temp_path /tmp/client_body_temp; | ||||
|       proxy_temp_path /tmp/proxy_temp; | ||||
|       fastcgi_temp_path /tmp/fastcgi_temp; | ||||
|       uwsgi_temp_path /tmp/uwsgi_temp; | ||||
|       scgi_temp_path /tmp/scgi_temp; | ||||
|       tcp_nodelay on; | ||||
|  | ||||
|       # this is necessary for us to be able to disable request buffering in all cases | ||||
|       proxy_http_version 1.1; | ||||
|  | ||||
|       upstream core { | ||||
|         server "{{ template "harbor.core" . }}:{{ template "harbor.core.servicePort" . }}"; | ||||
|       } | ||||
|  | ||||
|       upstream portal { | ||||
|         server {{ template "harbor.portal" . }}:{{ template "harbor.portal.servicePort" . }}; | ||||
|       } | ||||
|  | ||||
|       log_format timed_combined '[$time_local]:$remote_addr - ' | ||||
|         '"$request" $status $body_bytes_sent ' | ||||
|         '"$http_referer" "$http_user_agent" ' | ||||
|         '$request_time $upstream_response_time $pipe'; | ||||
|  | ||||
|       access_log /dev/stdout timed_combined; | ||||
|  | ||||
|       map $http_x_forwarded_proto $x_forwarded_proto { | ||||
|         default $http_x_forwarded_proto; | ||||
|         ""      $scheme; | ||||
|       } | ||||
|  | ||||
|       server { | ||||
|         {{- if .Values.ipFamily.ipv4.enabled}} | ||||
|         listen 8080; | ||||
|         {{- end}} | ||||
|         {{- if .Values.ipFamily.ipv6.enabled }} | ||||
|         listen [::]:8080; | ||||
|         {{- end }} | ||||
|         server_tokens off; | ||||
|         # disable any limits to avoid HTTP 413 for large image uploads | ||||
|         client_max_body_size 0; | ||||
|  | ||||
|         # Add extra headers | ||||
|         add_header X-Frame-Options DENY; | ||||
|         add_header Content-Security-Policy "frame-ancestors 'none'"; | ||||
|  | ||||
|         location / { | ||||
|           proxy_pass {{ $scheme }}://portal/; | ||||
|           proxy_set_header Host $host; | ||||
|           proxy_set_header X-Real-IP $remote_addr; | ||||
|           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||||
|           proxy_set_header X-Forwarded-Proto $x_forwarded_proto; | ||||
|  | ||||
|           proxy_buffering off; | ||||
|           proxy_request_buffering off; | ||||
|         } | ||||
|  | ||||
|         location /api/ { | ||||
|           proxy_pass {{ $scheme }}://core/api/; | ||||
|         {{- if and .Values.internalTLS.enabled }} | ||||
|           proxy_ssl_verify        off; | ||||
|           proxy_ssl_session_reuse on; | ||||
|         {{- end }} | ||||
|           proxy_set_header Host $host; | ||||
|           proxy_set_header X-Real-IP $remote_addr; | ||||
|           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||||
|           proxy_set_header X-Forwarded-Proto $x_forwarded_proto; | ||||
|  | ||||
|           proxy_buffering off; | ||||
|           proxy_request_buffering off; | ||||
|         } | ||||
|  | ||||
|         location /chartrepo/ { | ||||
|           proxy_pass {{ $scheme }}://core/chartrepo/; | ||||
|         {{- if and .Values.internalTLS.enabled }} | ||||
|           proxy_ssl_verify        off; | ||||
|           proxy_ssl_session_reuse on; | ||||
|         {{- end }} | ||||
|           proxy_set_header Host $host; | ||||
|           proxy_set_header X-Real-IP $remote_addr; | ||||
|           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||||
|           proxy_set_header X-Forwarded-Proto $x_forwarded_proto; | ||||
|  | ||||
|           proxy_buffering off; | ||||
|           proxy_request_buffering off; | ||||
|         } | ||||
|  | ||||
|         location /c/ { | ||||
|           proxy_pass {{ $scheme }}://core/c/; | ||||
|           proxy_set_header Host $host; | ||||
|           proxy_set_header X-Real-IP $remote_addr; | ||||
|           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||||
|           proxy_set_header X-Forwarded-Proto $x_forwarded_proto; | ||||
|  | ||||
|           proxy_buffering off; | ||||
|           proxy_request_buffering off; | ||||
|         } | ||||
|  | ||||
|         location /v1/ { | ||||
|           return 404; | ||||
|         } | ||||
|  | ||||
|         location /v2/ { | ||||
|           proxy_pass {{ $scheme }}://core/v2/; | ||||
|           proxy_set_header Host $http_host; | ||||
|           proxy_set_header X-Real-IP $remote_addr; | ||||
|           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||||
|           proxy_set_header X-Forwarded-Proto $x_forwarded_proto; | ||||
|           proxy_buffering off; | ||||
|           proxy_request_buffering off; | ||||
|           proxy_send_timeout 900; | ||||
|           proxy_read_timeout 900; | ||||
|         } | ||||
|  | ||||
|         location /service/ { | ||||
|           proxy_pass {{ $scheme }}://core/service/; | ||||
|           proxy_set_header Host $host; | ||||
|           proxy_set_header X-Real-IP $remote_addr; | ||||
|           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||||
|           proxy_set_header X-Forwarded-Proto $x_forwarded_proto; | ||||
|  | ||||
|           proxy_buffering off; | ||||
|           proxy_request_buffering off; | ||||
|         } | ||||
|  | ||||
|       location /service/notifications { | ||||
|           return 404; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
| {{- end }} | ||||
							
								
								
									
										187
									
								
								helm-charts/harbor/templates/nginx/configmap-https.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										187
									
								
								helm-charts/harbor/templates/nginx/configmap-https.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,187 @@ | ||||
| {{- if and (ne .Values.expose.type "ingress") .Values.expose.tls.enabled }} | ||||
| {{- $scheme := (include "harbor.component.scheme" .) -}} | ||||
| apiVersion: v1 | ||||
| kind: ConfigMap | ||||
| metadata: | ||||
|   name: {{ template "harbor.nginx" . }} | ||||
|   labels: | ||||
| {{ include "harbor.labels" . | indent 4 }} | ||||
| data: | ||||
|   nginx.conf: |+ | ||||
|     worker_processes auto; | ||||
|     pid /tmp/nginx.pid; | ||||
|  | ||||
|     events { | ||||
|       worker_connections 3096; | ||||
|       use epoll; | ||||
|       multi_accept on; | ||||
|     } | ||||
|  | ||||
|     http { | ||||
|       client_body_temp_path /tmp/client_body_temp; | ||||
|       proxy_temp_path /tmp/proxy_temp; | ||||
|       fastcgi_temp_path /tmp/fastcgi_temp; | ||||
|       uwsgi_temp_path /tmp/uwsgi_temp; | ||||
|       scgi_temp_path /tmp/scgi_temp; | ||||
|       tcp_nodelay on; | ||||
|  | ||||
|       # this is necessary for us to be able to disable request buffering in all cases | ||||
|       proxy_http_version 1.1; | ||||
|  | ||||
|       upstream core { | ||||
|         server "{{ template "harbor.core" . }}:{{ template "harbor.core.servicePort" . }}"; | ||||
|       } | ||||
|  | ||||
|       upstream portal { | ||||
|         server "{{ template "harbor.portal" . }}:{{ template "harbor.portal.servicePort" . }}"; | ||||
|       } | ||||
|  | ||||
|       log_format timed_combined '[$time_local]:$remote_addr - ' | ||||
|         '"$request" $status $body_bytes_sent ' | ||||
|         '"$http_referer" "$http_user_agent" ' | ||||
|         '$request_time $upstream_response_time $pipe'; | ||||
|  | ||||
|       access_log /dev/stdout timed_combined; | ||||
|  | ||||
|       map $http_x_forwarded_proto $x_forwarded_proto { | ||||
|         default $http_x_forwarded_proto; | ||||
|         ""      $scheme; | ||||
|       } | ||||
|  | ||||
|       server { | ||||
|         {{- if .Values.ipFamily.ipv4.enabled }} | ||||
|         listen 8443 ssl; | ||||
|         {{- end}} | ||||
|         {{- if .Values.ipFamily.ipv6.enabled }} | ||||
|         listen [::]:8443 ssl; | ||||
|         {{- end }} | ||||
|     #    server_name harbordomain.com; | ||||
|         server_tokens off; | ||||
|         # SSL | ||||
|         ssl_certificate /etc/nginx/cert/tls.crt; | ||||
|         ssl_certificate_key /etc/nginx/cert/tls.key; | ||||
|  | ||||
|         # Recommendations from https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html | ||||
|         ssl_protocols TLSv1.2 TLSv1.3; | ||||
|         {{- if .Values.internalTLS.strong_ssl_ciphers }} | ||||
|         ssl_ciphers ECDHE+AESGCM:DHE+AESGCM:ECDHE+RSA+SHA256:DHE+RSA+SHA256:!AES128; | ||||
|         {{ else }} | ||||
|         ssl_ciphers '!aNULL:kECDH+AESGCM:ECDH+AESGCM:RSA+AESGCM:kECDH+AES:ECDH+AES:RSA+AES:'; | ||||
|         {{- end }} | ||||
|         ssl_prefer_server_ciphers on; | ||||
|         ssl_session_cache shared:SSL:10m; | ||||
|  | ||||
|         # disable any limits to avoid HTTP 413 for large image uploads | ||||
|         client_max_body_size 0; | ||||
|  | ||||
|         # required to avoid HTTP 411: see Issue #1486 (https://github.com/docker/docker/issues/1486) | ||||
|         chunked_transfer_encoding on; | ||||
|  | ||||
|         # Add extra headers | ||||
|         add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload"; | ||||
|         add_header X-Frame-Options DENY; | ||||
|         add_header Content-Security-Policy "frame-ancestors 'none'"; | ||||
|  | ||||
|         location / { | ||||
|           proxy_pass {{ $scheme }}://portal/; | ||||
|           proxy_set_header Host $http_host; | ||||
|           proxy_set_header X-Real-IP $remote_addr; | ||||
|           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||||
|           proxy_set_header X-Forwarded-Proto $x_forwarded_proto; | ||||
|  | ||||
|           proxy_cookie_path / "/; HttpOnly; Secure"; | ||||
|  | ||||
|           proxy_buffering off; | ||||
|           proxy_request_buffering off; | ||||
|         } | ||||
|  | ||||
|         location /api/ { | ||||
|           proxy_pass {{ $scheme }}://core/api/; | ||||
|         {{- if and .Values.internalTLS.enabled }} | ||||
|           proxy_ssl_verify        off; | ||||
|           proxy_ssl_session_reuse on; | ||||
|         {{- end }} | ||||
|           proxy_set_header Host $host; | ||||
|           proxy_set_header X-Real-IP $remote_addr; | ||||
|           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||||
|           proxy_set_header X-Forwarded-Proto $x_forwarded_proto; | ||||
|  | ||||
|           proxy_cookie_path / "/; Secure"; | ||||
|  | ||||
|           proxy_buffering off; | ||||
|           proxy_request_buffering off; | ||||
|         } | ||||
|  | ||||
|         location /chartrepo/ { | ||||
|           proxy_pass {{ $scheme }}://core/chartrepo/; | ||||
|         {{- if and .Values.internalTLS.enabled }} | ||||
|           proxy_ssl_verify        off; | ||||
|           proxy_ssl_session_reuse on; | ||||
|         {{- end }} | ||||
|           proxy_set_header Host $host; | ||||
|           proxy_set_header X-Real-IP $remote_addr; | ||||
|           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||||
|           proxy_set_header X-Forwarded-Proto $x_forwarded_proto; | ||||
|  | ||||
|           proxy_cookie_path / "/; Secure"; | ||||
|  | ||||
|           proxy_buffering off; | ||||
|           proxy_request_buffering off; | ||||
|         } | ||||
|  | ||||
|         location /c/ { | ||||
|           proxy_pass {{ $scheme }}://core/c/; | ||||
|           proxy_set_header Host $host; | ||||
|           proxy_set_header X-Real-IP $remote_addr; | ||||
|           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||||
|           proxy_set_header X-Forwarded-Proto $x_forwarded_proto; | ||||
|  | ||||
|           proxy_cookie_path / "/; Secure"; | ||||
|  | ||||
|           proxy_buffering off; | ||||
|           proxy_request_buffering off; | ||||
|         } | ||||
|  | ||||
|         location /v1/ { | ||||
|           return 404; | ||||
|         } | ||||
|  | ||||
|         location /v2/ { | ||||
|           proxy_pass {{ $scheme }}://core/v2/; | ||||
|           proxy_set_header Host $http_host; | ||||
|           proxy_set_header X-Real-IP $remote_addr; | ||||
|           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||||
|           proxy_set_header X-Forwarded-Proto $x_forwarded_proto; | ||||
|           proxy_buffering off; | ||||
|           proxy_request_buffering off; | ||||
|         } | ||||
|  | ||||
|         location /service/ { | ||||
|           proxy_pass {{ $scheme }}://core/service/; | ||||
|           proxy_set_header Host $http_host; | ||||
|           proxy_set_header X-Real-IP $remote_addr; | ||||
|           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||||
|           proxy_set_header X-Forwarded-Proto $x_forwarded_proto; | ||||
|  | ||||
|           proxy_cookie_path / "/; Secure"; | ||||
|  | ||||
|           proxy_buffering off; | ||||
|           proxy_request_buffering off; | ||||
|         } | ||||
|  | ||||
|       location /service/notifications { | ||||
|           return 404; | ||||
|         } | ||||
|       } | ||||
|         server { | ||||
|           {{- if .Values.ipFamily.ipv4.enabled }} | ||||
|           listen 8080; | ||||
|           {{- end}} | ||||
|           {{- if .Values.ipFamily.ipv6.enabled }} | ||||
|           listen [::]:8080; | ||||
|           {{- end}} | ||||
|           #server_name harbordomain.com; | ||||
|           return 301 https://$host$request_uri; | ||||
|       } | ||||
|     } | ||||
| {{- end }} | ||||
							
								
								
									
										126
									
								
								helm-charts/harbor/templates/nginx/deployment.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										126
									
								
								helm-charts/harbor/templates/nginx/deployment.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,126 @@ | ||||
| {{- if ne .Values.expose.type "ingress" }} | ||||
| apiVersion: apps/v1 | ||||
| kind: Deployment | ||||
| metadata: | ||||
|   name: {{ template "harbor.nginx" . }} | ||||
|   labels: | ||||
| {{ include "harbor.labels" . | indent 4 }} | ||||
|     component: nginx | ||||
| spec: | ||||
|   replicas: {{ .Values.nginx.replicas }} | ||||
|   revisionHistoryLimit: {{ .Values.nginx.revisionHistoryLimit }} | ||||
|   selector: | ||||
|     matchLabels: | ||||
| {{ include "harbor.matchLabels" . | indent 6 }} | ||||
|       component: nginx | ||||
|   template: | ||||
|     metadata: | ||||
|       labels: | ||||
| {{ include "harbor.labels" . | indent 8 }} | ||||
|         component: nginx | ||||
| {{- if .Values.nginx.podLabels }} | ||||
| {{ toYaml .Values.nginx.podLabels | indent 8 }} | ||||
| {{- end }} | ||||
|       annotations: | ||||
|       {{- if not .Values.expose.tls.enabled }} | ||||
|         checksum/configmap: {{ include (print $.Template.BasePath "/nginx/configmap-http.yaml") . | sha256sum }} | ||||
|       {{- else }} | ||||
|         checksum/configmap: {{ include (print $.Template.BasePath "/nginx/configmap-https.yaml") . | sha256sum }} | ||||
|       {{- end }} | ||||
|       {{- if eq (include "harbor.autoGenCertForNginx" .) "true" }} | ||||
|         checksum/secret: {{ include (print $.Template.BasePath "/nginx/secret.yaml") . | sha256sum }} | ||||
|       {{- end }} | ||||
| {{- if .Values.nginx.podAnnotations }} | ||||
| {{ toYaml .Values.nginx.podAnnotations | indent 8 }} | ||||
| {{- end }} | ||||
|     spec: | ||||
| {{- if .Values.nginx.serviceAccountName }} | ||||
|       serviceAccountName: {{ .Values.nginx.serviceAccountName }} | ||||
| {{- end }} | ||||
|       securityContext: | ||||
|         runAsUser: 10000 | ||||
|         fsGroup: 10000 | ||||
|       {{- with .Values.imagePullSecrets }} | ||||
|       imagePullSecrets: | ||||
|         {{- toYaml . | nindent 8 }} | ||||
|       {{- end }} | ||||
|       automountServiceAccountToken: {{ .Values.nginx.automountServiceAccountToken | default false }} | ||||
| {{- with .Values.nginx.topologySpreadConstraints}} | ||||
|       topologySpreadConstraints: | ||||
| {{- range . }} | ||||
|       - {{ . | toYaml | indent 8 | trim }} | ||||
|         labelSelector: | ||||
|           matchLabels: | ||||
| {{ include "harbor.matchLabels" $ | indent 12 }} | ||||
|             component: nginx | ||||
| {{- end }} | ||||
| {{- end }} | ||||
|       containers: | ||||
|       - name: nginx | ||||
|         image: "{{ .Values.nginx.image.repository }}:{{ .Values.nginx.image.tag }}" | ||||
|         imagePullPolicy: "{{ .Values.imagePullPolicy }}" | ||||
|         {{- $_ := set . "scheme" "HTTP" -}} | ||||
|         {{- $_ := set . "port" "8080" -}} | ||||
|         {{- if .Values.expose.tls.enabled }} | ||||
|           {{- $_ := set . "scheme" "HTTPS" -}} | ||||
|           {{- $_ := set . "port" "8443" -}} | ||||
|         {{- end }} | ||||
|         livenessProbe: | ||||
|           httpGet: | ||||
|             scheme: {{ .scheme }} | ||||
|             path: / | ||||
|             port: {{ .port }} | ||||
|           initialDelaySeconds: 300 | ||||
|           periodSeconds: 10 | ||||
|         readinessProbe: | ||||
|           httpGet: | ||||
|             scheme: {{ .scheme }} | ||||
|             path: / | ||||
|             port: {{ .port }} | ||||
|           initialDelaySeconds: 1 | ||||
|           periodSeconds: 10 | ||||
| {{- if .Values.nginx.resources }} | ||||
|         resources: | ||||
| {{ toYaml .Values.nginx.resources | indent 10 }} | ||||
| {{- end }} | ||||
| {{- with .Values.nginx.extraEnvVars }} | ||||
|         env: | ||||
| {{- toYaml . | nindent 10 }} | ||||
| {{- end }} | ||||
|         ports: | ||||
|         - containerPort: 8080 | ||||
|         - containerPort: 8443 | ||||
|         - containerPort: 4443 | ||||
|         volumeMounts: | ||||
|         - name: config | ||||
|           mountPath: /etc/nginx/nginx.conf | ||||
|           subPath: nginx.conf | ||||
|         {{- if .Values.expose.tls.enabled }} | ||||
|         - name: certificate | ||||
|           mountPath: /etc/nginx/cert | ||||
|         {{- end }} | ||||
|       volumes: | ||||
|       - name: config | ||||
|         configMap: | ||||
|           name: {{ template "harbor.nginx" . }} | ||||
|       {{- if .Values.expose.tls.enabled }} | ||||
|       - name: certificate | ||||
|         secret: | ||||
|           secretName: {{ template "harbor.tlsSecretForNginx" . }} | ||||
|       {{- end }} | ||||
|     {{- with .Values.nginx.nodeSelector }} | ||||
|       nodeSelector: | ||||
| {{ toYaml . | indent 8 }} | ||||
|     {{- end }} | ||||
|     {{- with .Values.nginx.affinity }} | ||||
|       affinity: | ||||
| {{ toYaml . | indent 8 }} | ||||
|     {{- end }} | ||||
|     {{- with .Values.nginx.tolerations }} | ||||
|       tolerations: | ||||
| {{ toYaml . | indent 8 }} | ||||
|     {{- end }} | ||||
|     {{- if .Values.nginx.priorityClassName }} | ||||
|       priorityClassName: {{ .Values.nginx.priorityClassName }} | ||||
|     {{- end }} | ||||
| {{- end }} | ||||
							
								
								
									
										23
									
								
								helm-charts/harbor/templates/nginx/secret.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								helm-charts/harbor/templates/nginx/secret.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | ||||
| {{- if eq (include "harbor.autoGenCertForNginx" .) "true" }} | ||||
| {{- $ca := genCA "harbor-ca" 365 }} | ||||
| {{- $cn := (required "The \"expose.tls.auto.commonName\" is required!" .Values.expose.tls.auto.commonName) }} | ||||
| apiVersion: v1 | ||||
| kind: Secret | ||||
| metadata: | ||||
|   name: {{ template "harbor.nginx" . }} | ||||
|   labels: | ||||
| {{ include "harbor.labels" . | indent 4 }} | ||||
| type: Opaque | ||||
| data: | ||||
|   {{- if regexMatch `^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$` $cn }} | ||||
|   {{- $cert := genSignedCert $cn (list $cn) nil 365 $ca }} | ||||
|   tls.crt: {{ $cert.Cert | b64enc | quote }} | ||||
|   tls.key: {{ $cert.Key | b64enc | quote }} | ||||
|   ca.crt: {{ $ca.Cert | b64enc | quote }} | ||||
|   {{- else }} | ||||
|   {{- $cert := genSignedCert $cn nil (list $cn) 365 $ca }} | ||||
|   tls.crt: {{ $cert.Cert | b64enc | quote }} | ||||
|   tls.key: {{ $cert.Key | b64enc | quote }} | ||||
|   ca.crt: {{ $ca.Cert | b64enc | quote }} | ||||
|   {{- end }} | ||||
| {{- end }} | ||||
							
								
								
									
										78
									
								
								helm-charts/harbor/templates/nginx/service.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								helm-charts/harbor/templates/nginx/service.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,78 @@ | ||||
| {{- if or (eq .Values.expose.type "clusterIP") (eq .Values.expose.type "nodePort") (eq .Values.expose.type "loadBalancer") }} | ||||
| apiVersion: v1 | ||||
| kind: Service | ||||
| metadata: | ||||
| {{- if eq .Values.expose.type "clusterIP" }} | ||||
| {{- $clusterIP := .Values.expose.clusterIP }} | ||||
|   name: {{ $clusterIP.name }} | ||||
|   labels: | ||||
| {{ include "harbor.labels" . | indent 4 }} | ||||
| {{- with $clusterIP.annotations }} | ||||
|   annotations: | ||||
|   {{- toYaml . | nindent 4 }} | ||||
| {{- end }} | ||||
| spec: | ||||
|   type: ClusterIP | ||||
|   ports: | ||||
|     - name: http | ||||
|       port: {{ $clusterIP.ports.httpPort }} | ||||
|       targetPort: 8080 | ||||
|     {{- if .Values.expose.tls.enabled }} | ||||
|     - name: https | ||||
|       port: {{ $clusterIP.ports.httpsPort }} | ||||
|       targetPort: 8443 | ||||
|     {{- end }} | ||||
| {{- else if eq .Values.expose.type "nodePort" }} | ||||
| {{- $nodePort := .Values.expose.nodePort }} | ||||
|   name: {{ $nodePort.name }} | ||||
|   labels: | ||||
| {{ include "harbor.labels" . | indent 4 }} | ||||
| spec: | ||||
|   type: NodePort | ||||
|   ports: | ||||
|     - name: http | ||||
|       port: {{ $nodePort.ports.http.port }} | ||||
|       targetPort: 8080 | ||||
|       {{- if $nodePort.ports.http.nodePort }} | ||||
|       nodePort: {{ $nodePort.ports.http.nodePort }} | ||||
|       {{- end }} | ||||
|     {{- if .Values.expose.tls.enabled }} | ||||
|     - name: https | ||||
|       port: {{ $nodePort.ports.https.port }} | ||||
|       targetPort: 8443 | ||||
|       {{- if $nodePort.ports.https.nodePort }} | ||||
|       nodePort: {{ $nodePort.ports.https.nodePort }} | ||||
|       {{- end }} | ||||
|     {{- end }} | ||||
| {{- else if eq .Values.expose.type "loadBalancer" }} | ||||
| {{- $loadBalancer := .Values.expose.loadBalancer }} | ||||
|   name: {{ $loadBalancer.name }} | ||||
|   labels: | ||||
| {{ include "harbor.labels" . | indent 4 }} | ||||
| {{- with $loadBalancer.annotations }} | ||||
|   annotations: | ||||
|   {{- toYaml . | nindent 4 }} | ||||
| {{- end }} | ||||
| spec: | ||||
|   type: LoadBalancer | ||||
|   {{- with $loadBalancer.sourceRanges }} | ||||
|   loadBalancerSourceRanges: | ||||
|     {{- toYaml . | nindent 4 }} | ||||
|   {{- end }} | ||||
|   {{- if $loadBalancer.IP }} | ||||
|   loadBalancerIP: {{ $loadBalancer.IP }} | ||||
|   {{- end }} | ||||
|   ports: | ||||
|     - name: http | ||||
|       port: {{ $loadBalancer.ports.httpPort }} | ||||
|       targetPort: 8080 | ||||
|     {{- if .Values.expose.tls.enabled }} | ||||
|     - name: https | ||||
|       port: {{ $loadBalancer.ports.httpsPort }} | ||||
|       targetPort: 8443 | ||||
|     {{- end }} | ||||
| {{- end }} | ||||
|   selector: | ||||
| {{ include "harbor.matchLabels" . | indent 4 }} | ||||
|     component: nginx | ||||
| {{- end }} | ||||
		Reference in New Issue
	
	Block a user