Quick start#

Kind で構築された単一のローカルKubernetesクラスターでKubernetes用EDB Postgres分散を使用して、ラップトップまたはコンピューターでEDB Postgres分散PGDクラスターをテストできます。

警告

これらの指示は、デモンストレーション、テスト、および練習のみを目的としているため、実稼働環境では使用しないでください。

このクイックスタートでは、ローカルのKubernetesインストールでEDB Postgres分散クラスターを起動して、実験できる方法を示します。

重要

Kubernetesクラスターに接続するには、マシンに`kubectl` がインストールされていることを確認します。 installing `kubectl <https://kubernetes.io/docs/tasks/tools/install-kubectl/>`_ に関するKubernetesドキュメントを参照してください。

パート1-ローカルKubernetesプレイグラウンドをセットアップする#

Dockerコンテナノードを使用してローカルKubernetesクラスターを実行するためのツールであるKindをインストールします。 KindはKubernetes IN Dockerの略です。既にKubernetesクラスターにアクセスしている場合、パート2に進んでください。

Kind Quick Start の指示に従って、Kindを環境にインストールします。次に、Kubernetesクラスターを作成します。

kind create cluster --name pgd

パート2-Kubernetes用に分散されたEDB Postgresのインストール#

ラップトップでKubernetesインストールをアップして実行したら、KubernetesのEDB Postgres Distributedをインストールできます。

詳細は、 Installation and upgrade を参照してください。

パート3-PGDクラスターを展開する#

Kubernetesの他のデプロイメントと同様に、 PGDクラスターを展開するには、 PGDクラスターを構成する目的のPGDGroup リソースを定義する構成ファイルを適用する必要があります。

一部のサンプルファイルは、EDB CloudNativePG Global Clusterリポジトリに含まれています。マニフェストには、2つのデータグループと3つのリージョンにまたがるグローバル監視ノードを含むPGDクラスターの定義が含まれています。各データグループは、2つのデータノードと1つのローカル監視ノードで構成されています。

apiVersion: pgd.k8s.enterprisedb.io/v1beta1
kind: PGDGroup
metadata:
  name: region-a
spec:
  instances: 2
  proxyInstances: 2
  witnessInstances: 1
  pgd:
    parentGroup:
      name: world
      create: true
    discovery:
      - host: region-a-group
      - host: region-b-group
      - host: region-c-group
  cnp:
    storage:
      size: 1Gi
  connectivity:
    dns:
      additional:
        - domain: alternate.domain
        - domain: my.domain
          hostSuffix: -dc1
    tls:
      mode: verify-ca
      clientCert:
        caCertSecret: client-ca-key-pair
        certManager:
          spec:
            issuerRef:
              name: client-ca-issuer
              kind: Issuer
              group: cert-manager.io
      serverCert:
        caCertSecret: server-ca-key-pair
        certManager:
          spec:
            issuerRef:
              name: server-ca-issuer
              kind: Issuer
              group: cert-manager.io
- --
apiVersion: pgd.k8s.enterprisedb.io/v1beta1
kind: PGDGroup
metadata:
  name: region-b
spec:
  instances: 2
  proxyInstances: 2
  witnessInstances: 1
  pgd:
    parentGroup:
      name: world
    discovery:
      - host: region-a-group
      - host: region-b-group
      - host: region-c-group
  cnp:
    storage:
      size: 1Gi
  connectivity:
    tls:
      mode: verify-ca
      clientCert:
        caCertSecret: client-ca-key-pair
        certManager:
          spec:
            issuerRef:
              name: client-ca-issuer
              kind: Issuer
              group: cert-manager.io
      serverCert:
        caCertSecret: server-ca-key-pair
        certManager:
          spec:
            issuerRef:
              name: server-ca-issuer
              kind: Issuer
              group: cert-manager.io
- --
apiVersion: pgd.k8s.enterprisedb.io/v1beta1
kind: PGDGroup
metadata:
  name: region-c
spec:
  instances: 0
  proxyInstances: 0
  witnessInstances: 1
  pgd:
    parentGroup:
      name: world
    discovery:
      - host: region-a-group
      - host: region-b-group
      - host: region-c-group
  cnp:
    storage:
      size: 1Gi
  connectivity:
    tls:
      mode: verify-ca
      clientCert:
        caCertSecret: client-ca-key-pair
        certManager:
          spec:
            issuerRef:
              name: client-ca-issuer
              kind: Issuer
              group: cert-manager.io
      serverCert:
        caCertSecret: server-ca-key-pair
        certManager:
          spec:
            issuerRef:
              name: server-ca-issuer
              kind: Issuer
              group: cert-manager.io

最初に保存して実行することにより、flexible-3-regions 例を展開できます。

kubectl apply -f flexible_3regions.yaml

get pods コマンドを使用して、ポッドが作成されていることを確認できます。

kubectl get pods

ポッドはPGDノードの一部として作成されています。 Architecture で説明しているように、これらはEDB CloudNativePG Clusterクラスターの上に実装されています。

次に、クラスターをリストすることができます。これは、PGDノードを表示します。

$ kubectl get clusters
NAME         AGE     INSTANCES   READY   STATUS                     PRIMARY
region-a-1   2m50s   1           1       Cluster in healthy state   region-a-1-1
region-a-2   118s    1           1       Cluster in healthy state   region-a-2-1
region-a-3   91s     1           1       Cluster in healthy state   region-a-3-1

最終的に、 PGDノードは、 PGDクラスターを構成するPGDグループの一部として作成されます。

$ kubectl get pgdgroups
NAME       DATA INSTANCES   WITNESS INSTANCES   PHASE                AGE
region-a   2                1                   PGDGroup - Healthy   4m50s
region-b   2                1                   PGDGroup - Healthy   4m50s
region-c   0                1                   PGDGroup - Healthy   4m50s

region-cグループが監視ノードにすぎないことに注意してください。