Search
Duplicate
☀️

OpenTelemetry 설치 준비: OTel k8s Operator 설치

Category
S/W 엔지니어
Tags
OpenTelemetry
OTel
Kubernetes Operator
cert-manager
Created time
2024/04/06
OpenTelemetry Operator를 통한 Collector, Target Allocator, Auto-Instrumentation 설치

Introduction

OpenTelemetry의 사용자 관점 Overview 에서 이어지는 글로, OpenTelemetry 설치를 위한 준비 단계이다.

Overview

OTel Collector를 설치 방법은 세 가지로, OTel Collector Kubernetes resource 직접 생성, Helm Chart 이용, 마지막으로 Kubernetes Operator 이용 방법이 있으나, Kubernetes Operator를 이용해야 OTel Collector뿐 아니라 Target Allocator, Auto-Instrumentation도 설치가 가능하다.
앞선 그림은 Otel Kubernetes Operator가 이들 및 OTel CR(Custom Resource)과 어떻게 상호작용하는지를 보여준다(전형적인 Kubernetes CR의 동작 구조 그대를 따른다). 이 Operator 설치 이후의 구체적 Collector, Auto-instrumentation 등의 설치에 대해서는 아래에 이어진다(지속 업데이트 예정).

설치 방법

순서는 다음과 같다.
1.
cert-manager 설치
2.
OTel Kubernetes Operator 설치

cert-manager 설치

설치 방법 출처는 다음과 같다.
다음 명령으로 cert-manager를 설치한다. 이미 cert-manager가 설치되어 있을 경우에는 skip.
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.14.4/cert-manager.yaml
Python
복사
이후 다음 단계로 넘어가기 전까지 얼마간’ 시간을 보낸 후에 다음 단계로 넘어간다. pod 생성 직후 바로 설치 시에는 아래와 같은 오류가 발생하기 때문이다(’얼마간’이라 애매한 표현을 썼는데, 아래 오류가 왜 발생하고, 무엇 때문에 시간이 지나면 발생하지 않는지 확인이 안되었기 때문이다).
# cert-manager pod가 ready 상태가 아닌 경우 설치 시 발생하는 오류 예 Error from server (InternalError): error when creating "https://github.com/open-telemetry/opentelemetry-operator/releases/latest/download/opentelemetry-operator.yaml": Internal error occurred: failed calling webhook "webhook.cert-manager.io": failed to call webhook: Post "https://cert-manager-webhook.cert-manager.svc:443/validate?timeout=30s": dial tcp 10.100.175.98:443: connect: connection refused # ready 상태 직후 설치 시 발생하는 오류 예 Error from server (InternalError): error when creating "https://github.com/open-telemetry/opentelemetry-operator/releases/latest/download/opentelemetry-operator.yaml": Internal error occurred: failed calling webhook "webhook.cert-manager.io": failed to call webhook: Post "https://cert-manager-webhook.cert-manager.svc:443/validate?timeout=30s": tls: failed to verify certificate: x509: certificate signed by unknown authority
Bash
복사

OTel Kubernetes Operator 설치

공식 문서는 OTel Kubernetes Operator 설치에 kubectl apply 를 통한 CRD 직접 설치와 Helm chart 기반의 설치 모두를 소개하는데 후자를 선택한다. 여기에는 이유가 있는데, 공식 문서에 포함된 CRD의 Collector는 OpenTelemetry community의 library가 포함되지 않은 소위 OpenTelemetry Collector Core Distro이기 때문이다. 해당 library가 없으면 Kubernetes Cluster Receiver 등의 공식 문서가 논하는 components 마저 설치가 불가능하다.
실제 아래 OpenTelemetry Collector Core Distro 문서는 “classic”으로 간주되어 새로운 components를 더 이상 받지 않는다고 명시한다(아래 링크의 manifest.yaml 에서 전체 component 목록 확인이 가능하다).
이와는 달리 Helm chart에 포함된 Collector는 OpenTelemetry Collector Contrib Distro 이기에 위의 제약이 없다. 아래 OpenTelemetry Collector Contrib Distro 문서는 open source와 vendor 지원 component를 포함한다고 명시한다.
설치 방법은 아래와 같이 보통의 Helm chart 설치 방법과 동일하다.
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts helm repo update helm upgrade -i opentelemetry-operator open-telemetry/opentelemetry-operator
Shell
복사
아래는 이 Helm chart의 README.md 및 OpenTelemetry의 공식 문서이다.