apiVersion: v1 kind: ConfigMap metadata: name: otel-collector-conf namespace: istio-system labels: app: otel-collector data: otel-collector-config: | receivers: otlp: protocols: grpc: http: processors: batch: exporters: logging: loglevel: debug service: pipelines: logs: receivers: [otlp] processors: [batch] exporters: [logging] --- apiVersion: v1 kind: Service metadata: name: otel-collector namespace: istio-system labels: app: otel-collector spec: ports: - name: grpc-otlp # Default endpoint for OpenTelemetry receiver. port: 4317 protocol: TCP targetPort: 4317 selector: app: otel-collector --- apiVersion: apps/v1 kind: Deployment metadata: name: otel-collector namespace: istio-system spec: minReadySeconds: 5 progressDeadlineSeconds: 120 replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app: otel-collector strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 1 type: RollingUpdate template: metadata: labels: app: otel-collector sidecar.istio.io/inject: "false" # do not inject spec: containers: - command: - "/otelcol" - "--config=/conf/otel-collector-config.yaml" env: - name: POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name - name: POD_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace image: otel/opentelemetry-collector:0.38.0 imagePullPolicy: IfNotPresent name: otel-collector ports: - containerPort: 4317 protocol: TCP resources: limits: cpu: "2" memory: 4Gi requests: cpu: 200m memory: 400Mi terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - name: otel-collector-config-vol mountPath: /conf dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler terminationGracePeriodSeconds: 30 volumes: - configMap: defaultMode: 420 items: - key: otel-collector-config path: otel-collector-config.yaml name: otel-collector-conf name: otel-collector-config-vol