5.5. 在多集群网格中安装 Kiali
在两个 OpenShift Container Platform 集群的多集群网格配置中安装 Kiali。
在此过程中,CLUSTER1 是东集群,CLUSTER2 是 West 集群。
您可以为跨越多个集群的网格调整这些说明。
先决条件
- 您已在每个集群中安装了最新的 Kiali Operator。
- Istio 在每个集群的多集群配置中安装。
-
您已在笔记本电脑上安装了
istioctl,您可以使用它们运行这些说明。 -
以具有
cluster-admin角色的用户身份登录到 OpenShift Container Platform Web 控制台。 - 您已配置了指标存储,以便 Kiali 可以从所有集群查询指标。Kiali 从对应的端点查询指标和追踪。
步骤
在东集群中安装 Kiali:
创建名为
kiali.yaml的 YAML 文件,它为 Kiali 部署创建一个命名空间。配置示例
apiVersion: kiali.io/v1alpha1 kind: Kiali metadata: name: kiali namespace: istio-system spec: version: default external_services: prometheus: auth: type: bearer use_kiali_token: true thanos_proxy: enabled: true url: https://thanos-querier.openshift-monitoring.svc.cluster.local:9091注意本例的端点使用 OpenShift Monitoring 来配置指标。如需更多信息,请参阅"使用 Kiali 配置 OpenShift Monitoring"。
运行以下命令,在 East 集群中应用 YAML 文件:
$ oc --context cluster1 apply -f kiali.yaml输出示例
kiali-istio-system.apps.example.com
运行以下命令,确保 Kiali 自定义资源(CR)已就绪:
$ oc wait --context cluster1 --for=condition=Successful kialis/kiali -n istio-system --timeout=3m输出示例
kiali.kiali.io/kiali condition met显示 Kiali Route 主机名。
$ oc --context cluster1 get route kiali -n istio-system -o jsonpath='{.spec.host}'在 West 集群中创建一个 Kiali CR。
配置示例
apiVersion: kiali.io/v1alpha1 kind: Kiali metadata: name: kiali namespace: istio-system spec: version: default auth: openshift: redirect_uris: # Replace kiali-route-hostname with the hostname from the previous step. - "https://{kiali-route-hostname}/api/auth/callback/cluster2" deployment: remote_cluster_resources_only: trueKiali Operator 在 East 集群中创建 Kiali 服务器所需的资源,以连接到 West 集群。Kiali 服务器没有安装在 West 集群中。
运行以下命令,在 West 集群中应用 YAML 文件:
$ oc --context cluster2 apply -f kiali-remote.yaml运行以下命令,确保 Kiali CR 已就绪:
$ oc wait --context cluster2 --for=condition=Successful kialis/kiali -n istio-system --timeout=3m创建一个远程集群 secret,以便 East 集群中的 Kiali 安装可以访问 West 集群。
创建与 West 集群中的 kiali-service-account 绑定的长存 API 令牌。Kiali 使用此令牌向 West 集群进行身份验证。
配置示例
apiVersion: v1 kind: Secret metadata: name: "kiali-service-account" namespace: "istio-system" annotations: kubernetes.io/service-account.name: "kiali-service-account" type: kubernetes.io/service-account-token运行以下命令,在 West 集群中应用 YAML 文件:
$ oc --context cluster2 apply -f kiali-svc-account-token.yaml创建
kubeconfig文件,并将其保存为 Kiali 部署所在的东集群中的 secret。要简化此过程,请使用
kiali-prepare-remote-cluster.sh脚本通过运行以下curl命令生成kubeconfig文件:$ curl -L -o kiali-prepare-remote-cluster.sh https://raw.githubusercontent.com/kiali/kiali/master/hack/istio/multicluster/kiali-prepare-remote-cluster.sh运行以下命令修改脚本使其可以执行:
chmod +x kiali-prepare-remote-cluster.sh运行以下命令执行脚本,使其将 East 和 West 集群上下文传递给
kubeconfig文件:$ ./kiali-prepare-remote-cluster.sh --kiali-cluster-context cluster1 --remote-cluster-context cluster2 --view-only false --kiali-resource-name kiali-service-account --remote-cluster-namespace istio-system --process-kiali-secret true --process-remote-resources false --remote-cluster-name cluster2注意使用
--help选项显示如何使用脚本的更多详情。
运行以下命令触发协调循环,以便 Kiali Operator 会注册 CR 包含的远程 secret:
$ oc --context cluster1 annotate kiali kiali -n istio-system --overwrite kiali.io/reconcile="$(date)"运行以下命令等待 Kiali 资源就绪:
oc --context cluster1 wait --for=condition=Successful --timeout=2m kialis/kiali -n istio-system运行以下命令等待 Kiali 服务器就绪:
oc --context cluster1 rollout status deployments/kiali -n istio-system登录到 Kiali。
-
首次访问 Kiali 时,登录到包含 Kiali 部署的集群。在本例中,访问
East集群。 运行以下命令,显示 Kiali 路由的主机名:
oc --context cluster1 get route kiali -n istio-system -o jsonpath='{.spec.host}'- 进入浏览器中的 Kiali URL: https://<your-kiali-route-hostname >。
-
首次访问 Kiali 时,登录到包含 Kiali 部署的集群。在本例中,访问
通过 Kiali 登录到 West 集群。
要在 Kiali UI 中看到其他集群,您必须首先通过 Kiali 登录到这些集群。
- 单击右上角的用户配置文件下拉菜单。
- 选择 Login to West。您将被重定向到 OpenShift 登录页面,并提示输入 West 集群的凭据。
验证 Kiali 是否显示来自两个集群的信息。
- 点 Overview,验证您可以从两个集群中看到命名空间。
- 点 Navigate,验证您看到网格图形上的两个集群。