| # |
| # Licensed to the Apache Software Foundation (ASF) under one or more |
| # contributor license agreements. See the NOTICE file distributed with |
| # this work for additional information regarding copyright ownership. |
| # The ASF licenses this file to You under the Apache License, Version 2.0 |
| # (the "License"); you may not use this file except in compliance with |
| # the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| apiVersion: v1 |
| kind: Service |
| metadata: |
| name: {{ include "apisix.fullname" . }}-gateway |
| namespace: {{ .Release.Namespace }} |
| annotations: |
| {{- range $key, $value := .Values.service.annotations }} |
| {{ $key }}: {{ $value | quote }} |
| {{- end }} |
| labels: |
| {{- include "apisix.labels" . | nindent 4 }} |
| app.kubernetes.io/service: apisix-gateway |
| spec: |
| type: {{ .Values.service.type }} |
| externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy }} |
| {{- if eq .Values.service.type "LoadBalancer" }} |
| {{- if .Values.service.loadBalancerIP }} |
| loadBalancerIP: {{ .Values.service.loadBalancerIP }} |
| {{- end }} |
| {{- if .Values.service.loadBalancerSourceRanges }} |
| loadBalancerSourceRanges: |
| {{- range $cidr := .Values.service.loadBalancerSourceRanges }} |
| - {{ $cidr }} |
| {{- end }} |
| {{- end }} |
| {{- end }} |
| {{- if gt (len .Values.service.externalIPs) 0 }} |
| externalIPs: |
| {{- range $ip := .Values.service.externalIPs }} |
| - {{ $ip }} |
| {{- end }} |
| {{- end }} |
| ports: |
| {{- if .Values.service.http.enabled }} |
| - name: apisix-gateway |
| port: {{ .Values.service.http.servicePort }} |
| targetPort: {{ .Values.service.http.containerPort }} |
| {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.http.nodePort))) }} |
| nodePort: {{ .Values.service.http.nodePort }} |
| {{- end }} |
| protocol: TCP |
| {{- end }} |
| {{- range .Values.service.http.additionalContainerPorts }} |
| - name: apisix-gateway-{{ .port | toString }} |
| port: {{ .port }} |
| targetPort: {{ .port }} |
| protocol: TCP |
| {{- end }} |
| {{- if or .Values.apisix.ssl.enabled }} |
| - name: apisix-gateway-tls |
| port: {{ .Values.service.tls.servicePort }} |
| targetPort: {{ .Values.apisix.ssl.containerPort }} |
| {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.tls.nodePort))) }} |
| nodePort: {{ .Values.service.tls.nodePort }} |
| {{- end }} |
| protocol: TCP |
| {{- end }} |
| {{- range .Values.apisix.ssl.additionalContainerPorts }} |
| - name: apisix-gateway-tls-{{ .port | toString }} |
| port: {{ .port }} |
| targetPort: {{ .port }} |
| {{- end }} |
| {{- if and .Values.service.stream.enabled (or (gt (len .Values.service.stream.tcp) 0) (gt (len .Values.service.stream.udp) 0)) }} |
| {{- with .Values.service.stream }} |
| {{- if (gt (len .tcp) 0) }} |
| {{- range $index, $port := .tcp }} |
| - name: proxy-tcp-{{ $index | toString }} |
| {{- if kindIs "map" $port }} |
| port: {{ splitList ":" ($port.addr | toString) | last }} |
| targetPort: {{ splitList ":" ($port.addr | toString) | last }} |
| protocol: TCP |
| {{- else }} |
| port: {{ $port }} |
| targetPort: {{ $port }} |
| protocol: TCP |
| {{- end }} |
| {{- end }} |
| {{- end }} |
| {{- if (gt (len .udp) 0) }} |
| {{- range $index, $port := .udp }} |
| - name: proxy-udp-{{ $index | toString }} |
| port: {{ $port }} |
| targetPort: {{ $port }} |
| protocol: UDP |
| {{- end }} |
| {{- end }} |
| {{- end }} |
| {{- end }} |
| selector: |
| {{- include "apisix.selectorLabels" . | nindent 4 }} |