# Licensed to 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. Apache Software Foundation (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.

kind: Service
apiVersion: v1
metadata:
  name:  {{ .Spec.ServiceName }}
  namespace: {{ .Namespace }}
  labels:
    app: es
    operator.skywalking.apache.org/es-name: {{ .Name }}
    operator.skywalking.apache.org/application: elasticsearch
    operator.skywalking.apache.org/component: service
spec:
  clusterIP: None
  selector:
    app: es
    operator.skywalking.apache.org/es-name: {{ .Name }}
  publishNotReadyAddresses: true
  ports:
    - name: http
      port: 9200
    - name: transport
      port: 9300

