1.5. 使用带有红帽服务的 Helm 安装受信任的配置文件分析器
您可以使用来自红帽的 Helm Chart 在 OpenShift 上安装红帽受信任的配置文件分析器(RHTPA)服务。您需要将红帽的 OpenShift Data Foundation 存储基础架构、红帽单点登录(SSO)作为 OpenID Connect (OIDC)供应商和 PostgreSQL 数据库。此流程指导您使用 Helm 的自定义值文件将这些各种服务与 RHTPA 集成。
如果机密值在安装后发生变化,OpenShift 会重新部署 RHTPA。
先决条件
一个运行 4.16 或更高版本的 Red Hat OpenShift Container Platform 集群。
- 支持 Ingress 资源来提供使用 HTTPS 的公开可信证书。
- Helm 版本 3.17 或更高版本。
- Red Hat SSO 作为用于身份验证的 OIDC 供应商。
- Red Hat OpenShift Data Foundation for S3 存储。
创建了以下未指定版本的 S3 存储桶名称:
-
trustify-UNIQUE_ID
-
- 新的 PostgreSQL 数据库。
-
使用
cluster-admin角色访问 OpenShift Web 控制台。 -
安装了
oc和helm二进制文件的工作站。
流程
在工作站中,打开一个终端,然后使用命令行界面登录到 OpenShift:
oc login --token=TOKEN --server=SERVER_URL_AND_PORT$ oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443注意您可以从 OpenShift Web 控制台找到要在命令行中使用的登录令牌和 URL。登录 OpenShift Web 控制台。点您的用户名,然后点 Copy login 命令。再次提供您的用户名和密码,然后单击 Display Token 以查看该命令。
为 RHTPA 部署创建一个新项目:
oc new-project PROJECT_NAME$ oc new-project trusted-profile-analyzer打开新文件进行编辑:
$ vi values-rhtpa.yaml-
将 RHTPA 值文件模板 复制并粘贴到新
values-rhtpa.yaml文件中。 使用您的信息更新
values-rhtpa.yaml文件。- 将 S3_ENDPOINT_URL 替换为您的相关 S3 存储信息。
- 将 OIDC_ISSUER_URL、FRONTEND_CLIENT_ID 和 CLI_CLIENT_ID 替换为相关的 OIDC 信息。
- 保存文件并退出编辑器。
使用您的凭证创建 S3 存储 secret 资源:
apiVersion: v1 kind: Secret metadata: name: storage-credentials namespace: PROJECT_NAME type: Opaque data: user: ACCESS_KEY password: SECRET_KEY$ cat <<EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: storage-credentials namespace: trusted-profile-analyzer type: Opaque data: user: root password: example123 EOF创建 OIDC 客户端 secret 资源:
apiVersion: v1 kind: Secret metadata: name: oidc-cli namespace: PROJECT_NAME type: Opaque data: client-secret: SECRET$ cat <<EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: oidc-cli namespace: trusted-profile-analyzer type: Opaque data: client-secret: 5460cc91-4e20-4edd-881c-b15b169f8a79 EOF使用您的数据库凭据,创建两个 PostgreSQL 数据库机密资源。
PostgreSQL 标准用户 secret 资源:
apiVersion: v1 kind: Secret metadata: name: postgresql-credentials namespace: PROJECT_NAME type: Opaque data: db.host: DB_HOST db.name: DB_NAME db.user: USERNAME db.password: PASSWORD db.port: PORT$ cat <<EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: postgresql-credentials namespace: trusted-profile-analyzer type: Opaque data: data: db.host: postgresql.example.com db.name: rhtpadb db.user: jdoe db.password: example1234 db.port: 5432 EOFPostgreSQL 管理员 secret 资源:
apiVersion: v1 kind: Secret metadata: name: postgresql-admin-credentials namespace: PROJECT_NAME type: Opaque data: db.host: DB_HOST db.name: DB_NAME db.user: USERNAME db.password: PASSWORD db.port: PORT$ cat <<EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: postgresql-admin-credentials namespace: trusted-profile-analyzer type: Opaque data: data: db.host: postgresql.example.com db.name: rhtpadb db.user: admin db.password: example1234 db.port: 5432 EOF
打开新文件进行编辑:
$ vi values-importers.yaml-
将 RHTPA importers 值文件模板 复制并粘贴到新
values-importers.yaml文件中。 - 保存文件并退出编辑器。
-
将 RHTPA importers 值文件模板 复制并粘贴到新
设置 shell 环境:
$ export NAMESPACE=trusted-profile-analyzer $ export APP_DOMAIN_URL=-$NAMESPACE.$(oc -n openshift-ingress-operator get ingresscontrollers.operator.openshift.io default -o jsonpath='{.status.domain}')添加 OpenShift Helm Chart 仓库:
$ helm repo add openshift-helm-charts https://charts.openshift.io/从 Helm Chart 仓库中获取最新的 Chart 信息:
$ helm repo update运行 Helm Chart:
helm upgrade --install redhat-trusted-profile-analyzer openshift-helm-charts/redhat-trusted-profile-analyzer -n $NAMESPACE --values PATH_TO_VALUES_FILE --values PATH_TO_IMPORTER_VALUES_FILE --set-string appDomain=$APP_DOMAIN_URL$ helm upgrade --install redhat-trusted-profile-analyzer openshift-helm-charts/redhat-trusted-profile-analyzer -n $NAMESPACE --values values-rhtpa.yaml --values values-importers.yaml --set-string appDomain=$APP_DOMAIN_URL注意您可以多次运行此 Helm Chart,从 values 文件中应用当前配置的状态。
安装完成后,您可以使用 OIDC 供应商中的用户凭证登录到 RHTPA 控制台。您可以运行以下命令来找到 RHTPA 控制台 URL:
$ oc -n $NAMESPACE get route --selector app.kubernetes.io/name=server -o jsonpath='https://{.items[0].status.ingress[0].host}{"\n"}'