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
可以從命令列安裝 Red Hat 版的 OpenTelemetry。
1. 本篇文章 Openshift 環境資訊
- Openshift version:
4.18.22
1. 先決條件
- 具備 cluster-admin 角色的叢集管理員,且已啟用 OpenShift CLI(oc)的工作階段。
2. 開始安裝 Red Hat 版 OpenTelemetry Operator:
執行下列指令,為 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執行下列指令,建立 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執行下列指令,建立 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執行下列指令,檢查該 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):
若要建立不含 metadata 的專案,請執行下列指令:
oc new-project opentelemetry若要建立包含 metadata 的專案,請執行下列指令:
oc apply -f - << EOF apiVersion: project.openshift.io/v1 kind: Project metadata: name: opentelemetry EOF備註
可以在同一個叢集上的不同專案中,建立多個 OpenTelemetry Collector instance 。
建立與切換工作目錄
mkdir -p "${HOME}"/wulin/openTelemetr; cd "${HOME}"/wulin/openTelemetr自訂 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 名稱。請執行以下指令以建立自訂後的 CR:
oc -n opentelemetry apply -f openTelemetryCollector.yaml請執行以下指令,以驗證 OpenTelemetry Collector Pod 的
status.phase為Running,且其條件的type為Ready: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請執行以下指令以取得 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自動建立所需的 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