diff --git a/README.md b/README.md
index d4e1e17..e804ac4 100644
--- a/README.md
+++ b/README.md
@@ -1,36 +1,377 @@
-This helm chart will deploy the vertica kafka scheduler. It will deploy the vertica/vertica-kafka-scheduler in two modes: initializer and launcher. When deployed as the initializer it will run the container so that you can exec into it and do your setup. When deployed as the launcher, the container will automatically call 'vkconfig launch'. This is expected to be done once everything has been setup.
-
-| Parameter Name | Description | Default Value |
-|----------------|-------------|---------------|
-| affinity | Affinity to use with the pods to control where it is scheduled | |
-| conf.configMapName | The name of the ConfigMap to use and optionally generate. If omitted, the chart will pick a suitable default. | |
-| conf.content | Set of key/values pairs that will be included in the generated ConfigMap. This is ignored if conf.generate is false. | |
-| conf.generate | If true, the helm chart will control creation of the vkconfig.conf ConfigMap. | true |
-| fullNameOverride | Gives full controls over the name of the objects that get created. This takes precedence over nameOverride. | |
-| initializerEnabled | If true, the initializer pod is created. This can be used to run any setup tasks needed. | true |
-| image.pullPolicy | The pull policy to use for the image | IfNotPresent |
-| image.repository | The image repository and name that contains the Vertica Kafka Scheduler | vertica/kafka-scheduler |
-| image.tag | The tag corresponds to the version to use. The version of the Vertica Kafka Scheduler must match version of the Vertica server you are connecting to | Defaults to the charts appVersion |
-| imagePullSecrets | A list of Secret's that are needed to be able to pull the image | |
-| launcherEnabled | If true, the launch deployment is created. This should only be enabled once everything has been setup. | true |
-| jvmOpts | Values to assign to the VKCONFIG_JVM_OPTS environment variable in the pods. You can omit most trustrtore/keystore settings as they are controlled by tls.* | |
-| nameOverride | Controls the name of the objects that get created. This is combined with the helm chart release to form the name | |
-| nodeSelector | A node selector to use with the pod to control where it is scheduled | |
-| podAnnotations | Annotations to attach to the pods | |
-| podSecurityContext | A PodSecurityContext to use for the pods | |
-| replicaCount | If you want more than one launch pod deployed set this to a value greater than 1. | 1 |
-| resourecs | Resources to use with the pod | |
-| securityContext | A SecurityContext to use for the container in the pod | |
-| serviceAccount.annotations | Annotations to attach to the ServiceAccount | |
-| serviceAccount.create | If true, a ServiceAccount is created as part of the deployment | true |
-| serviceAccount.name | Name of the service account. If not set and create is true, a name is generated using the fullname template | |
-| tls.enabled | If true, we setup with the assumption that TLS authentication will be used. | false |
-| tls.keyStoreMountPath | Directory name where the keystore will be mounted in the pod. This controls the name of the keystore within the pod. The full path to the keystore will be constructed by combining this parameter with tls.keyStoreSecretKey. | |
-| tls.keyStorePassword | The password to use along with the keystore. If omitted, then no password is used. | |
-| tls.keyStoreSecretKey | A key within tls.keyStoreSecretName that will be used as the keystore file name. This is used along with tls.keyStoreMountPath to form the full path to the key in the pod. | |
-| tls.keyStoreSecretName | Name of an existing Secret that contains the keystore. If this is omitted, then no keystore information is included. | |
-| tls.trustStoreMountPath | Directory name where the truststore will be mounted in the pod. This controls the name of the truststore within the pod. The full path to the truststore will be constructed by combining this parameter with tls.trustStoreSecretKey. | |
-| tls.trustStorePassword | The password to use along with the truststore. If omitted, then no password is used. | |
-| tls.trustStoreSecretKey | A key within tls.trustStoreSecretName that will be used as the truststore file name. This is used along with tls.trustStoreMountPath to form the full path to the key in the pod. | |
-| tls.trustStoreSecretName | Name of an existing Secret that contains the truststore. If this is omitted, then no truststore information is included. | |
-| tolerations | Tolerations to use with the pods to control where it is scheduled | |
+This Helm chart deploys the [vertica-kafka-scheduler](https://github.com/vertica/vertica-containers/tree/main/vertica-kafka-scheduler) with two modes:
+- **initializer**: Configuration mode. Starts a container so that you can `exec` into it and configure it.
+- **launcher**: Launch mode. Launches the vkconfig scheduler. Starts a container that calls `vkconfig launch` automatically. Run this mode after you configure the container in `initializer` mode.
+
+## Install the charts
+
+Add the charts to your repo and install the Helm chart. The following `helm install` command uses the `image.tag` [parameter](#parameters) to install version 24.1.0:
+
+```shell
+$ helm repo add vertica-charts https://vertica.github.io/charts
+$ helm repo update
+$ helm install vkscheduler vertica-charts/vertica-kafka-scheduler \
+ --set "image.tag=24.1.0"
+```
+
+## Sample manifests
+
+The following dropdowns provide sample manifests for a Kafka cluster, VerticaDB operator and custom resource (CR), and vkconfig scheduler. These manifests are applied in [Usage](#usage) to demonstrate how a simple deployment:
+
+kafka-cluster.yaml (with Strimzi operator)
+
+ ```yaml
+ apiVersion: kafka.strimzi.io/v1beta2
+ kind: Kafka
+ metadata:
+
+ namespace: kafka
+ name: my-cluster
+ spec:
+ kafka:
+ version: 3.6.0
+ replicas: 1
+ listeners:
+ - name: plain
+ port: 9092
+ type: internal
+ tls: false
+ - name: tls
+ port: 9093
+ type: internal
+ tls: true
+ config:
+ offsets.topic.replication.factor: 1
+ transaction.state.log.replication.factor: 1
+ transaction.state.log.min.isr: 1
+ default.replication.factor: 1
+ min.insync.replicas: 1
+ inter.broker.protocol.version: "3.6"
+ storage:
+ type: jbod
+ volumes:
+ - id: 0
+ type: persistent-claim
+ size: 100Gi
+ deleteClaim: false
+ zookeeper:
+ replicas: 1
+ storage:
+ type: persistent-claim
+ size: 100Gi
+ deleteClaim: false
+ entityOperator:
+ topicOperator: {}
+ userOperator: {}
+ ```
+vdb-op-cr.yaml
+
+ ```yaml
+ apiVersion: vertica.com/v1
+ kind: VerticaDB
+ metadata:
+ annotations:
+ vertica.com/include-uid-in-path: "false"
+ vertica.com/vcluster-ops: "false"
+ name: vdb-1203
+ spec:
+ communal:
+ credentialSecret: ""
+ endpoint: https://s3.amazonaws.com
+ path: s3://vertica-kafka-scheduler.yaml
+
+ ```yaml
+ image:
+ repository: vertica/kafka-scheduler
+ pullPolicy: IfNotPresent
+ tag: 12.0.3
+ launcherEnabled: false
+ replicaCount: 1
+ initializerEnabled: true
+ conf:
+ generate: true
+ content:
+ config-schema: Scheduler
+ username: dbadmin
+ dbport: '5433'
+ enable-ssl: 'false'
+ dbhost: 10.20.30.40
+ tls:
+ enabled: false
+ serviceAccount:
+ create: true
+ ```
+
conf.generate
is false
, this setting is ignored.true
, the Helm chart controls the creation of the vkconfig.conf
ConfigMap.true
nameOverride
.true
, the initializer pod is created. This can be used to run any setup tasks needed.true
IfNotPresent
vertica/kafka-scheduler
appVersion
true
, the Helm chart creates the launch deployment. Enable this setting after you configure the scheduler options in the container.true
VKCONFIG_JVM_OPTS
environment variable in the pods.
+
+ > **NOTE**
+ > You can omit most truststore and keystore settings because they are set by tls.*
parameters.true
, a ServiceAccount is created as part of the deployment.serviceAccount.create
is set to true
, a name is generated using the fullname template.true
, the scheduler is set up for TLS authentication.false
tls.keyStoreSecretKey
.tls.keyStoreSecretName
that is used as the keystore file name. This setting and tls.keyStoreMountPath
form the full path to the key in the pod.tls.trustStoreSecretKey
.tls.trustStoreSecretName
that is used as the truststore file name. This is used with tls.trustStoreMountPath
to form the full path to the key in the pod.