--- title: 远程访问遥测插件 description: 此任务向您展示如何配置从外部访问 Istio 遥测插件。 weight: 99 keywords: [telemetry,gateway,jaeger,zipkin,tracing,kiali,prometheus,addons] aliases: - /zh/docs/tasks/telemetry/gateways/ --- 此任务说明如何配置 Istio 以显示和访问集群外部的遥测插件。 ## 配置远程访问{#configuring-remote-access} 远程访问遥测插件的方式有很多种。 该任务涵盖了两种基本访问方式:安全的(通过 HTTPS)和不安全的(通过 HTTP)。 对于任何生产或敏感环境,*强烈建议* 通过安全方式访问。 不安全访问易于设置,但是无法保护在集群外传输的任何凭据或数据。 ### 方式 1:安全访问(HTTPS){#option-one-secure-access-HTTPS} 安全访问需要一个服务器证书。按照这些步骤来为您的域名安装并配置服务器证书。 您也可以使用自签名证书。访问[配置使用 SDS 通过 HTTPS 访问的安全网关任务](/zh/docs/tasks/traffic-management/ingress/secure-ingress-sds/)以了解使用自签名证书访问集群内服务的详情。 {{< warning >}} 本方式 *只* 涵盖了传输层的安全。您还应该配置遥测插件,使其暴露在外部时需要身份验证。 {{< /warning >}} 1. [安装 cert-manager](https://docs.cert-manager.io/en/latest/getting-started/install/kubernetes.html) 以自动管理证书。 1. [安装 Istio](/zh/docs/setup/install/istioctl) 到您的集群并启用 `cert-manager` 标志且配置 `istio-ingressgateway` 使用 [Secret Discovery Service](https://www.envoyproxy.io/docs/envoy/latest/configuration/security/secret#sds-configuration)。 要安装相应的 Istio,使用下列安装选项: * `--set values.gateways.enabled=true` * `--set values.gateways.istio-ingressgateway.enabled=true` * `--set values.gateways.istio-ingressgateway.sds.enabled=true` 要额外安装遥测插件,使用下列安装选项: * Grafana: `--set values.grafana.enabled=true` * Kiali: `--set values.kiali.enabled=true` * Prometheus: `--set values.prometheus.enabled=true` * Tracing: `--set values.tracing.enabled=true` 1. 为您的域名配置 DNS 记录。 1. 获取 `istio-ingressgateway` 的外部 IP 地址。 {{< text bash >}} $ kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}' {{< /text >}} 1. 设置环境变量保存目标域名: {{< text bash >}} $ TELEMETRY_DOMAIN= {{< /text >}} 1. 通过您的域名提供商将所需的域名指向该外部 IP 地址。 实现此步骤的机制因提供商而异。以下是一些示例文档链接: * Bluehost: [DNS 管理增改删 DNS 条目](https://my.bluehost.com/hosting/help/559) * GoDaddy: [添加 A 记录](https://www.godaddy.com/help/add-an-a-record-19238) * Google Domains: [资源记录](https://support.google.com/domains/answer/3290350?hl=en) * Name.com: [添加 A 记录](https://www.name.com/support/articles/115004893508-Adding-an-A-record) 1. 验证 DNS 记录无误。 {{< text bash >}} $ dig +short $TELEMETRY_DOMAIN {{< /text >}} 1. 生成服务器证书 {{< text bash >}} $ cat <}} 1. 等待服务器证书准备就绪。 {{< text syntax="bash" expandlinks="false" >}} $ JSONPATH='{range .items[*]}{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status}{end}{end}' && kubectl -n istio-system get certificates -o jsonpath="$JSONPATH" telemetry-gw-cert:Ready=True {{< /text >}} 1. 应用遥测插件的网络配置。 1. 应用以下配置以暴露 Grafana: {{< text bash >}} $ cat <}} 1. 应用以下配置以暴露 Kiali: {{< text bash >}} $ cat <}} 1. 应用以下配置以暴露 Prometheus: {{< text bash >}} $ cat <}} 1. 应用以下配置以暴露跟踪服务: {{< text bash >}} $ cat <}} 1. 通过浏览器访问这些遥测插件。 * Kiali: `https://$TELEMETRY_DOMAIN:15029/` * Prometheus: `https://$TELEMETRY_DOMAIN:15030/` * Grafana: `https://$TELEMETRY_DOMAIN:15031/` * Tracing: `https://$TELEMETRY_DOMAIN:15032/` ### 方式 2:不安全访问(HTTP){#option-two-insecure-access-HTTP} 1. [安装 Istio](/zh/docs/setup/install/istioctl) 到您的集群并启用您所需要的遥测插件。 要额外安装这些遥测插件,使用下列安装选项: * Grafana: `--set values.grafana.enabled=true` * Kiali: `--set values.kiali.enabled=true` * Prometheus: `--set values.prometheus.enabled=true` * Tracing: `--set values.tracing.enabled=true` 1. 应用遥测插件的网络配置。 1. 应用以下配置以暴露 Grafana: {{< text bash >}} $ cat <}} 1. 应用以下配置以暴露 Kiali: {{< text bash >}} $ cat <}} 1. 应用以下配置以暴露 Prometheus: {{< text bash >}} $ cat <}} 1. 应用以下配置以暴露跟踪服务: {{< text bash >}} $ cat <}} 1. 通过浏览器访问这些遥测插件。 * Kiali: `http://:15029/` * Prometheus: `http://:15030/` * Grafana: `http://:15031/` * Tracing: `http://:15032/` ## 清除{#cleanup} * 移除所有相关的网关: {{< text bash >}} $ kubectl -n istio-system delete gateway grafana-gateway kiali-gateway prometheus-gateway tracing-gateway gateway.networking.istio.io "grafana-gateway" deleted gateway.networking.istio.io "kiali-gateway" deleted gateway.networking.istio.io "prometheus-gateway" deleted gateway.networking.istio.io "tracing-gateway" deleted {{< /text >}} * 移除所有相关的 Virtual Services: {{< text bash >}} $ kubectl -n istio-system delete virtualservice grafana-vs kiali-vs prometheus-vs tracing-vs virtualservice.networking.istio.io "grafana-vs" deleted virtualservice.networking.istio.io "kiali-vs" deleted virtualservice.networking.istio.io "prometheus-vs" deleted virtualservice.networking.istio.io "tracing-vs" deleted {{< /text >}} * 如果安装了网关证书,移除它: {{< text bash >}} $ kubectl -n istio-system delete certificate telemetry-gw-cert certificate.certmanager.k8s.io "telemetry-gw-cert" deleted {{< /text >}}