在 Red Hat OpenShift 上管理 Instana 代理

安装代理后,请根据需要进行配置和管理。 请参阅以下列表,了解 Red Hat OpenShift 上所有可用的代理配置选项。

检查 Pod 状态

安装代理后,可以使用以下命令检查代理部署中 pod 的状态:

kubectl get pods -n instana-agent
kubectl get agent instana-agent -n instana-agent -o yaml | yq ".status"
 

在良好的部署中,命名空间中所有 pod 的 "STATUS都必须是 "Running。 如下面的示例所示,"instana-agent自定义资源也应显示 "status: Running

$ kubectl get pods -n instana-agent
NAME                                      READY   STATUS    RESTARTS   AGE
controller-manager-6478cb4c6f-8s29b       1/1     Running   0          70m
instana-agent-8ftnj                       1/1     Running   0          70m
instana-agent-9w4vc                       1/1     Running   0          70m
instana-agent-k8sensor-5bbf568976-5pjk2   1/1     Running   0          3h2m
instana-agent-k8sensor-5bbf568976-h96hr   1/1     Running   0          3h2m
instana-agent-k8sensor-5bbf568976-lnbsg   1/1     Running   0          3h2m
instana-agent-zpmrj                       1/1     Running   0          70m

$ kubectl get agent instana-agent -n instana-agent -o yaml | yq ".status"
conditions:
  - lastTransitionTime: "2024-08-06T08:12:03Z"
    message: most recent reconcile of agent CR completed without issue
    observedGeneration: 2

    ...

observedGeneration: 2
oldVersionsUpdated: true
operatorVersion: 0.0.1-dev
status: Running
 

配置代理程序

您可以根据安装代理的方式,通过两种不同的方法配置适用于 Kubernetes 和 Red Hat OpenShift 的 Instana 代理。

配置通过 operator 安装的代理

要配置通过操作员安装的 Instana 代理,请完成以下步骤:

  1. 打开自定义资源文件 YAMLinstana-agent.customresource.yaml

  2. 将配置保存在 "spec.agent.configuration_yaml下。 请参阅以下示例:

    spec:
      agent:
        configuration_yaml: |
          # Example of configuration yaml template
          # Host
          com.instana.plugin.host:
            tags:
              - 'dev'
              - 'app1'
     
  3. 运行以下命令以应用更改:

    kubectl apply -f instana-agent.customresource.yaml
     

有关 YAML 文件的详细示例,请参见 instana_v1_extended_instanaagent.yaml

有关代理配置的更多信息,请参阅 《使用代理配置文件配置主机代理》

配置通过 Helm 图表安装的代理

要配置通过 Helm 图表安装的 Instana 代理,请选择以下任一方法:

  • 使用标记 "--set agent.configuration_yaml=<config>在命令行中指定配置。

  • 将配置添加到Helm图表配置文件 "values.yaml中。 使用 "-f标记将文件传递给Helminstall(安装过程中)或Helmupgrade(安装后)命令。

有关所有配置参数的详细列表,请参阅 Instana Helm Chart

自定义 Container Registry

根据您的Red Hat OpenShift环境,您可能需要自定义Red Hat OpenShift Container Registry。

添加图片流

如果无法从IBM Cloud Container Registryicr.io) 提取映像,则需要手动添加两个映像流。 在Red Hat OpenShift Container Registry中,转到 "instana-agent命名空间并添加以下图像流:

Name: instana-agent
Image: icr.io/instana/agent:latest
 

生成的图像流为 "docker-registry.default.svc:5000/instana-agent/instana-agent:latest

Name: k8sensor
Image: icr.io/instana/k8sensor:latest
 

生成的图像流为 "docker-registry.default.svc:5000/instana-agent/k8sensor:latest

在 YAML 中使用各自的新映像流。

使用 ConfigMap 自定义监控

通过配置 "agent.configuration_yaml文件,您可以根据需要自定义监控功能。 如需更多信息,请参阅《 配置参考》。

有关配置的更多信息,请参阅 “配置主机代理 ”。

更新代理安装

根据您的安装方式,您可以通过多种方式更新适用于 Red Hat OpenShift 的 Instana 代理。

更新交换机安装

更新代理安装涉及两个步骤:

  1. 更新操作员
  2. 更新图像

若要通过 OLM 将操作员更新至最新版本,请按照 Red Hat OpenShift 文档中 “手动批准待处理的操作员更新 ”一节所述的步骤进行操作。

您还可以将操作员配置为自动更新。 如需更多信息,请参阅《 更改操作员的更新通道》。

若要通过 Instana 用户界面手动更新操作员,请执行以下步骤:

  1. 在 Instana 用户界面的首页上,点击 “代理与收集器 ”。 在 “ Instana ”的“代理”选项卡中,选择 “安装代理 ”。

  2. 在代理部署目录页面上,单击瓦片OpenShift- 操作员

  3. 复制并运行命令以部署新操作员。 请参见以下命令示例:

    kubectl apply -f https://github.com/instana/instana-agent-operator/releases/latest/download/instana-agent-operator.yaml
     
    注意: 若要将操作员更新至特定版本,请运行以下命令:
    kubectl apply -f https://github.com/instana/instana-agent-operator/releases/download/<operator_version>/instana-agent-operator.yaml
    有关可用操作员版本的列表,请参阅 《 Instana 代理操作员》的发行说明

更新操作员后,请继续更新图像

更新 Helm 图表安装

更新代理安装涉及两个步骤:

  1. 更新 Helm 图表
  2. 更新图像

要更新代理 Helm 图表,请运行以下命令:

helm pull --repo https://agents.instana.io/helm --untar instana-agent
kubectl apply -f instana-agent/crds
oc adm policy add-scc-to-user privileged -z instana-agent -n instana-agent
oc adm policy add-scc-to-user anyuid -z instana-agent-remote -n instana-agent
helm upgrade --namespace instana-agent instana-agent \
--repo https://agents.instana.io/helm instana-agent \
--reuse-values
 
注意: 若要将 Helm 图表更新至特定版本,请在命令中 --version <helm-version> 添加该标志。 有关可用的 Helm 图表版本列表,请参阅 Instana 代理 Helm 图表的发布说明
注意:Instana 代理 Helm 图表版本 2.0.0 及更早版本不包含该 instana-agent/crds 文件夹。 因此,该 kubectl apply -f instana-agent/crds 步骤无需执行。

更新操作员后,请继续更新图像

更新 Instana 代理镜像

instana-agent DaemonSet和 "k8sensor部署设置为在 pod 启动时提取最新映像。 要强制更新,请运行以下命令:

kubectl rollout restart ds instana-agent -n instana-agent
 
kubectl rollout restart deployment k8sensor -n instana-agent
 

Instana 未提供自动更新这些图片的机制。 您可以选择符合自身需求的解决方案,例如 CronJobsrestart 工作负载分配足够的权限,或者使用更高级的 OpenShift 工具( 如imagestreams ),详见 GitOps。

使用“代理管理”仪表板管理代理

您可以通过 Instana 用户界面的“代理管理”仪表板完成以下操作:

要打开代理管理控制面板,请按照以下步骤操作:

  1. 在 Instana 用户界面的侧边栏中,选择 “基础设施”
  2. 单击特定受监控主机。
  3. 在主机仪表板上,单击打开代理管理

为受监控的应用程序配置网络访问

您必须配置以下类型应用程序的网络访问权限,以便它们与代理进行通信:

  • Node.js
  • Go
  • Ruby
  • Python
  • .NET Core

这些应用程序需要知道代理的监听 IP 地址。 代理会自动监听主机 IP。 您可以使用以下 Downward API 代码片段,将环境变量中的主机 IP 传递给应用程序 Pod:

spec:
  containers:
    env:
      - name: INSTANA_AGENT_HOST
        valueFrom:
          fieldRef:
            fieldPath: status.hostIP
 

监控控制平面节点(原称主节点)

默认情况下,主机代理不会在 Kubernetes 控制平面节点上被调度。 有关如何监控控制平面节点的信息,请参阅 “监控控制平面节点 ”一节。

若需更直接的控制, 在控制平面节点上单独安装代理。

监控 Kubernetes NGINX Ingress

有关如何配置 Kubernetes NGINX Ingress 和用于捕获 NGINX 度量值的我们代理程序的准则,请参阅监控 NGINX页面。 Kubernetes 的追踪 NGINX 也可以通过 OpenTracing 项目实现 Ingress 追 ,有关如何配置的指南,请参阅《 NGINX Ingress 的分布式追踪》。

向多个后端报告

若要使用 helm 和操作员添加其他后端,请运行以下命令。 您可以使用其他后端来配置您的 Instana 代理,也可以留空。

注意: 执行以下命令时,代理数据将与 Kubernetes 数据和指标数据一同转发至多个后端。
  • 使用 helm :

       helm install instana-agent \
       --repo https://agents.instana.io/helm \
       --namespace instana-agent \
       --create-namespace \
       --set agent.key=my-key \
       --set agent.endpointHost='<your_host_agent_endpoint>' \
       --set agent.endpointPort=443 \
       --set cluster.name='<your_cluster_name>' \
       --set zone.name='zone-name' \
       --set "agent.additionalBackends[0].endpointHost=<your_host_agent_endpoint>" \
       --set "agent.additionalBackends[0].key=<your_agent_key>" \
       --set "agent.additionalBackends[0].endpointPort=443" \
       --set "agent.additionalBackends[1].endpointHost=<your_other_host_agent_endpoint>" \
       --set "agent.additionalBackends[1].key=<your_other_agent_key>" \
       --set "agent.additionalBackends[1].endpointPort=443" \
       instana-agent
     
  • 使用操作符:

    apiVersion: instana.io/v1
    kind: InstanaAgent
    metadata:
      name: instana-agent
      namespace: instana-agent
    spec:
      zone:
        name: edited-zone # (optional) name of the zone of the host
      cluster:
        name: my-cluster
      agent:
        endpointHost: <your_host_agent_endpoint>
        endpointPort: "443"
        env: {}
        key: <your_agent_key>
        additionalBackends:
        - endpointHost: <your_host_agent_endpoint>
          endpointPort: "443"
          key: <your_agent_key>
        configuration_yaml: |
          # You can leave this empty, or use this to configure your instana agent.
          # See https://github.com/instana/instana-agent-operator/blob/main/config/samples/instana_v1_extended_instanaagent.yaml for the extended version.
    
     

若要启用从 Kubernetes 代理向多个后端发送报告的功能,请参阅 Docker 代理配置

配置机密

您可以使用 "秘密 "来存储和管理凭证、令牌或密钥等敏感数据。 更多详情请参阅 Kubernetes secrets