Overview

The SIEMply Secure project at Awan Infotech required a centralized platform to collect and correlate logs from biometric systems, CCTV infrastructure, and enterprise applications. We chose ECK (Elastic Cloud on Kubernetes) on AKS as the foundation — giving us operator-managed Elasticsearch and Kibana with native Kubernetes lifecycle management.

Architecture

The platform runs entirely inside a dedicated AKS namespace with the following components:

Deploying ECK

ECK is deployed via the official Elastic Helm chart. The operator watches for Elasticsearch and Kibana custom resources and handles rolling upgrades, TLS certificate rotation, and resource scaling automatically.

helm repo add elastic https://helm.elastic.co
helm install elastic-operator elastic/eck-operator \
  --namespace elastic-system \
  --create-namespace

Elasticsearch Cluster Manifest

We defined a 3-node Elasticsearch cluster with persistent storage backed by Azure Managed Disks:

apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
  name: siem-es
  namespace: siem
spec:
  version: 8.12.0
  nodeSets:
    - name: default
      count: 3
      config:
        node.store.allow_mmap: false
      volumeClaimTemplates:
        - metadata:
            name: elasticsearch-data
          spec:
            accessModes: [ReadWriteOnce]
            storageClassName: managed-premium
            resources:
              requests:
                storage: 100Gi

Securing Kibana with Traefik + cert-manager

Kibana is exposed through Traefik Ingress with a Let's Encrypt certificate managed by cert-manager. This means TLS renewal is fully automated — no manual certificate rotation needed.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: kibana-ingress
  namespace: siem
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod
    traefik.ingress.kubernetes.io/router.entrypoints: websecure
spec:
  tls:
    - hosts: [kibana.internal.example.com]
      secretName: kibana-tls
  rules:
    - host: kibana.internal.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: siem-es-kb-http
                port:
                  number: 5601

Log Ingestion

Filebeat runs as a DaemonSet on all Linux nodes, shipping container logs and audit logs to Elasticsearch. Winlogbeat agents on Windows sources (CCTV and biometric servers) ship Windows Event Logs over TLS.

Key Outcomes

ECK on Kubernetes is significantly easier to operate than self-managed Elasticsearch. The operator handles the hard parts — TLS, rolling upgrades, and node coordination — so you can focus on the data.