DEV Community

Tingwei
Tingwei

Posted on • Edited on

Setting Up CloudNativePG on KIND with pgAdmin

1. Install Prerequisites

Install Helm, KIND, kubectl, and pgAdmin4.

2. Create KIND Cluster

Run kind create cluster --name myk8s --config cluster.yaml

### cluster.yaml kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane - role: worker - role: worker 
Enter fullscreen mode Exit fullscreen mode

3. Deploy CloudNativePG Operator

helm repo add cnpg https://cloudnative-pg.github.io/charts helm repo update helm install cnpg cnpg/cloudnative-pg --namespace cnpg-system --create-namespace 
Enter fullscreen mode Exit fullscreen mode

4. Deploy PostgreSQL Cluster

Run kubectl apply -f postgres.yaml

## postgres.yaml apiVersion: postgresql.cnpg.io/v1 kind: Cluster metadata: name: pg-cluster labels: app: pg spec: instances: 3 storage: pvcTemplate: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: standard volumeMode: Filesystem postgresql: parameters: shared_buffers: 256MB --- # pgBouncer apiVersion: postgresql.cnpg.io/v1 kind: Pooler metadata: name: pg-pooler labels: app: pg spec: cluster: name: pg-cluster instances: 3 type: rw serviceTemplate: metadata: labels: app: pg spec: type: LoadBalancer pgbouncer: poolMode: session parameters: max_client_conn: "1000" default_pool_size: "10" 
Enter fullscreen mode Exit fullscreen mode

arch

5. Install Kubernetes Cloud Provider for KIND

  • Installation
  • Control-plane nodes need to remove the label to access workloads via a LoadBalancer service.
kubectl label node myk8s-control-plane node.kubernetes.io/exclude-from-external-load-balancers- 
Enter fullscreen mode Exit fullscreen mode
  • Run As administrator
cloud-provider-kind 
Enter fullscreen mode Exit fullscreen mode

6. Connect to PostgreSQL with pgAdmin4

Open pgAdmin4, create a new server with PostgreSQL connection details

  • EXTERNAL-IP
kubectl get svc pg-pooler 
Enter fullscreen mode Exit fullscreen mode
kubectl get secret pg-cluster-app -o yaml ## check data.password echo <password> | base64 -d 
Enter fullscreen mode Exit fullscreen mode
host=<External IP> port=5432 database=app user=app password=<password> 
Enter fullscreen mode Exit fullscreen mode

References

Top comments (0)