管理平面安装

查看本文大纲

本页面将向你展示如何在生产环境中安装 Tetrate Service Bridge 管理平面。

在开始之前,请确保你已经:

管理平面 Operator

为了保持安装简单,但仍允许许多自定义配置选项,我们创建了一个管理平面 Operator。该 Operator 将在集群中运行,并根据 ManagementPlane 自定义资源中描述的内容引导管理平面的启动。它会监视更改并执行它们。为了帮助创建正确的自定义资源文档(CRD),我们已经添加了能力到我们的tctl客户端,用于创建基本清单,然后你可以根据你的要求进行修改。之后,你可以将清单直接应用于适当的集群,或在你的源控制操作的集群中使用。

关于 Operator
如果你想了解有关 Operator 的内部工作原理以及 Operator 模式的更多信息,请查看Kubernetes 文档

创建清单,以允许你从私有 Docker 注册表安装管理平面 Operator:

tctl install manifest management-plane-operator \
  --registry <registry-location> > managementplaneoperator.yaml

OpenShift

使用安装清单命令创建的managementplaneoperator.yaml文件可以通过使用 kubectl 客户端直接应用于适当的集群:

kubectl apply -f managementplaneoperator.yaml

应用清单后,你将在tsb命名空间中看到 Operator 正在运行:

kubectl get pod -n tsb
RedHat 生态系统目录
TSB 已在 RedHat 生态系统目录上获得了认证并列出。可以按照以下说明或通过此处在 OpenShift 平台上安装 TSB。

使用安装清单命令创建的managementplaneoperator.yaml文件可以通过使用oc客户端直接应用于适当的集群:

oc apply -f managementplaneoperator.yaml

应用清单后,你将在tsb命名空间中看到 Operator 正在运行:

oc get pod -n tsb

示例输出:

NAME                                            READY   STATUS    RESTARTS   AGE
tsb-operator-management-plane-d4c86f5c8-b2zb5   1/1     Running   0          8s

配置机密

管理平面组件需要一些机密,用于内部和外部通信目的。以下是你需要创建的机密列表。

机密名称 描述
admin-credentials TSB 将创建一个默认的管理员用户,用户名为:admin,这是该特殊帐户的密码的单向哈希。这些凭据保存在你的 IdP(身份提供者)之外,而其他任何凭据必须存储在你的 IdP 中。
tsb-certs TLS 证书,类型为kubernetes.io/tls。必须具有tls.keytls.cert值。TLS 证书可以是自签名的,也可以由公共 CA 颁发。
postgres-credentials 包含:
 1. PostgreSQL 用户名和密码。
 2. 用于在 PostgreSQL 配置为呈现自签名证书时验证 PostgreSQL 连接的 CA 证书。仅当在 Postgres 设置中将sslMode设置为verify-caverify-full时,才会进行 TLS 验证。有关详细信息,请参见PostgresSettings
 3. 如果 Postgres 配置了互通 TLS,则包含客户端证书和私钥。
elastic-credentials Elasticsearch 用户名和密码。
es-certs Elasticsearch 配置为呈现自签名证书时,用于验证 Elasticsearch 连接的 CA 证书。
ldap-credentials 仅在使用 LDAP 作为身份提供者(IdP)时设置。包含 LDAP binddnbindpassword
custom-host-ca 仅在使用 LDAP 作为 IdP 时设置。用于验证 LDAP 连接的 CA 证书,当 LDAP 配置为呈现自签名证书时。
iam-oidc-client-secret 仅在使用 OIDC 与任何 IdP 时设置。包含 OIDC 客户端密钥和设备客户端密钥。
azure-credentials 仅在使用 Azure AD 作为 IdP 时设置。用于连接到 Azure AD 进行团队和用户同步的客户端密钥。
xcp-central-cert XCP 中央 TLS 证书。请转到内部证书要求以获取更多详细信息。

使用 tctl 生成机密

注意
自 1.7 以来,TSB 支持自动管理 TSB 管理平面 TLS 证书、内部证书和中间 Istio CA 证书。有关详细信息,请转到自动证书管理。这意味着你不再需要创建tsb-certsxcp-central-cert机密。以下示例将假定你正在使用自动证书管理。

可以通过将它们作为命令行标志传递给tctl管理平面机密命令,以正确的格式生成这些机密。

OIDC 作为 IdP

以下命令将生成包含 Elasticsearch、Postgres、OIDC 和管理员凭据以及 TSB TLS 证书的managementplane-secrets.yaml

tctl install manifest management-plane-secrets \
    --elastic-password <elastic-password> \
    --elastic-username <elastic-username> \
    --oidc-client-secret "<oidc-client-secret>" \
    --postgres-password <postgres-password> \
    --postgres-username <postgres-username> \
    --tsb-admin-password <tsb-admin-password> > managementplane-secrets.yaml

LDAP 作为 IdP

以下命令将生成包含 Elasticsearch、Postgres、LDAP 和管理员凭据以及 TSB TLS 证书的managementplane-secrets.yaml

tctl install manifest management-plane-secrets \
    --elastic-password <elastic-password> \
    --elastic-username <elastic-username> \
    --ldap-bind-dn <ldap-bind-dn> \
    --ldap-bind-password <ldap-bind-password> \
    --postgres-password <postgres-password> \
    --postgres-username <postgres-username> \
    --tsb-admin-password <tsb-admin-password> > managementplane-secrets.yaml

查看CLI 参考文档以获取所有可用选项,例如为ElasticsearchPostgreSQLLDAP提供 CA 证书。你还可以通过运行以下帮助命令,从tctl中检查绑定的解释:

tctl install manifest management-plane-secrets --help

应用机密

一旦你创建了机密清单,就可以将其添加到源代码控制或应用于你的集群。

Vault 注入
如果你正在为某些组件使用Vault注入,请在将其应用到集群之前,从你创建的清单中删除适用的机密。

OpenShift

kubectl apply -f managementplane-secrets.yaml

在应用它之前,请记住,你必须允许不同管理平面组件的服务帐户访问你的 OpenShift 授权策略。

oc adm policy add-scc-to-user anyuid -n tsb -z tsb-iam
oc adm policy add-scc-to-user anyuid -n tsb -z tsb-oap

现在可以应用它:

oc apply -f managementplane-secrets.yaml

注意:TSB 将每小时自动执行此操作,因此此命令只需在初始安装后运行一次。

验证安装

为验证你的安装成功,请使用管理员用户登录。尝试连接到 TSB UI 或使用tctl CLI 工具登录。

TSB UI 可通过以下命令返回的外部 IP 的端口 8443 访问:

标准

kubectl get svc -n tsb envoy

OpenShift

oc get svc -n tsb envoy

要将tctl的默认配置文件设置为指向你的新 TSB 集群,请执行以下操作:

标准

tctl config clusters set default --bridge-address $(kubectl get svc -n tsb envoy --output jsonpath='{.status.loadBalancer.ingress[0].ip}'):8443

AWS

tctl config clusters set default --bridge-address $(kubectl get svc -n tsb envoy --output jsonpath='{.status.loadBalancer.ingress[0].hostname}'):8443

现在,你可以使用tctl登录,并提供组织名称和管理员帐户凭据。租户字段是可选的,可以在稍后配置,当添加租户到平台时。

tctl login
Organization: tetrate
Tenant:
Username: admin
Password: *****
Login Successful!

查看使用 tctl 连接到 TSB以获取有关如何配置 tctl 的更多详细信息。