diff --git a/.github/workflows/build-images.yml b/.github/workflows/build-images.yml index 90218f3345..e167c990ba 100644 --- a/.github/workflows/build-images.yml +++ b/.github/workflows/build-images.yml @@ -58,6 +58,9 @@ jobs: - file: ./src/loadgenerator/Dockerfile tag_suffix: loadgenerator context: ./ + - file: ./src/otelcollector/Dockerfile + tag_suffix: otelcollector + context: ./ - file: ./src/paymentservice/Dockerfile tag_suffix: paymentservice context: ./ diff --git a/CHANGELOG.md b/CHANGELOG.md index 4305c7d21c..9ab5070ecf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -63,6 +63,8 @@ release. ([#988](https://github.com/open-telemetry/opentelemetry-demo/pull/988)) * [FraudDetectionService] Updated Kotlin version and OTel dependencies ([#987](https://github.com/open-telemetry/opentelemetry-demo/pull/987)) +* [otelcol] Use the collector builder to produce otelcol docker image + ([#944](https://github.com/open-telemetry/opentelemetry-demo/pull/944)) ## 1.4.0 diff --git a/docker-compose.yml b/docker-compose.yml index 4c7468c3eb..3331a75f8d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -645,8 +645,13 @@ services: # OpenTelemetry Collector otelcol: - image: otel/opentelemetry-collector-contrib:0.76.1 + image: ${IMAGE_NAME}:${IMAGE_VERSION}-otelcol container_name: otel-col + build: + context: ./ + dockerfile: ./src/otelcollector/Dockerfile + cache_from: + - ${IMAGE_NAME}:${IMAGE_VERSION}-otelcol deploy: resources: limits: diff --git a/src/otelcollector/Dockerfile b/src/otelcollector/Dockerfile new file mode 100644 index 0000000000..4281d69ae2 --- /dev/null +++ b/src/otelcollector/Dockerfile @@ -0,0 +1,31 @@ +# Copyright The OpenTelemetry Authors +# SPDX-License-Identifier: Apache-2.0 + +FROM golang:latest as build + +ARG TARGETARCH=arm64 +ARG BUILDER_VERSION=0.81.0 + +RUN curl -L -o /builder https://github.com/open-telemetry/opentelemetry-collector/releases/download/cmd%2Fbuilder%2Fv${BUILDER_VERSION}/ocb_${BUILDER_VERSION}_linux_${TARGETARCH} +RUN chmod +x /builder +WORKDIR /build +COPY ./src/otelcollector/manifest.yml ./ +ENV GOARCH=arm64 +ENV CGO_ENABLED=0 +RUN /builder --config ./manifest.yml --output-path /build/_build +RUN ls /build/_build + +FROM alpine:3.16 as certs +RUN apk --update add ca-certificates + +FROM alpine + +ARG USER_UID=10001 +USER ${USER_UID} + +COPY --from=certs /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt +COPY --from=build --chmod=755 /build/_build/otelcol-demo /otelcol-demo +COPY ./src/otelcollector/otelcol-*.yml /etc/otelcol/ +ENTRYPOINT ["/otelcol-demo"] +CMD ["--config", "/etc/otelcol/otelcol-config.yml"] +EXPOSE 4317 4318 diff --git a/src/otelcollector/manifest.yml b/src/otelcollector/manifest.yml new file mode 100644 index 0000000000..985623e8b4 --- /dev/null +++ b/src/otelcollector/manifest.yml @@ -0,0 +1,24 @@ +# Copyright The OpenTelemetry Authors +# SPDX-License-Identifier: Apache-2.0 + +dist: + module: github.com/open-telemetry/opentelemetry-demo/src/otelcollector + name: otelcol-demo + description: OpenTelemetry Collector for OpenTelemetry Demo + version: 0.81.0 + output_path: ./_build + otelcol_version: 0.81.0 + +receivers: + - gomod: go.opentelemetry.io/collector/receiver/otlpreceiver v0.81.0 + +exporters: + - gomod: go.opentelemetry.io/collector/exporter/loggingexporter v0.81.0 + - gomod: go.opentelemetry.io/collector/exporter/otlpexporter v0.81.0 + - gomod: go.opentelemetry.io/collector/exporter/otlphttpexporter v0.81.0 + - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.81.0 +processors: + - gomod: go.opentelemetry.io/collector/processor/batchprocessor v0.81.0 + - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.81.0 +connectors: + - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/connector/spanmetricsconnector v0.81.0