Skip to content

Commit 204449d

Browse files
committed
Add a supervised contrib distribution PoC
1 parent 4618d7b commit 204449d

File tree

3 files changed

+102
-11
lines changed

3 files changed

+102
-11
lines changed

cmd/goreleaser/internal/configure.go

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@ const (
3535
k8sDistro = "otelcol-k8s"
3636
otlpDistro = "otelcol-otlp"
3737
ebpfProfilerDistro = "otelcol-ebpf-profiler"
38-
dockerHub = "otel"
39-
ghcr = "ghcr.io/open-telemetry/opentelemetry-collector-releases"
40-
binaryNamePrefix = "otelcol"
41-
imageNamePrefix = "opentelemetry-collector"
38+
dockerHub = "otel"
39+
ghcr = "ghcr.io/open-telemetry/opentelemetry-collector-releases"
40+
binaryNamePrefix = "otelcol"
41+
imageNamePrefix = "opentelemetry-collector"
4242
)
4343

4444
var (
@@ -48,6 +48,7 @@ var (
4848
darwinArchs = []string{"amd64", "arm64"}
4949
k8sArchs = []string{"amd64", "arm64", "ppc64le", "s390x"}
5050
ebpfProfilerArchs = []string{"amd64"}
51+
supervisorArchs = []string{"amd64", "arm64", "ppc64le"}
5152

5253
imageRepos = []string{dockerHub, ghcr}
5354

@@ -112,6 +113,7 @@ var (
112113
}
113114
d.containerImages = slices.Concat(
114115
newContainerImages(d.name, "linux", baseArchs, containerImageOptions{armVersion: "7"}),
116+
newContainerImages(d.name, "linux", supervisorArchs, containerImageOptions{armVersion: "7", includeSupervisor: true}),
115117
newContainerImages(d.name, "windows", winContainerArchs, containerImageOptions{winVersion: "2019"}),
116118
newContainerImages(d.name, "windows", winContainerArchs, containerImageOptions{winVersion: "2022"}),
117119
)
@@ -473,8 +475,9 @@ func newContainerImageManifests(dist, os string, archs []string, opts containerI
473475
}
474476

475477
type containerImageOptions struct {
476-
armVersion string
477-
winVersion string
478+
armVersion string
479+
winVersion string
480+
includeSupervisor bool
478481
}
479482

480483
func (o *containerImageOptions) version() string {
@@ -548,11 +551,19 @@ func dockerImageWithOS(dist, os, arch string, opts containerImageOptions) config
548551
osArch := osArch{os: os, arch: arch, version: opts.version()}
549552
var imageTemplates []string
550553
for _, prefix := range imageRepos {
551-
imageTemplates = append(
552-
imageTemplates,
553-
fmt.Sprintf("%s/%s:{{ .Version }}-%s", prefix, imageName(dist), osArch.imageTag()),
554-
fmt.Sprintf("%s/%s:latest-%s", prefix, imageName(dist), osArch.imageTag()),
555-
)
554+
if opts.includeSupervisor {
555+
imageTemplates = append(
556+
imageTemplates,
557+
fmt.Sprintf("%s/%s-supervisor:{{ .Version }}-%s", prefix, imageName(dist), osArch.imageTag()),
558+
fmt.Sprintf("%s/%s-supervisor:latest-%s", prefix, imageName(dist), osArch.imageTag()),
559+
)
560+
} else {
561+
imageTemplates = append(
562+
imageTemplates,
563+
fmt.Sprintf("%s/%s:{{ .Version }}-%s", prefix, imageName(dist), osArch.imageTag()),
564+
fmt.Sprintf("%s/%s:latest-%s", prefix, imageName(dist), osArch.imageTag()),
565+
)
566+
}
556567
}
557568

558569
label := func(name, template string) string {

distributions/otelcol-contrib/.goreleaser.yaml

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,66 @@ dockers:
224224
- --label=org.opencontainers.image.source={{.GitURL}}
225225
- --label=org.opencontainers.image.licenses=Apache-2.0
226226
use: buildx
227+
- goos: linux
228+
goarch: amd64
229+
dockerfile: Dockerfile
230+
image_templates:
231+
- otel/opentelemetry-collector-contrib-supervisor:{{ .Version }}-amd64
232+
- otel/opentelemetry-collector-contrib-supervisor:latest-amd64
233+
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib-supervisor:{{ .Version }}-amd64
234+
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib-supervisor:latest-amd64
235+
extra_files:
236+
- config.yaml
237+
build_flag_templates:
238+
- --pull
239+
- --platform=linux/amd64
240+
- --label=org.opencontainers.image.created={{.Date}}
241+
- --label=org.opencontainers.image.name={{.ProjectName}}
242+
- --label=org.opencontainers.image.revision={{.FullCommit}}
243+
- --label=org.opencontainers.image.version={{.Version}}
244+
- --label=org.opencontainers.image.source={{.GitURL}}
245+
- --label=org.opencontainers.image.licenses=Apache-2.0
246+
use: buildx
247+
- goos: linux
248+
goarch: arm64
249+
dockerfile: Dockerfile
250+
image_templates:
251+
- otel/opentelemetry-collector-contrib-supervisor:{{ .Version }}-arm64
252+
- otel/opentelemetry-collector-contrib-supervisor:latest-arm64
253+
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib-supervisor:{{ .Version }}-arm64
254+
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib-supervisor:latest-arm64
255+
extra_files:
256+
- config.yaml
257+
build_flag_templates:
258+
- --pull
259+
- --platform=linux/arm64
260+
- --label=org.opencontainers.image.created={{.Date}}
261+
- --label=org.opencontainers.image.name={{.ProjectName}}
262+
- --label=org.opencontainers.image.revision={{.FullCommit}}
263+
- --label=org.opencontainers.image.version={{.Version}}
264+
- --label=org.opencontainers.image.source={{.GitURL}}
265+
- --label=org.opencontainers.image.licenses=Apache-2.0
266+
use: buildx
267+
- goos: linux
268+
goarch: ppc64le
269+
dockerfile: Dockerfile
270+
image_templates:
271+
- otel/opentelemetry-collector-contrib-supervisor:{{ .Version }}-ppc64le
272+
- otel/opentelemetry-collector-contrib-supervisor:latest-ppc64le
273+
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib-supervisor:{{ .Version }}-ppc64le
274+
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib-supervisor:latest-ppc64le
275+
extra_files:
276+
- config.yaml
277+
build_flag_templates:
278+
- --pull
279+
- --platform=linux/ppc64le
280+
- --label=org.opencontainers.image.created={{.Date}}
281+
- --label=org.opencontainers.image.name={{.ProjectName}}
282+
- --label=org.opencontainers.image.revision={{.FullCommit}}
283+
- --label=org.opencontainers.image.version={{.Version}}
284+
- --label=org.opencontainers.image.source={{.GitURL}}
285+
- --label=org.opencontainers.image.licenses=Apache-2.0
286+
use: buildx
227287
- goos: windows
228288
goarch: amd64
229289
dockerfile: Windows.dockerfile
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
FROM alpine:3.21 as certs
2+
RUN apk --update add ca-certificates
3+
4+
FROM ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-opampsupervisor:0.126.0 AS supervisor
5+
RUN mkdir -p /etc/otelcol-contrib/supervisor-data
6+
7+
FROM scratch
8+
9+
ARG USER_UID=10001
10+
ARG USER_GID=10001
11+
USER ${USER_UID}:${USER_GID}
12+
13+
COPY --from=certs /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
14+
COPY --chmod=755 otelcol-contrib /otelcol-contrib
15+
COPY --from=supervisor --chmod=755 /usr/local/bin/opampsupervisor /opampsupervisor
16+
COPY --from=supervisor --chmod=644 --chown=10001:10001 /etc/otelcol-contrib/supervisor-data /etc/otelcol-contrib/supervisor-data
17+
COPY config.yaml /etc/otelcol-contrib/config.yaml
18+
19+
ENTRYPOINT ["/opampsupervisor"]
20+
EXPOSE 4317 4318 55678 55679

0 commit comments

Comments
 (0)