Home Explore Blog CI



kubernetes

3rd chunk of `content/en/blog/_posts/2016-09-00-Creating-Postgresql-Cluster-Using-Helm.md`
4bbb1ee5f8822e2f56847cd0f97b4717b1761f3d8188e8340000000100000d63




This example creates a simple Postgres streaming replication deployment with a master (read-write), and a single asynchronous replica (read-only). You can scale up the number of replicas dynamically.



**Contents**



The example is made up of various Chart files as follows:


|  |  |
| :------------: | :------------: |
|values.yaml |This file contains values which you can reference within the database templates allowing you to specify in one place values like database passwords|
|templates/master-pod.yaml|The postgres master database pod definition.  This file causes a single postgres master pod to be created.
|templates/master-service.yaml|The postgres master database has a service created to act as a proxy.  This file causes a single service to be created to proxy calls to the master database.
|templates/replica-rc.yaml| The postgres replica database is defined by this file.  This file causes a replication controller to be created which allows the postgres replica containers to be scaled up on-demand.|
|templates/replica-service.yaml|This file causes the service proxy for the replica database container(s) to be created.|




**Installation**



[Install Helm](https://github.com/kubernetes/helm#install) according to their GitHub documentation and then install the examples as follows:




```
helm init

cd crunchy-containers/examples/kubehelm

helm install ./crunchy-postgres
 ```



**Testing**



After installing the Helm chart, you will see the following services:



```
kubectl get services  
NAME              CLUSTER-IP   EXTERNAL-IP   PORT(S)    AGE  
crunchy-master    10.0.0.171   \<none\>        5432/TCP   1h  
crunchy-replica   10.0.0.31    \<none\>        5432/TCP   1h  
kubernetes        10.0.0.1     \<none\>        443/TCP    1h
 ```



It takes about a minute for the replica to begin replicating with the master. To test out replication, see if replication is underway with this command, enter password for the password when prompted:



```
psql -h crunchy-master -U postgres postgres -c 'table pg\_stat\_replication'
 ```



If you see a line returned from that query it means the master is replicating to the slave. Try creating some data on the master:




```
psql -h crunchy-master -U postgres postgres -c 'create table foo (id int)'

psql -h crunchy-master -U postgres postgres -c 'insert into foo values (1)'
 ```




Then verify that the data is replicated to the slave:




```
psql -h crunchy-replica -U postgres postgres -c 'table foo'
 ```



You can scale up the number of read-only replicas by running the following kubernetes command:



```
kubectl scale rc crunchy-replica --replicas=2
 ```


It takes 60 seconds for the replica to start and begin replicating from the master.  



The Kubernetes Helm and Charts projects provide a streamlined way to package up complex applications and deploy them on a Kubernetes cluster.  Deploying PostgreSQL clusters can sometimes prove challenging, but the task is greatly simplified using Helm and Charts.






- [Download](http://get.k8s.io/) Kubernetes
- Get involved with the Kubernetes project on [GitHub](https://github.com/kubernetes/kubernetes)
- Post questions (or answer questions) on [Stack Overflow](http://stackoverflow.com/questions/tagged/kubernetes)
- Connect with the community on [Slack](http://slack.k8s.io/)
- Follow us on Twitter [@Kubernetesio](https://twitter.com/kubernetesio) for latest updates

Title: PostgreSQL Deployment with Helm: Installation, Testing, and Scaling
Summary
This section guides users through installing a PostgreSQL streaming replication deployment using Helm, including checking replication status, creating/verifying data replication, and scaling read-only replicas. It emphasizes Helm and Charts streamline complex application deployments on Kubernetes.