Cloud Native PostgreSQLのライセンス投入について

はじめに

説明

Cloud Native PostgreSQL(CNP)とはEDB社の提供しているPostgreSQLのKubernates Operatorになります。Kubernates Operatorを初耳の方も多いと思いますが、一言で申しますとクラスタ管理・構築ツールになります。

前回は設定を行いましたが、今回はライセンスを設定してみます。
2021年6月1日現在の情報になりますので現時点の情報は下記サイトを確認下さい。

構築所要時間

15分程度を想定しております。

minikubeのダッシュボード

minikubeにはWebコンソールが用意されてますので起動すると便利です。特にパスワードの復号化や今回のようにYAMLを見たり、編集するのに便利です。

minikube dashboard --url

ライセンスについて

EDB PostgreSQL Advanced Server(EPAS)を使用しない限り、インストール時点ではライセンス認証は必要ありません。

30日間使用できます。30日後はフェイルオーバーなどが機能しなくなります。

ライセンス発行

ライセンスに必要な情報の収集

この2つの情報が必要になります。

  • cluster namespace
  • cluster name

EPASを使う場合は構築中に必要になるため先に決定する必要があり、cluseter nameは構築時にYAMLで自由に設定できます。
(Docsのサンプルではcluseter-example、Openshiftのデフォルトはcluster-sample)

namespaceについてはインストール元で変更で変わるため注意が必要です。Docsにある通りマニフェストでインストールする場合はスクリプト内で”postgresql-operator-system”が指定されており、Openshiftでは自由に選べるもののデフォルトはopenshift-operators、OperatorHubはYAML内で”operaor”が設定されております。

後から調査する場合はCNPのコントローラーが所属するnamespaceになります。

ライセンスの登録

ライセンス登録サイトは下記になります。

ここで先程の情報が必要になります。ライセンス登録にはEDB社へのアカウント登録も必要です。
また1アカウントは1ライセンスのみの発行のため複数環境で動作確認される方は注意下さい。

EPASのライセンス投入

Cluster作成時にimageNameとLincense Keyを指定します。

spec:
  imageName: quay.io/enterprisedb/edb-postgres-advanced:13.3
  licenseKey: FT7xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx====

kubectl applyの際に登録したnamespaceと異なる場合、認証が通りません。-nオプションでnamespaceを指定する必要があります。

applyが成功すればライセンス作成日より60日間使用できるかと存じます。後述のConfigMapへのライセンスも自動反映されるようです。

$ kubectl get clusters cluster-example -n postgres-operator-system -o yaml
  licenseStatus:
    isTrial: true
    licenseExpiration: "2021-07-31T00:00:00Z"
    licenseStatus: Valid license (xxxxxx@sios.com)
    repositoryAccess: false
    valid: true

OpenShiftのライセンス投入

minikubeでEPASを使用しない場合、ConfigMapを利用したライセンス設定は認証が働かないので動作が確認できませんが、OpenShiftの場合は試しにライセンスを登録し、確認することができます。
この場合はライセンス作成日より30日間のライセンスが適応されます。

現在の状態を確認します。

$ kubectl get clusters cluster-sample -n openshift-operators -o yaml
  licenseStatus:
    isImplicit: true
    isTrial: true
    licenseExpiration: "2021-07-01T11:44:38Z"
    licenseStatus: Implicit trial license
    repositoryAccess: false
    valid: true

ConfigMapにライセンスを追加します。

kubectl create configmap -n [NAMESPACE_NAME_HERE] \
    postgresql-operator-controller-manager-config \
    --from-literal=EDB_LICENSE_KEY=[LICENSE_KEY_HERE]

ライセンス投入後のコマンドは動作環境によって変わります。

kubectl delete pods -n openshift-operators -l app.kubernetes.io/name=cloud-native-postgresql

ライセンスを確認します。

$ kubectl get clusters cluster-sample -n openshift-operators -o yaml
  licenseStatus:
    isTrial: true
    licenseExpiration: "2021-07-17T00:00:00Z"
    licenseStatus: Valid license (xxxxxx@sios.com)
    repositoryAccess: false
    valid: true

あとがき

これでライセンスも反映されました。次回の内容はまだ未定です。

ここまでお読みいただき、ありがとうございました!