4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Kubernetes版PegaSystems環境を作る

Posted at

概要

Kubernetes(以下k8s)ベースのPega Systemsの動作環境(Pega + PostgreSQL)を構築するための手順です。
公式のHelm Chartページの手順に従っても期待通りに動作しなかったため、公式手順を参考にしつつアレンジしたものになります。
また、以下の説明においては当リポジトリ(comefigo/k8s-pega-sample)をベースに説明していきます。
当サンプルコードに記載されているユーザ名やパスワード、各種設定はサンプルとして利用してください。本番運用では絶対利用しないこと!

手順にはk8sの操作をしやすくする(入力補完、エイリアス)ためにリモートコンテナを利用していますが、不要な方は該当手順をスキップし、各種kコマンドをkubectlに置き換えて実行してください。

動作確認環境

以下の環境にて最小構成での動作確認しました。
マシンスペックは最低限以下を満たさないと起動が困難であることを確認しています。

  • CPU: 4コア以上
  • メモリ:12GB以上
  • Windows 10
  • Docker Desktop・・・4.20.1
    商用利用の場合は、ライセンスを購入しましょう!
  • k8s・・・1.25.9
  • kubectl・・・1.25.9
  • helm・・・3.11.3
  • 各種pegaコンテナイメージ・・・8.8.2

システム構成

公式ドキュメントのシステム構成図を引用していますが、以下の変更点があります。

  • Ingress/LoadBalancerNodePort(30000)
  • Pega Database → PostgreSQL
  • Cassandra → disable
  • Elastic Search → disable
  • 各種PODのReplicas → 1

image.png

ファイル構成

サンプルコードのpega/charts/pega公式のpega/charts/pegahttps://github.com/pegasystems/pega-helm-charts/commit/2b5e96c3842a5f8290c43cdd1de31a8f1e75f772)から取得したものです。

pega/charts/pega/               ・・・Pega公式のHelm Chart
           values-minimal.yaml  ・・・Pega用Helm変数ファイル(pega/charts/pega/values-minimal.yamlをベースyに修正)
           pega-postgres.yml    ・・・PostgreSQL用のマニフェスト

事前準備

Docker Desktop

  1. Docker Desktopをインストールする
  2. 非WSL2モードに設定(作者都合)
    ついでに自動起動もOFF
    docker_desktop_general_settings.png
  3. Kubernetesを有効化
    ※Docker Desktopが更新されてもk8sのバージョンアップは自動更新されないので、k8sを更新したい場合は「リセット」ボタンからどうぞ
    docker_desktop_k8s_settings.png
  4. 各種リソース条件を設定し、「Apply& restart」後に左下がすべて「緑」になるまで待機
    最低限:CPU>=4、メモリ>=12GB
    docker_desktop_resources_settings.png
  5. 当ソースがあるフォルダを共有に追加
    例:c:\k8s-pega-sampleにある場合は、c:\k8s-pega-sampleを追加します。
    docker_desktop_sharing_settings.png

VSCode

  1. VSCodeをインストールする
  2. 拡張機能でRemote Developmentを追加する

手順

リモートコンテナを起動する

リモートコンテナを使用しない場合は、k8sと同バージョンのkubectl(https://dl.k8s.io/release/v<バージョン>/bin/windows/amd64/kubectl.exe)を取得してください。

  1. Docker Desktopを起動する
  2. Docker Desktopのk8sのconfig(%USERPROFILE%\.kube\config)をkube-configにコピー
    複数のコンテキストがある場合、デフォルトをdocker-desktopになるように編集してください
  3. VSCode「Remote Container」を起動する
    初回時間がかかります...
    vscode_open_remote_container.png
  4. 左にエクスプローラーが表示されたら起動完了、「Ctrl」+「@」でターミナルを開く
    以降の手順はこのターミナルで実行していきます。
    vscode_terminal.png
  5. 以下のコマンドを実行し、以下のような結果が返ってくればOK
    kはkubectlのエイリアスとして設定しています。詳しくは.bashrcを参照
    トラブルを避けるためにクライアントとサーバのバージョンは揃えておくと良い
    詳しくはこちらを参照
    > k version
    
    WARNING: This version information is deprecated and will be replaced with the output from kubectl version --short.  Use --output=yaml|json to get the full version.
    Client Version: version.Info{Major:"1", Minor:"25", GitVersion:"v1.25.9", GitCommit:"a1a87a0a2bcd605820920c6b0e618a8ab7d117d4", GitTreeState:"clean", BuildDate:"2023-04-12T12:16:51Z", GoVersion:"go1.19.8", Compiler:"gc", Platform:"linux/amd64"}
    Kustomize Version: v4.5.7
    Server Version: version.Info{Major:"1", Minor:"25", GitVersion:"v1.25.9", GitCommit:"a1a87a0a2bcd605820920c6b0e618a8ab7d117d4", GitTreeState:"clean", BuildDate:"2023-04-12T12:08:36Z", GoVersion:"go1.19.8", Compiler:"gc", Platform:"linux/amd64"}
    

Pega

以下のコマンドはすべてpega/charts/配下で実行します。

なお、各種コマンドや設定値は公式ドキュメントを元に(一部アレンジして)実行および設定していますので、必要に応じて参照してください。

1. namespace作成(オプション)

当手順はオプションになります。
なお、以下の手順でリソースを当namespaceにデプロイした場合は、各コマンドでnamespaceを指定する必要があります。
ローカル環境であれば不要でよい。

k create namespace mypega

2. PostgreSQLのデプロイ

Runningになるまで確認すること

k apply -f pega-postgres.yml

3. 各種Pegaコンテナイメージをpullする

installer、pega、searchはバージョンを揃えること
installerは約7GBあるので、pull完了するまでにかなり時間がかかります。
複数人で共有する場合は、ローカルネットワークにコンテナイメージレジストリを設けて2人目以降はそこからpullすることをお勧めします。
なお、ローカルのコンテナレジストリを設けた場合は、後続の手順や各種変数において該当箇所を適宜修正してください。

下記のPega用dockerレジストリのユーザ名、PWは公式ドキュメントを参考に取得してください。

# Pegaのプライベートリポジトリを参照できるようにログインする
# successと表示されればOK
docker login pega-docker.downloads.pega.com -u <ユーザ名> -p <キー>

# コンテナイメージのtagは適宜変更してください
docker pull pega-docker.downloads.pega.com/platform/installer:8.8.2
docker pull pega-docker.downloads.pega.com/platform/pega:8.8.2
docker pull pega-docker.downloads.pega.com/platform/search:8.8.2
docker pull pega-docker.downloads.pega.com/platform/clustering-service:1.3.4
docker pull pega-docker.downloads.pega.com/platform/clustering-service-kubectl:1.0.0

【番外編】使用可能のコンテナイメージ一覧を取得

詳しくは上記の公式ドキュメント

curl -X GET "https://pega-docker.downloads.pega.com/v2/_catalog" -H "X-JFrog-Art-Api:<キー>"

【番外編】特定のコンテナイメージの使用可能のタグ一覧を取得

詳しくは上記の公式ドキュメント

curl -X GET "https://pega-docker.downloads.pega.com/v2/<コンテナイメージ名>/tags/list" -H "X-JFrog-Art-Api:<キー>"

4. values-minimal.yamlを編集

pega/charts/pega/values-minimal.yamlをベースに前述の最小リソース量で起動できるように修正したもの。
また、最小構成になるようにreplicasはすべて1にしています。
詳しい変更内容は初回コミットとの差分で比較してください。

  • actions.execute: "install"
  • jdbc.url・・・jdbc:postgresql://pega-postgres.<namespace>.svc.cluster.local:5432/pegarules
    <namespace>・・・postgresqlデプロイ時のnamespaceに設定すること。namespace未指定の場合はdefaultになります。
  • jdbc.usernamejdbc.passwordpega-postgres.ymlPOSTGRES_USERPOSTGRES_PASSWORDになります。(初期値から変更していなければそのままでOK)
  • docker.registry.usernamedocker.registry.passwordにPegaのプライベートリポジトリの情報(docker login時の情報)

5. Pega初期データの投入

# 初回のみ
helm dependency build pega

# completedになるまで10分以上かかります。
# 進行状況を確認する場合は、logsコマンドで処理を確認しましょう。
helm install -f values-minimal.yaml pega-install ./pega

# 完了すると以下のようになります。
NAME                    READY   STATUS      RESTARTS   AGE
pega-db-install-d6dld   0/1     Completed   0          11m

6. Pega起動

values-minimal.yamlのactions.execute: "deploy"に編集し、以下を実行
pega-web-0でポートが競合エラーになっている場合は、service.NodePortを変更してください。

helm install -f values-minimal.yaml pega-deploy ./pega

# db-installを除くPodがすべて 1/1 になったら起動完了
NAME                    READY   STATUS      RESTARTS      AGE
pega-db-install-d6dld   0/1     Completed   0             17h
pega-hazelcast-0        1/1     Running     0             16m
pega-postgres-0         1/1     Running     4 (43m ago)   17h
pega-search-0           1/1     Running     0             16m
pega-web-0              1/1     Running     0             16m

7. 動作確認

ブラウザでhttp://localhost:30000/prwebにアクセスすると見慣れたPegaのログイン画面が表示されるかと思います。
service.NodePortを変更した場合はそのポート番号にしてください。

  • ユーザ名: Administrator@pega.com
  • pw: values-minimal.yamlのinstaller.adminPassword

片付け


# pegaインストーラの削除(初回実行後にいつでも削除可)
helm uninstall pega-install

# pegaアプリケーションの削除
helm uninstall pega-deploy

# DBの削除(データは残る)
k delete -f pega-postgres.yml

番外編

DBのデータを削除

pega-postgres.ymlinitContainers配下のコメントアウトを解除し、applyする

k apply -f pega-postgres.yml

PostgresのPodが再作成されたら、再度該当箇所をコメントアウトし、applyする

k apply -f pega-postgres.yml

DB接続

リモートコンテナを利用されている場合は、拡張機能「Database」から直接データを参照することができます

  • ホストは127.0.0.1
  • ユーザ名、PW、Database名はそれぞれPOSTGRES_USERPOSTGRES_PASSWORDPOSTGRES_DB
  • ポート番号はpega-postgres.ymlnodePortで指定したもの

postgresql_viewer.png

Podのlogを確認する

Podの実行ログの確認

k logs pod名

# ログを追従する
k logs pod名 -f

Podの状態を確認する

正常にPodが起動されていない時の状態確認

k describe po pod名
4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?