# Copyright 2017-present Open Networking Foundation
#
# 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.

#
# This file describes a cluster of 3 fluentd forwarders that
# send logs to a cluster of 2 fluentd aggregators: one active
# and one standby.
#
# The active fluentd aggregator
#
apiVersion: v1
kind: Service
metadata:
  name: fluentdactv
  namespace: {{ .Values.global.namespace }}
  serviceAccountName: {{ .Values.global.namespace }}-serviceaccount
spec:
  clusterIP: None
  selector:
    app: fluentdactv
  ports:
  - protocol: TCP
    port: 24224
    targetPort: 24224
---
#
# Ensure that the active aggregator is not deployed to the
# same node as the standby
#
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: fluentdactv
  namespace: {{ .Values.global.namespace }}
  serviceAccountName: {{ .Values.global.namespace }}-serviceaccount
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: fluentdactv
      annotations:
        cni: "weave"
    spec:
      serviceAccountName: {{ .Values.global.namespace }}-serviceaccount
      terminationGracePeriodSeconds: 10
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: app
                operator: In
                values:
                - fluentdstby
            topologyKey: kubernetes.io/hostname
      containers:
      - name: fluentdactv
        image: {{ .Values.k8s_docker_registry }}{{ .Values.images.fluentd.repository }}:{{ .Values.images.fluentd.tag }}
        imagePullPolicy: {{ .Values.image_pull_policy }}
        volumeMounts:
        - name: fluentd-log
          mountPath: /fluentd/log
        - name: config-volume
          mountPath: /etc/fluentd-config
        ports:
        - containerPort: 24224
        env:
        - name: FLUENTD_ARGS
          value: -c /etc/fluentd-config/fluentd-agg.conf
      volumes:
      - name: config-volume
        configMap:
          name: fluentd-config
      - name: fluentd-log
        hostPath:
          path: /var/log/voltha/logging_volume
          type: Directory
---
#
# The standby fluentd aggregator
#
apiVersion: v1
kind: Service
metadata:
  name: fluentdstby
  namespace: {{ .Values.global.namespace }}
spec:
  clusterIP: None
  selector:
    app: fluentdstby
  ports:
  - protocol: TCP
    port: 24224
    targetPort: 24224
---
#
# Ensure thet the standby aggregator is not deployed to the
# same node as the active
#
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: fluentdstby
  namespace: {{ .Values.global.namespace }}
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: fluentdstby
      annotations:
        cni: "weave"
    spec:
      serviceAccountName: {{ .Values.global.namespace }}-serviceaccount
      terminationGracePeriodSeconds: 10
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: app
                operator: In
                values:
                - fluentdactv
            topologyKey: kubernetes.io/hostname
      containers:
      - name: fluentdstby
        image: k8s.gcr.io/fluentd-gcp:1.30 
        imagePullPolicy: Never
        volumeMounts:
        - name: fluentd-log
          mountPath: /fluentd/log
        - name: config-volume
          mountPath: /etc/fluentd-config
        ports:
        - containerPort: 24224
        env:
        - name: FLUENTD_ARGS
          value: -c /etc/fluentd-config/fluentd-agg.conf
      volumes:
      - name: config-volume
        configMap:
          name: fluentd-config
      - name: fluentd-log
        hostPath:
          path: /var/log/voltha/logging_volume
          type: Directory
---
#
# The cluster of fluentd forwarders.  The service itself will be removed once all fluentd forwarding logic are removed
# from the specific voltha services.   Fluentd is defined as a DaemonSet which implies that only 1 instance will
# run on each node.   Each instance will also gets its configuration data from a config map (fluentd-config.yml).
#
apiVersion: v1
kind: Service
metadata:
  name: fluentd
  namespace: {{ .Values.global.namespace }}
spec:
  clusterIP: None
  selector:
    app: fluentd
  ports:
  - protocol: TCP
    port: 24224
    targetPort: 24224
---
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: fluentd
  namespace: {{ .Values.global.namespace }}
spec:
   template:
    metadata:
      labels:
        app: fluentd
      annotations:
        cni: "weave"
    spec:
      serviceAccountName: {{ .Values.global.namespace }}-serviceaccount
      tolerations:
        - key: node-role.kubernetes.io/master
          effect: NoSchedule
      containers:
      - name: fluentd
        image: k8s.gcr.io/fluentd-gcp:1.30
        env:
        - name: FLUENTD_ARGS
          value: -c /etc/fluentd-config/fluentd.conf
        volumeMounts:
        - name: varlog
          mountPath: /var/log/
        - name: varlogcontainers
          mountPath: /var/lib/docker/containers/
        - name: config-volume
          mountPath: /etc/fluentd-config
      volumes:
      - name: varlog
        hostPath:
          path: /var/log/
      - name: varlogcontainers
        hostPath:
          path: /var/lib/docker/containers/
      - name: config-volume
        configMap:
          name: fluentd-config
