First pass up to configuration

Change-Id: Ifd82c38aa18d5216c5772a64d9d77046def005fe
diff --git a/configuration/config-loader.rst b/configuration/config-loader.rst
new file mode 100644
index 0000000..51d8fbd
--- /dev/null
+++ b/configuration/config-loader.rst
@@ -0,0 +1,66 @@
+ONOS Configuration Loader
+=========================
+
+Config loader is a Kubernetes pod installed by the SD-Fabric Helm
+chart which implements a reconciliation loop to update the ONOS network
+configuration and component configuration.
+
+Config loader will periodically read the running configurations from ONOS and eventually
+push updates to ONOS if the running state isn't same as the desired state.
+
+.. image:: ../images/config-loader.svg
+
+.. note::
+   We recommend using the Helm values below to update the ONOS configuration instead
+   of manually changing it via ONOS REST APIs or CLI, otherwise, manual changes
+   will be overridden by config loader. If you need to apply config changes
+   during debugging or testing we recommend disabling the reconciliation loop
+   (``reconcile_mode: false``).
+
+Below is a reference of the available configuration parameters and their default values:
+
+.. code-block::
+
+      onos:
+        config:
+          reconcile_mode: true
+          reconcile_interval: 30s
+          image:
+            registry: ""
+            repository: opencord/onos-classic-helm-utils
+            tag: 0.1.0
+            pullPolicy: "IfNotPresent"
+          service_account_name: onos-config-loader
+          # NOTE these values won't change the credentials inside ONOS, they
+          # are only used by config loader for authenticating REST API calls.
+          username: karaf
+          password: karaf
+          netcfg: >
+            # {
+            #   "devices" : {
+            #      "device:leaf1" : {
+            #      ...
+            # }
+          componentConfig:
+            # "org.onosproject.provider.lldp.impl.LldpLinkProvider": >
+            #   {
+            #     "enabled": "false"
+            #   }
+
+
+* ``reconcile_mode``: If disable, config loader will only update the configuration once. Useful for debugging/testing.
+* ``reconcile_interval``: The interval in seconds between reconciliation checks.
+* ``image``: to pull the container image of the config loader.
+  Use the default values unless you have special requirements.
+
+  * ``registry``: If empty, the config loader image will be downloaded from Docker Hub.
+  * ``repository``: The repository of config push.
+  * ``tag``: The image tag of config loader.
+  * ``pullPolicy``: How Kubernetes pulls the image, available options are `Never, Always, IfNotPresent`.
+
+* ``service_account_name``: Name of the Kubernetes Service Account used by the config loader pods to read
+  information from Kubernetes.
+* ``username``: Username used in ONOS REST API calls.
+* ``password``: Password used in ONOS REST API calls.
+* ``netcfg``: ONOS network configuration as JSON blob.
+* ``componentConfig``: A map of ONOS component IDs and corresponding list of configurations as a JSON map.