AlexRogalskiy/java-patterns

View on GitHub
charts/templates/service.discovery.yaml

Summary

Maintainability
Test Coverage
# This service only exists to create DNS entries for each pod in
# the StatefulSet such that they can resolve each other's IP addresses.
# It does not create a load-balanced ClusterIP and should not be used directly
# by clients in most circumstances.
{{- if .Values.service.discovery.enabled }}
{{- $fullName := include "backend-java-patterns.fullname" . -}}
kind: Service
apiVersion: v1
metadata:
  name: {{ $fullName }}
  namespace: {{ .Release.Namespace | quote }}
  labels:
    {{- include "backend-java-patterns.labels" . | nindent 4 }}
  {{- if .Values.service.discovery.labels }}
  {{- with .Values.service.discovery.labels }}
    {{- toYaml . | nindent 4 }}
  {{- end }}
  {{- end }}
  annotations:
    # Use this annotation in addition to the actual field below because the
    # annotation will stop being respected soon, but the field is broken in
    # some versions of Kubernetes:
    # https://github.com/kubernetes/kubernetes/issues/58662
    service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
    # Enable automatic monitoring of all instances when Prometheus is running
    # in the cluster.
    prometheus.io/scrape: "true"
    prometheus.io/path: _status/vars
    prometheus.io/port: {{ .Values.service.ports.http | quote }}
  {{- if .Values.service.discovery.annotations }}
  {{- with .Values.service.discovery.annotations }}
    {{- toYaml . | nindent 4 }}
  {{- end }}
  {{- end }}
spec:
  clusterIP: None
  # We want all Pods in the StatefulSet to have their addresses published for
  # the sake of the other pods even before they're ready, since they
  # have to be able to talk to each other in order to become ready.
  publishNotReadyAddresses: true
  ports:
  {{- $ports := .Values.service.ports }}
    # The main port, served by gRPC inter-node traffic and the CLI.
    - name: {{ $ports.grpc.external.name | quote }}
      port: {{ $ports.grpc.external.port | int64 }}
      targetPort: grpc
  {{- if ne ($ports.grpc.internal.port | int64) ($ports.grpc.external.port | int64) }}
    - name: {{ $ports.grpc.internal.name | quote }}
      port: {{ $ports.grpc.internal.port | int64 }}
      targetPort: grpc
  {{- end }}
    # The secondary port serves the UI as well as health and debug endpoints.
    - name: {{ $ports.http.name | quote }}
      port: {{ $ports.http.port | int64 }}
      targetPort: http
  selector:
    {{- include "backend-java-patterns.selectorLabels" . | nindent 4 }}
  {{- if .Values.statefulset.labels }}
  {{- with .Values.statefulset.labels }}
    {{- toYaml . | nindent 4 }}
  {{- end }}
  {{- end }}
{{- end }}