wazuh-kubernetes icon indicating copy to clipboard operation
wazuh-kubernetes copied to clipboard

Issues in local deployment with Minikube with 4.2.2

Open c-bordon opened this issue 3 years ago • 1 comments

I was doing some tests of the local deployment with Minikube and I found some issues:

  1. the amount of resources required is below what is necessary: https://documentation.wazuh.com/current/deploying-with-kubernetes/kubernetes-local-env.html#resource-requirements According to my tests, at least 10 GB of Memory and 8 CPUS are needed

  2. Modify the amount of resource limit for Elasticsearch pods: current: cpu: 500m memory: 1Gi suggested: cpu: 1 memory: 1564Mi wazuh/elastic_stack/elasticsearch/cluster/elasticsearch-sts.yaml

  3. Issue with the name of the configmap and secret for Elasticsearch. This is generated with a dynamic name, which generates a problem when trying to lift the second pod since it searches for the name: odfe-ssl-certs and elastic-odfe-conf

  4. Check if it is correct that the type of services is Load Balancer for local deployments, since these are pending to be created as they are not in a cloud environment

c-bordon avatar Sep 30 '21 17:09 c-bordon

Hello, I was doing some tests as well on the Kubernetes KinD distribution and I confirm the amount of resource suggested in the "local-env doc" was not enough for me. Indeed my pod wazuh-elasticsearch-0 was not running and was in crashloopbackoff.

Details to reproduce

  1. I follow the Wazuh Doc v4.2: Deployment on local environment.

  2. I use a virtual machine with:

  • 4 vCPU
  • ~8Gi RAM
  1. On this VM I install a kubernetes distro running on top of docker: a Kubernetes KinD cluster which has 3 nodes.
kubectl get nodes
NAME                          STATUS   ROLES                  AGE   VERSION
wazuh-backend-control-plane   Ready    control-plane,master   18h   v1.21.1
wazuh-backend-worker          Ready    <none>                 18h   v1.21.1
wazuh-backend-worker2         Ready    <none>                 18h   v1.21.1
  1. On this Kubernetes KinD cluster, there is a StorageClass of type rancher.io/local-path that is preinstalled.
kubectl get sc
NAME                      PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
standard (default)        rancher.io/local-path   Delete          WaitForFirstConsumer   false                  18h

Have a look at KinD v0.11.1 Storage provisioner. We will use this information later.

  1. I modify Wazuh-kubernetes's storage-class file in envs/local-env/storage-class.yaml and I add an annotations/label and a reclaimPolicy. This step was necessary: without this annotation, the persistentvolume could not be created thanks to the storageclass.
# Wazuh StorageClass

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: wazuh-storage
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
provisioner: rancher.io/local-path
volumeBindingMode: WaitForFirstConsumer
reclaimPolicy: Delete
  1. I add more resource to wazuh-elasticsearch: I customize the file envs/local-env/elastic-resources.yaml. This step is necessary: without this the pod wazuh-elasticsearch-0 was not running and was in crashloopbackoff
# envs/local-env/elastic-resources.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: wazuh-elasticsearch
  namespace: wazuh
spec:
  replicas: 1
  template:
    spec:
      containers:
        - name: wazuh-elasticsearch
          resources:
            requests:
              cpu: 1
              memory: 1564Mi
            limits:
              cpu: 1
              memory: 2Gi
  1. I run kubectl apply -k envs/local-env/.

  2. After a couple of minutes everything looks fine.

kubectl get pods -n wazuh
NAME                           READY   STATUS    RESTARTS   AGE
wazuh-elasticsearch-0          1/1     Running   0          44m
wazuh-kibana-8cf8b766b-hxz5t   1/1     Running   0          44m
wazuh-manager-master-0         1/1     Running   0          44m
wazuh-manager-worker-0         1/1     Running   0          44m

If I do not add a label in the StorageClass and put more resources for elasticsearch (the AWS amazon/opendistro-for-elasticsearch:1.13.2), wazuh-kubernetes does not work on K8s KinD.

nicop311 avatar Nov 24 '21 10:11 nicop311