GNU/Linux >> Linux の 問題 >  >> Cent OS

KubernetesにPostgreSQLをデプロイする方法

はじめに

PostgreSQLは、ACID準拠のトランザクションを特徴とする信頼性が高く堅牢なリレーショナルデータベースシステムです。あらゆるサイズのワークロードを処理するように設計されているため、個人的な使用や、データウェアハウス、ビッグデータサーバー、Webサービスなどの大規模な展開に最適です。

PostgreSQLをKubernetesにデプロイすると、RDBMSとオーケストレーションプラットフォームの両方の優れた側面を活用して、スケーラブルでポータブルなPostgreSQLインスタンスが作成されます。

この記事では、KubernetesにPostgreSQLをデプロイする2つの方法(Helmチャートを使用する方法と手動で構成を作成する方法)について説明します。

前提条件

  • kubectlがインストールされたKubernetesクラスター
  • ヘルム3がインストールされています
  • システムの管理者権限

Helmを使用してPostgreSQLをデプロイする

Helmを使用すると、PostgreSQLインスタンスをクラスタにすばやく簡単にデプロイできます。

ステップ1:Helmリポジトリを追加する

1. Artifact Hubで、使用するPostgreSQLHelmチャートを検索します。次のように入力して、チャートのリポジトリをローカルのHelmインストールに追加します。

helm repo add [repository-name] [repository-address]

この記事では、PostgreSQLのインストールにBitnamiHelmチャートを使用しています。

2.リポジトリを追加したら、ローカルリポジトリを更新します。

helm repo update

更新が成功したことを確認します。

ステップ2:永続ストレージボリュームを作成して適用する

Postgresデータベースのデータは、ポッドを再起動しても保持される必要があります。

1.これを実現するには、nanoなどのテキストエディターを使用して、YAMLファイルにPersistentVolumeリソースを作成します。

nano postgres-pv.yaml

ファイルの内容は次のように定義します:

  • リソース自体。
  • ストレージクラス。
  • 割り当てられたストレージの量。
  • アクセスモード。
  • ホストシステムのマウントパス。

この例では、次の構成を使用しています。

apiVersion: v1
kind: PersistentVolume
metadata:
  name: postgresql-pv
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"

2.ファイルを保存して終了します。次に、 kubectlを使用して構成を適用します

kubectl apply -f postgres-pv.yaml

システムは永続ボリュームの作成を確認します。

ステップ3:永続的なボリュームクレームを作成して適用する

1.永続ボリュームクレーム(PVC)を作成して、前の手順で割り当てられたストレージを要求します。

nano postgres-pvc.yaml

この例では、次の構成を使用しています。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: postgresql-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

2.ファイルを保存して終了します。 kubectlを使用して構成を適用します

kubectl apply -f postgres-pvc.yaml

システムはPVCの作成が成功したことを確認します。

3. kubectl getを使用します PVCがPVに正常に接続されているかどうかを確認するには:

kubectl get pvc

ステータス列には、申し立てがバインド済みであることが示されています 。

ステップ4:ヘルムチャートをインストールする

helm installを使用してヘルムチャートをインストールします 指図。 --setを追加します インストールを作成したPVCに接続し、ボリューム権限を有効にするコマンドのフラグ:

helm install [release-name] [repo-name] --set persistence.existingClaim=[pvc-name] --set volumePermissions.enabled=true

インストールが成功すると、システムにレポートが表示されます。

ステップ5:PostgreSQLクライアントに接続する

1. POSTGRES_PASSWORDをエクスポートします PostgreSQLインスタンスにログインできるようにするための環境変数:

export POSTGRES_PASSWORD=$(kubectl get secret --namespace default psql-test-postgresql -o jsonpath="{.data.postgresql-password}" | base64 --decode)

2.別のターミナルウィンドウを開き、次のコマンドを入力してPostgresポートを転送します。

kubectl port-forward --namespace default svc/psql-test-postgresql 5432:5432

システムはポート接続の処理を開始します。

3.ポート転送ウィンドウを最小化し、前のウィンドウに戻ります。 PostgreSQLクライアントであるpsqlに接続するコマンドを入力します。

PGPASSWORD="$POSTGRES_PASSWORD" psql --host 127.0.0.1 -U postgres -d postgres -p 5432

psql コマンドプロンプトが表示され、PostgreSQLが入力を受け取る準備ができています。

最初から構成を作成してPostgreSQLをデプロイする

KubernetesでPostgresを手動で構成すると、デプロイ構成を微調整できます。

ステップ1:ConfigMapを作成して適用する

ConfigMapリソースには、展開プロセス中に使用されるデータが含まれています。

1.テキストエディタでConfigMapYAMLファイルを作成します。

nano postgres-configmap.yaml

2.ファイルの最も重要な部分はデータセクションであり、ここでデータベースの名前を指定します 、ユーザー名 、およびパスワード PostgreSQLインスタンスにログインするため。

この例では、ConfigMapファイルで次のパラメーターを使用しています。

apiVersion: v1
kind: ConfigMap
metadata:
  name: postgres-config
  labels:
    app: postgres
data:
  POSTGRES_DB: postgresdb
  POSTGRES_USER: admin
  POSTGRES_PASSWORD: test123

3.ファイルを保存して終了します。次に、 kubectlを使用してリソースを適用します

kubectl apply -f postgres-configmap.yaml

システムは、構成ファイルが正常に作成されたことを確認します。

ステップ2:永続ストレージボリュームと永続ボリュームクレームを作成して適用する

1.ストレージ構成用のYAMLファイルを作成します。

nano postgres-storage.yaml

2. Helmチャートの展開方法では、永続ボリュームと永続ボリュームクレームに2つの別々のファイルを使用しましたが、以下の例のように、両方の構成を1つのファイルに配置することもできます。

kind: PersistentVolume
apiVersion: v1
metadata:
  name: postgres-pv-volume
  labels:
    type: local
    app: postgres
spec:
  storageClassName: manual
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteMany
  hostPath:
    path: "/mnt/data"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: postgres-pv-claim
  labels:
    app: postgres
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 5Gi

3.ファイルを保存して終了します。 kubectlを使用してリソースを適用します

kubectl apply -f postgres-storage.yaml

システムは、PVとPVCの両方が正常に作成されたことを確認します。

4.次のコマンドを使用して、PVCがPVに接続されていることを確認します。

kubectl get pvc

PVCのステータスはバインド済みです 、およびPVCはPostgreSQLデプロイメントで使用する準備ができています。

ステップ3:PostgreSQLデプロイメントを作成して適用する

1.デプロイYAMLファイルを作成します。

nano postgres-deployment.yaml

2.デプロイメントファイルにはPostgreSQLデプロイメントの構成が含まれ、コンテナーとボリュームの仕様が提供されます。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: postgres
spec:
  replicas: 1
  selector:
    matchLabels:
      app: postgres
  template:
    metadata:
      labels:
        app: postgres
    spec:
      containers:
        - name: postgres
          image: postgres:10.1
          imagePullPolicy: "IfNotPresent"
          ports:
            - containerPort: 5432
          envFrom:
            - configMapRef:
                name: postgres-config
          volumeMounts:
            - mountPath: /var/lib/postgresql/data
              name: postgredb
      volumes:
        - name: postgredb
          persistentVolumeClaim:
            claimName: postgres-pv-claim

3.ファイルを保存して終了します。 kubectlを使用してデプロイを適用します

kubectl apply -f postgres-deployment.yaml

システムは、デプロイメントが正常に作成されたことを確認します。

ステップ4:PostgreSQLサービスを作成して適用する

1.最後に、PostgreSQLサービスを構成するためのYAMLファイルを作成します。

nano postgres-service.yaml

2.サービスタイプとポートを指定します。この例では、次の構成を使用しています。

apiVersion: v1
kind: Service
metadata:
  name: postgres
  labels:
    app: postgres
spec:
  type: NodePort
  ports:
   - port: 5432
  selector:
   app: postgres

3.ファイルを保存して終了します。 kubectlを使用して構成を適用します

kubectl apply -f postgres-service.yaml

システムは、サービスが正常に作成されたことを確認します。

4.次のコマンドを使用して、システム上のすべてのリソースを一覧表示します。

kubectl get all

ポッドとデプロイメントは1/1を示しています 準備完了ステータス。必要なレプリカセットの数は、デプロイYAMLファイルで構成されているものを反映しています。

ステップ5:PostgreSQLに接続する

1.すべてのリソースの準備ができたら、 kubectl execを使用します PostgreSQLインスタンスにログインします。

kubectl exec -it [pod-name] --  psql -h localhost -U admin --password -p [port] postgresdb

2.システムがパスワードを要求します。手順1で定義したパスワードを入力し、 Enterを押します。 。 psql コマンドプロンプトが表示されます。

これで、データベースはユーザー入力を受け取る準備ができました。


Cent OS
  1. CentOS7にPostgreSQLをインストールする方法

  2. 最初のポッドをKubernetesクラスターにデプロイする方法

  3. PostgreSQLをDockerコンテナとしてデプロイする方法

  1. DockerコンテナにPostgreSQLをデプロイする方法

  2. KubernetesにElasticsearchをデプロイする方法

  3. KubernetesにWordPressインスタンスをデプロイする方法

  1. KubernetesにRedisクラスターをデプロイする方法

  2. KubernetesにRabbitMQをデプロイする方法

  3. PostgreSQLでデータベースを作成する方法