搭建Kubernetes版的PegaSystems环境
概要
以下是搭建基于Kubernetes(以下简称k8s)的Pega Systems运行环境(Pega + PostgreSQL)的步骤。
由于按照官方的Helm Chart页面上的步骤无法正常工作,因此本文参考了官方步骤并进行了调整。
此外,在下面的说明中,将以本仓库(comefigo/k8s-pega-sample)为基础进行说明。
请注意,本示例代码中包含的用户名、密码和各种设置仅用作示例,请勿在生产环境中使用!
为了使k8s操作更加容易(包括输入补全和别名),我们使用远程容器。但如果不需要的话,可以跳过相关步骤,使用kubectl替换各种k命令来执行。
确认动作环境
我已经在以下环境中进行了最小配置的操作确认。
确认了机器规格不满足以下最低要求时,启动会困难。
-
- 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/LoadBalancer→NodePort(30000)
Pega Database → PostgreSQL
Cassandra → disable
Elastic Search → disable
各種PODのReplicas → 1
文件结构
这个示例代码是从官方的pega/charts/pega(https://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桌面版
VSCode是一种代码编辑器。
-
- 安装VSCode
- 在扩展功能中添加远程开发功能
步骤
启动远程容器
如果您不使用远程容器,请获取与k8s相同版本的kubectl(https://dl.k8s.io/release/v<版本>/bin/windows/amd64/kubectl.exe)。
皮加
所有以下命令都在pega/charts/目录下执行。
请注意,各种命令和配置值是根据官方文档执行和设置的(部分进行了调整),请根据需要参考官方文档。
1. 创建命名空间(可选)
在中文中本不需要进行翻译的一种方式是:
在这里,如果按照以下步骤将资源部署到当前命名空间中,则每个命令都需要指定命名空间。如果是在本地环境中,则不需要。
k create namespace mypega
2. 进行PostgreSQL的部署
在开始跑步之前,请确认一下。
k apply -f pega-postgres.yml
3. 拉取各种Pega容器镜像
安裝程式、pega和search需要保持版本一致。
由於安裝程式約有7GB,因此需要相當長的時間來完成拉取。
如果需要多人共享,建議在本地網絡中設置容器映像註冊表,從第二個人開始從該處拉取。
如果在本地設置了容器註冊表,請根據後續步驟和各種變數的需要適當修改相關部分。
请参考官方文件获取下面Pega使用的docker注册表的用户名和密码。
# 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:<キー>"
修改 values-minimal.yaml文件。
根据 pega/charts/pega/values-minimal.yaml 进行修改,以适应前述的最小资源需求来启动。并且为了最小化配置,将所有副本数(replicas)设置为1。请通过与初始提交的差异比较来了解详细的更改内容。
-
- actions.execute: “install”
jdbc.url・・・jdbc:postgresql://pega-postgres..svc.cluster.local:5432/pegarules
・・・postgresqlデプロイ時のnamespaceに設定すること。namespace未指定の場合はdefaultになります。
jdbc.usernameとjdbc.passwordはpega-postgres.ymlのPOSTGRES_USERとPOSTGRES_PASSWORDになります。(初期値から変更していなければそのままでOK)
docker.registry.usernameとdocker.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”更改为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.yml 文件中 initContainers 部分的注释,并进行 apply 操作。
k apply -f pega-postgres.yml
当Postgres的Pod被重新创建时,请再次将相应部分注释掉并应用。
k apply -f pega-postgres.yml
连接到数据库
如果您正在使用远程容器,您可以直接从“数据库”扩展功能中查询数据。
-
- ホストは127.0.0.1
ユーザ名、PW、Database名はそれぞれPOSTGRES_USER、POSTGRES_PASSWORD、POSTGRES_DB
ポート番号はpega-postgres.ymlのnodePortで指定したもの
查看Pod的日志
确认Pod的执行日志
k logs pod名
# ログを追従する
k logs pod名 -f
确认Pod的状态
当Pod未能正常启动时的状态确认。
k describe po pod名