# 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: voltha
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: voltha
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: fluentdactv
      annotations:
        cni: "calico"
    spec:
      terminationGracePeriodSeconds: 10
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: app
                operator: In
                values:
                - fluentdstby
            topologyKey: kubernetes.io/hostname
      containers:
      - name: fluentdactv
        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 standby fluentd aggregator
#
apiVersion: v1
kind: Service
metadata:
  name: fluentdstby
  namespace: voltha
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: voltha
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: fluentdstby
      annotations:
        cni: "calico"
    spec:
      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: voltha
spec:
  clusterIP: None
  selector:
    app: fluentd
  ports:
  - protocol: TCP
    port: 24224
    targetPort: 24224
---
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: fluentd
  namespace: voltha
spec:
   template:
    metadata:
      labels:
        app: fluentd
      annotations:
        cni: "calico"
    spec:
      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
