+
+## Install Messaging platform
+
+We have currently support strimzi based kafka operator.
+Navigate to ```$DA_WORKING_DIR/deploy/messaging/charts/strimzi-kafka-operator``` directory.
+Use the below command :
+```
+helm install . -f values.yaml --name sko --namespace=test
+```
+
+NOTE: Make changes in the values.yaml if required.
+
+Once the strimzi operator ready, you shall get a pod like :
+
+```
+strimzi-cluster-operator-5cf7648b8c-zgxv7 1/1 Running 0 53m
+```
+
+Once this done, install the kafka package like any other helm charts you have.
+Navigate to dir : ```$DA_WORKING_DIRdeploy/messaging``` and use command:
+```
+helm install --name kafka-cluster charts/kafka/
+```
+
+Once this done, you should have the following pods up and running.
+
+```
+kafka-cluster-entity-operator-b6557fc6c-hlnkm 3/3 Running 0 47m
+kafka-cluster-kafka-0 2/2 Running 0 48m
+kafka-cluster-kafka-1 2/2 Running 0 48m
+kafka-cluster-kafka-2 2/2 Running 0 48m
+kafka-cluster-zookeeper-0 2/2 Running 0 49m
+kafka-cluster-zookeeper-1 2/2 Running 0 49m
+kafka-cluster-zookeeper-2 2/2 Running 0 49m
+```
+
+You should have the following services when do a ```kubectl get svc```
+
+```
+kafka-cluster-kafka-bootstrap ClusterIP 10.XX.YY.ZZ <none> 9091/TCP,9092/TCP,9093/TCP 53m
+kafka-cluster-kafka-brokers ClusterIP None <none> 9091/TCP,9092/TCP,9093/TCP 53m
+kafka-cluster-zookeeper-client ClusterIP 10.XX.YY.ZZ <none> 2181/TCP 55m
+kafka-cluster-zookeeper-nodes ClusterIP None <none> 2181/TCP,2888/TCP,3888/TCP 55m
+```
+#### Testing messaging
+
+You can test your kafka brokers by creating a simple producer and consumer.
+
+Producer :
+```
+kubectl run kafka-producer -ti --image=strimzi/kafka:0.12.2-kafka-2.2.1 --rm=true --restart=Never -- bin/kafka-console-producer.sh --broker-list kafka-cluster-kafka-bootstrap:9092 --topic my-topic
+ ```
+ Consumer :
+ ```
+
+kubectl run kafka-consumer -ti --image=strimzi/kafka:0.12.2-kafka-2.2.1 --rm=true --restart=Never -- bin/kafka-console-consumer.sh --bootstrap-server kafka-cluster-kafka-bootstrap:9092 --topic my-topic --from-beginning
+```
+
+## Install Training Package
+
+#### Install M3DB (Time series Data lake)
+##### Pre-requisites
+1. kubernetes cluster with atleast 3 nodes
+2. Etcd operator, M3DB operator
+3. Node labelled with zone and region.
+
+```bash
+## Defult region is us-west1, Default labels are us-west1-a, us-west1-b, us-west1-c
+## If this is changed then isolationGroups in training-core/charts/m3db/values.yaml needs to be updated.
+NODES=($(kubectl get nodes --output=jsonpath={.items..metadata.name}))
+
+kubectl label node/${NODES[0]} failure-domain.beta.kubernetes.io/region=us-west1
+kubectl label node/${NODES[1]} failure-domain.beta.kubernetes.io/region=us-west1
+kubectl label node/${NODES[2]} failure-domain.beta.kubernetes.io/region=us-west1
+
+kubectl label node/${NODES[0]} failure-domain.beta.kubernetes.io/zone=us-west1-a --overwrite=true
+kubectl label node/${NODES[1]} failure-domain.beta.kubernetes.io/zone=us-west1-b --overwrite=true
+kubectl label node/${NODES[2]} failure-domain.beta.kubernetes.io/zone=us-west1-c --overwrite=true
+```
+```bash
+cd $DA_WORKING_DIR/training-core/charts/m3db
+helm install -n m3db . -f values.yaml --namespace training
+```
+```
+$ kubectl get pods -n training
+NAME READY STATUS RESTARTS AGE
+m3db-cluster-rep0-0 1/1 Running 0 103s
+m3db-cluster-rep1-0 1/1 Running 0 83s
+m3db-cluster-rep1-0 1/1 Running 0 62s
+m3db-etcd-sjhgl4xfgc 1/1 Running 0 83s
+m3db-etcd-lfs96hngz6 1/1 Running 0 67s
+m3db-etcd-rmgdkkx4bq 1/1 Running 0 51s
+```
+
+##### Configure remote write from Prometheus to M3DB
+```bash
+cd $DA_WORKING_DIR/day2_configs/prometheus/
+```
+```yaml
+cat << EOF > add_m3db_remote.yaml
+spec:
+ remoteWrite:
+ - url: "http://m3coordinator-m3db.training.svc.cluster.local:7201/api/v1/prom/remote/write"
+ writeRelabelConfigs:
+ - targetLabel: metrics_storage
+ replacement: m3db_remote
+EOF
+```
+```bash
+kubectl patch --namespace=edge1 prometheus cp-prometheus-prometheus -p "$(cat add_m3db_remote.yaml)" --type=merge