# Copyright © 2017 Amdocs, Bell Canada
#
# Licensed 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.

#{{ if not .Values.disableLogElasticsearch }}
apiVersion: v1
kind: Service
metadata:
  labels:
    app: elasticsearch
  name: elasticsearch
  namespace: {{ .Values.nsPrefix }}
spec:
  ports:
  - name: http
    port: 9200
    targetPort: 9200
    nodePort: {{ .Values.nodePortPrefix }}54
  selector:
    app: elasticsearch
  type: NodePort
---
apiVersion: v1
kind: Service
metadata:
  name: elasticsearchtcp
  namespace: {{ .Values.nsPrefix }}
  labels:
    app: elasticsearch
spec:
  ports:
  - name: tcp
    port: 9300
    targetPort: 9300
  selector:
    app: elasticsearch
#{{ end }}
#{{ if not .Values.disableLogLogstash }}
---
apiVersion: v1
kind: Service
metadata:
  name: logstashinternal
  namespace: {{ .Values.nsPrefix }}
  labels:
    app: logstash
spec:
  ports:
  - name: http
    port: 9600
    targetPort: 9600
  selector:
    app: logstash
---
apiVersion: v1
kind: Service
metadata:
  name: logstash
  namespace: {{ .Values.nsPrefix }}
  labels:
    app: logstash
spec:
  ports:
  - name: transport
    port: 5044
    targetPort: 5044
  selector:
    app: logstash
#{{ end }}
#{{ if not .Values.disableLogKibana }}
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: kibana
  name: kibana
  namespace: {{ .Values.nsPrefix }}
spec:
  ports:
  - name: tcp-ks
    port: 5601
    targetPort: 5601
    nodePort: {{ .Values.nodePortPrefix }}53
  selector:
    app: kibana
  type: NodePort
#{{ end }}
