Press ESC to close

Install Crunchy PostgreSQL Operator On Minikube

Crunchy PostgreSQL operatoru testeleri ve kullanımı için örnek bir döküman sağlar; Öncelikle test ortamımız için Windows ortamında Vmware driver kullanarak minikube nasıl kurarız konusuna bakalım sonrasında bu Minikube üzerinde Crunch PostgreSQL operatörünü nasıl çalıştırırız konularını inceleyelim.

VMware Workstation kurulumunu yaptıktan sonra Windows PATH üzerinde vmrun.exe dosyasının olması gerekmektedir.  Windows PATH değişkeninize C:\Program Files (x86)\VMware\VMware Workstation ekleyelim.

Sonrasında Docker driver yüklüyoruz,

Docker makine sürücüsü docker-machine-driver-vmware_windows_amd64.exe’yi https://github.com/machine-drivers/docker-machine-driver-vmware/releases adresinden  indrelim.

C:\Program Files\docker-machine-driver konumunda bir klasör oluşturun .

docker-machine-driver-vmware_windows_amd64.exe dosyasını  bu klasöre kopyalayın .

docker-machine-driver-vmware_windows_amd64.exe dosyasını docker-machine-driver-vmware.exe olarak yeniden adlandırın  .

Bu klasörü yukarıdaki gibi Windows PATH değişkeninize ekleyin.

Kubectl kurulumunu yapalım;

Bu adımlar, Kurulum ve Kurulum kubectl’deki talimatlardan alınmıştır.

Windows/AMD64 için kubectl’in en son sürümünü indirin .

 C:\Program Files\Kubectl konumunda bir klasör oluşturun .

kubectl.exe’yi  bu klasöre ekleyin .

Bu klasörü Windows PATH değişkeninize ekleyin.

Kontrl edelim;

kubectl version --short

Start Minikube

minikube start --driver=vmware

Check status

minikube status

minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

Cluster Bilgilerini Kontrol edelim;

>kubectl cluster-info
Kubernetes control plane is running at https://192.168.9.129:8443
CoreDNS is running at https://192.168.9.129:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

Minikube stop ve delete işlemleri

>minikube stop
* Stopping node "minikube"  ...
* 1 node stopped.

>minikube delete
* Deleting "minikube" in vmware ...
* Removed all traces of the "minikube" cluster.

Crunch Operatör Kurulumu için; Öncelikle github reposundan en güncel operatörü https://github.com/CrunchyData/postgres-operator-examples

Bir namespace oluşturalım

>kubectl create ns frk
namespace/frk created

Crunchydata postgres operator, crd ve monitoring tools komponentlerinin yükleyelim

>kubectl apply -k kustomize\install\namespace
namespace/postgres-operator created

Mevcut çalışanları kontrol edelim,

>kubectl -n postgres-operator get pods
NAME                           READY   STATUS    RESTARTS   AGE
pgo-7c867985c-f9rwl            1/1     Running   0          45h
pgo-upgrade-69b5dfdc45-km7ct   1/1     Running   0          45h

Monitoring podunu ekleyelim;

>kubectl apply -k kustomize\monitoring
serviceaccount/alertmanager created
serviceaccount/grafana created
serviceaccount/prometheus-sa created
clusterrole.rbac.authorization.k8s.io/prometheus-cr created
clusterrolebinding.rbac.authorization.k8s.io/prometheus-crb created
configmap/alertmanager-config created
configmap/alertmanager-rules-config created
configmap/crunchy-prometheus created
configmap/grafana-dashboards created
configmap/grafana-datasources created
secret/grafana-secret created
service/crunchy-alertmanager created
service/crunchy-grafana created
service/crunchy-prometheus created
persistentvolumeclaim/alertmanagerdata created
persistentvolumeclaim/grafanadata created
persistentvolumeclaim/prometheusdata created
deployment.apps/crunchy-alertmanager created
deployment.apps/crunchy-grafana created
deployment.apps/crunchy-prometheus created

Tekrar kontrol edelim; alert manager, grafana ve prometheus un eklendiğini gözleyelim;

>kubectl -n postgres-operator get pods
NAME                                    READY   STATUS    RESTARTS   AGE
crunchy-alertmanager-5cd75b4f75-rnjzt   1/1     Running   0          2m4s
crunchy-grafana-64b9f9dcc-487j6         1/1     Running   0          2m4s
crunchy-prometheus-dc4cbff87-dxh4g      1/1     Running   0          2m4s
pgo-7c867985c-f9rwl                     1/1     Running   0          45h
pgo-upgrade-69b5dfdc45-km7ct            1/1     Running   0          45h

Şimdi asıl hedefimiz olan postgresql clusterı oluşturalım;

>kubectl apply -k kustomize/postgres
postgrescluster.postgres-operator.crunchydata.com/frk created

Kontrol edelim;

>kubectl -n postgres-operator get pods
NAME                                    READY   STATUS     RESTARTS   AGE
crunchy-alertmanager-5cd75b4f75-rnjzt   1/1     Running    0          5m9s
crunchy-grafana-64b9f9dcc-487j6         1/1     Running    0          5m9s
crunchy-prometheus-dc4cbff87-dxh4g      1/1     Running    0          5m9s
frk-instance1-846x-0                    0/4     Init:0/2   0          27s
frk-repo-host-0                         0/2     Init:0/2   0          27s
pgo-7c867985c-f9rwl                     1/1     Running    0          45h
pgo-upgrade-69b5dfdc45-km7ct            1/1     Running    0          45h

Şu an initialize olmakta bir sure sonra running olarak hazır olacaktır.

>kubectl -n postgres-operator get pods
NAME                                    READY   STATUS      RESTARTS   AGE
crunchy-alertmanager-5cd75b4f75-rnjzt   1/1     Running     0          57m
crunchy-grafana-64b9f9dcc-487j6         1/1     Running     0          57m
crunchy-prometheus-dc4cbff87-dxh4g      1/1     Running     0          57m
frk-backup-7dvp-2x8nr                   0/1     Completed   0          49m
frk-instance1-846x-0                    4/4     Running     0          53m
frk-repo-host-0                         2/2     Running     0          53m
pgo-7c867985c-f9rwl                     1/1     Running     0          46h
pgo-upgrade-69b5dfdc45-km7ct            1/1     Running     0          46h

IP adreslerini de göreceğimiz wide option ile checkyapalım;

>kubectl -n postgres-operator get pods -o wide
NAME                                    READY   STATUS      RESTARTS   AGE   IP            NODE       NOMINATED NODE   READINESS GATES
crunchy-alertmanager-5cd75b4f75-rnjzt   1/1     Running     0          58m   10.244.0.7    minikube   <none>           <none>
crunchy-grafana-64b9f9dcc-487j6         1/1     Running     0          58m   10.244.0.5    minikube   <none>           <none>
crunchy-prometheus-dc4cbff87-dxh4g      1/1     Running     0          58m   10.244.0.6    minikube   <none>           <none>
frk-backup-7dvp-2x8nr                   0/1     Completed   0          50m   10.244.0.10   minikube   <none>           <none>
frk-instance1-846x-0                    4/4     Running     0          54m   10.244.0.8    minikube   <none>           <none>
frk-repo-host-0                         2/2     Running     0          54m   10.244.0.9    minikube   <none>           <none>
pgo-7c867985c-f9rwl                     1/1     Running     0          46h   10.244.0.3    minikube   <none>           <none>
pgo-upgrade-69b5dfdc45-km7ct            1/1     Running     0          46h   10.244.0.4    minikube   <none>           <none>

Postgres Database POD una bağlanalım;

>kubectl exec -it frk-instance1-846x-0 -n postgres-operator -c database -- bash

bash-4.4$ psql
psql (14.6)
Type "help" for help.

postgres=#

Peki bu postgresql pod ve bu postgresql cluster içerisindeki config bilgierini nereden almaktadır.

C:\postgres-operator-examples-main\kustomize\postgres
λ more postgres.yaml
apiVersion: postgres-operator.crunchydata.com/v1beta1
kind: PostgresCluster
metadata:
  name: frk
spec:
  image: registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-14.6-2
  postgresVersion: 14
  instances:
    - name: instance1
      dataVolumeClaimSpec:
        accessModes:
        - "ReadWriteOnce"
        resources:
          requests:
            storage: 1Gi
  backups:
    pgbackrest:
      image: registry.developers.crunchydata.com/crunchydata/crunchy-pgbackrest:ubi8-2.41-2
      repos:
      - name: repo1
        volume:
          volumeClaimSpec:
            accessModes:
            - "ReadWriteOnce"
            resources:
              requests:
                storage: 1Gi

Peki buradaki POD larımıza remote bağlantı yapabilmek için ne yapmalıyız,

kubectl port forwarding işlemi ile bunu sağlayabiliriz.

>kubectl get pod -n postgres-operator -o wide
NAME                                    READY   STATUS      RESTARTS      AGE     IP         
crunchy-alertmanager-5cd75b4f75-rnjzt   1/1     Running     1 (90m ago)   22h     10.244.0.19
crunchy-grafana-64b9f9dcc-487j6         1/1     Running     1 (90m ago)   22h     10.244.0.14
crunchy-prometheus-dc4cbff87-dxh4g      1/1     Running     1 (90m ago)   22h     10.244.0.21
frk-backup-7dvp-2x8nr                   0/1     Completed   0             22h     10.244.0.10
frk-instance1-846x-0                    4/4     Running     4 (90m ago)   22h     10.244.0.17
frk-repo-host-0                         2/2     Running     2 (90m ago)   22h     10.244.0.20
pgo-7c867985c-f9rwl                     1/1     Running     2 (90m ago)   2d19h   10.244.0.18
pgo-upgrade-69b5dfdc45-km7ct            1/1     Running     3 (90m ago)   2d19h   10.244.0.16

IP leri görüyoruz fakat bu IP lere makine üzerinden erişemiyoruz;

C:\Users\aa>ping 10.244.0.17

Pinging 10.244.0.17 with 32 bytes of data:
Reply from 213.14.0.231: Destination net unreachable.
Reply from 213.14.0.231: Destination net unreachable.
Reply from 213.14.0.231: Destination net unreachable.
Reply from 213.14.0.231: Destination net unreachable.

Ping statistics for 10.244.0.17:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

Bu IP lere erişimi için bir gateway tanımlayıp kubectl port forwarding yapmamız gerekmektedir;

C:\postgres-operator-examples-main>kubectl apply -f deployment-files/gateway/gateway-postgresql.yaml -n postgres-operator

postgrescluster.postgres-operator.crunchydata.com/gateway-postgresql created

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir