Refactor SD-Fabric helm chart README

Change-Id: Id53d1ee0138ff848e7392be6c993c523ba0e0bf5
diff --git a/VERSION b/VERSION
index e6d5cb8..e4c0d46 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.0.2
\ No newline at end of file
+1.0.3
\ No newline at end of file
diff --git a/sdfabric/Chart.yaml b/sdfabric/Chart.yaml
index 4dccf58..b98b024 100644
--- a/sdfabric/Chart.yaml
+++ b/sdfabric/Chart.yaml
@@ -7,7 +7,7 @@
 description: A chart to deploy all SD-Fabric components
 kubeVersion: ">=1.18.0"
 type: application
-version: 1.0.2
+version: 1.0.3
 keywords:
   - aether
   - sdn
diff --git a/sdfabric/README.md b/sdfabric/README.md
index ea558e9..425218c 100644
--- a/sdfabric/README.md
+++ b/sdfabric/README.md
@@ -4,12 +4,123 @@
 SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
 -->
 
-# SD-Fabric chart
+# SD-Fabric Helm chart
 
-## Prerequest
+## Prerequisites
 
-See [SD-Fabric deployment guide](https://docs.sd-fabric.org/master/deployment.html) and
-deploy all necessary components like Kubernetes and switch.
+There are several preparation work that need to be done before deploying SD-Fabric.
+1. All switches have been provisioned with Docker and Kubernetes
+2. All switches have been configured as special Kubernetes nodes
+3. Prepare access for SD-Fabric images hosted on private registry
+4. Prepare ONOS network config
+5. Prepare Stratum chassis config for each switch
+
+Please refer to step 1 to 5 in [SD-Fabric deployment guide](https://docs.sd-fabric.org/master/deployment.html)
+for prerequisites, and come back here for the rest of the installation instructions.
+
+## Installation
+
+Here are steps to deploy the sdfabric helm chart:
+
+1. **Clone SD-Fabric Helm chart**
+
+    ```bash
+    git clone ssh://gerrit.opencord.org:29418/sdfabric-helm-charts
+    cd sdfabric-helm-charts/sdfabric
+    ```
+
+2. **Update Helm dependencies**
+
+    ```bash
+    helm dep update
+    ```
+
+3. **Prepare your Helm value**
+
+    You can modify existing `values.yaml` directly, but we recommend composing another value file `myvalues.yaml` using `values.yaml` as an example.
+
+    We are highlighting a few things we need to modify here.
+    More explanation of the supported Helm values can be found in the [Configuration](#configuration) section below.
+
+    - **Stratum `nodeSelector` and `tolerations`**
+
+        This has to be consistent with the information in prerequisite step 2.
+        Here's an example:
+
+        ```
+        stratum:
+            nodeSelector:
+                node-role.kubernetes.io: switch
+
+            tolerations:
+                - effect: NoSchedule
+                    value: switch
+                    key: node-role.kubernetes.io
+        ```
+
+    - **SD-Fabric image access credential**
+
+        This has to be consistent with the information in prerequisite step 3.
+        ```
+        image:
+            credential:
+                username: my_username
+                password: my_access_token
+        ```
+
+    - **ONOS network config**
+
+        This has to be consistent with the information in prerequisite step 4.
+        ```
+        onos-classic:
+            config:
+                netcfg: >
+                    {
+                    "devices": {
+                        "device:leaf1": {
+                            "segmentrouting": {
+                                "ipv4NodeSid": 101,
+                                "ipv4Loopback": "10.11.22.33",
+                                "routerMac": "aa:bb:cc:dd:ee:ff",
+                                "pairDeviceId" : "device:leaf2",
+                                "pairLocalPort" : 260,
+                                "isEdgeRouter": true,
+                                "adjacencySids": []
+                            }
+                        }
+                    }
+                }
+        ```
+
+4. **Verify custom values**
+
+    ```bash
+    helm template -f myvaules.yaml .
+    ```
+
+5. **Supply Stratum chassis config**
+
+    Please refer to [Provide Chassis Config](https://github.com/stratum/stratum-helm-charts/tree/master/stratum#provide-chassis-config).
+    This has to be consistent with the information in prerequisite step 5.
+
+6. **Install SD-Fabric helm chart**
+
+    The following command will deploy the SD-Fabric helm chart with release name `sdfabric` in the `sdfabric` namesapce.
+    ```bash
+    helm install -n sdfabric --create-namespace -f myvaules.yaml sdfabric .
+    ```
+
+    To verify the installation:
+    ```bash
+    helm -n sdfabric ls
+    ```
+
+    To uninstall:
+    ```bash
+    helm -n sdfabric uninstall sdfabric
+    kubectl delete namespace sdfabric # also remove the sdfabric if needed
+    ```
+
 
 ## Configuration
 
@@ -25,29 +136,3 @@
 | stratum | See <https://github.com/stratum/stratum-helm-charts/tree/master/stratum> |
 | pfcp-agent | See [values.yaml](../pfcp-agent/values.yaml) file of the PFCP agent chart |
 | dbuf | See [values.yaml](../dbuf/values.yaml) file of the DBuf chart |
-
-## Installation
-
-Here are steps to deploy the sdfabric helm chart:
-
-1. Modify `values.yaml` according to the explanations above
-2. Use the following command to create a namespace `sdfabric`, :
-
-    ```bash
-    kubectl create namespace sdfabric
-    ```
-
-3. Use the helm command to deploy the chart:
-
-    ```bash
-    helm upgrade --install -n sdfabric -f my-values.yaml sdfabric .
-    ```
-
-This command will deploy the SD-Fabric helm chart with release name `sdfabric` in the `sdfabric` namesapce.
-
-To uninstall the helm chart, simply use:
-
-```bash
-helm -n sdfabric uninstall sdfabric
-kubectl delete namespace sdfabric # also remove the sdfabric if needed
-```