Skip to content

antony@notes:~/ops-automation$ cat "Installing-the-Red-Hat-build-of-OpenTelemetry-by-using-the-CLI.md"

Installing the Red Hat build of OpenTelemetry by using the CLI

2025-09-18· ops-automation

Installing the Red Hat build of OpenTelemetry by using the CLI

可以從命令列安裝 Red Hat 版的 OpenTelemetry。

1. 本篇文章 Openshift 環境資訊

  • Openshift version: 4.18.22

1. 先決條件

  1. 具備 cluster-admin 角色的叢集管理員,且已啟用 OpenShift CLI(oc)的工作階段。

2. 開始安裝 Red Hat 版 OpenTelemetry Operator:

  1. 執行下列指令,為 Red Hat 版 OpenTelemetry Operator 建立專案:

    oc apply -f - << EOF
    apiVersion: project.openshift.io/v1
    kind: Project
    metadata:
      labels:
        kubernetes.io/metadata.name: openshift-opentelemetry-operator
        openshift.io/cluster-monitoring: "true"
      name: openshift-opentelemetry-operator
    EOF
  2. 執行下列指令,建立 OperatorGroup:

    oc apply -f - << EOF
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: openshift-opentelemetry-operator
      namespace: openshift-opentelemetry-operator
    spec:
      upgradeStrategy: Default
    EOF
  3. 執行下列指令,建立 Subscription:

    oc apply -f - << EOF
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: opentelemetry-product
      namespace: openshift-opentelemetry-operator
    spec:
      channel: stable
      installPlanApproval: Automatic
      name: opentelemetry-product
      source: cs-redhat-operator-index
      sourceNamespace: openshift-marketplace
    EOF
  4. 執行下列指令,檢查該 Operator 的狀態:

    oc get csv -n openshift-opentelemetry-operator

    執行結果 :

    NAME                                    DISPLAY                          VERSION     REPLACES                                PHASE
    opentelemetry-operator.v0.127.0-2       Red Hat build of OpenTelemetry   0.127.0-2   opentelemetry-operator.v0.127.0-1       Succeeded

3. 建立的 OpenTelemetry Collector instance,建立一個您選擇的允許專案(permitted project):

  1. 若要建立不含 metadata 的專案,請執行下列指令:

    oc new-project opentelemetry

    若要建立包含 metadata 的專案,請執行下列指令:

    oc apply -f - << EOF
    apiVersion: project.openshift.io/v1
    kind: Project
    metadata:
      name: opentelemetry
    EOF

    :::info 備註

    可以在同一個叢集上的不同專案中,建立多個 OpenTelemetry Collector instance 。 :::

  2. 建立與切換工作目錄

    mkdir -p "${HOME}"/wulin/openTelemetr;
    cd "${HOME}"/wulin/openTelemetr
  3. 自訂 OpenTelemetryCollector 自訂資源 (CR)

    nano openTelemetryCollector.yaml

    檔案內容如下:

    apiVersion: opentelemetry.io/v1beta1
    kind: OpenTelemetryCollector
    metadata:
      name: otel
      namespace: opentelemetry 
    spec:
      mode: deployment
      config:
        receivers: 
          otlp:
            protocols:
              grpc:
                endpoint: 0.0.0.0:4317
              http:
                endpoint: 0.0.0.0:4318
        processors: 
          batch:
            send_batch_size: 10000
            timeout: 10s
          memory_limiter:
            check_interval: 1s
            limit_percentage: 50
            spike_limit_percentage: 30
        exporters: 
          debug: {}
        service:
          pipelines:
            traces:
              receivers: [otlp]
              processors: [memory_limiter,batch]
              exporters: [debug]

    為 OpenTelemetryCollector 部署所選擇的project。不允許使用 openshift- 前綴開頭的 project 名稱。

  4. 請執行以下指令以建立自訂後的 CR:

    oc -n opentelemetry apply -f openTelemetryCollector.yaml
  5. 請執行以下指令,以驗證 OpenTelemetry Collector Pod 的 status.phaseRunning,且其條件的 typeReady

    oc -n opentelemetry get pod \
      -l app.kubernetes.io/managed-by=opentelemetry-operator,app.kubernetes.io/instance=opentelemetry.otel \
      -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.phase}{"\t"}{.status.conditions[?(@.type=="Ready")].status}{"\n"}{end}'

    執行結果 :

    otel-collector-75bfc8d889-4klkq Running True
  6. 請執行以下指令以取得 OpenTelemetry Collector 服務:

    oc -n opentelemetry get service \
      -l app.kubernetes.io/managed-by=opentelemetry-operator,app.kubernetes.io/instance=opentelemetry.otel

    執行結果 :

    NAME                        TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                                          AGE
    otel-collector              ClusterIP   10.98.50.143   <none>        14250/TCP,14268/TCP,6831/UDP,6832/UDP,9411/TCP   3m51s
    otel-collector-headless     ClusterIP   None           <none>        14250/TCP,14268/TCP,6831/UDP,6832/UDP,9411/TCP   3m51s
    otel-collector-monitoring   ClusterIP   10.98.180.38   <none>        8888/TCP                                         3m51s
  7. 自動建立所需的 RBAC 資源

    某些收集器 (Collector) 元件需要設定 RBAC 資源。

    將下列權限新增至 opentelemetry-operator-controller-manage 服務帳戶,如此一來 Red Hat build of OpenTelemetry Operator 就能自動建立它們:

    oc apply -f - << EOF
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: generate-processors-rbac
    rules:
    - apiGroups:
      - rbac.authorization.k8s.io
      resources:
      - clusterrolebindings
      - clusterroles
      verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: generate-processors-rbac
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: generate-processors-rbac
    subjects:
    - kind: ServiceAccount
      name: opentelemetry-operator-controller-manager
      namespace: openshift-opentelemetry-operator
    EOF