mirror of
https://github.com/project-zot/zot.git
synced 2024-12-30 22:34:13 -05:00
fix: quick metrics setup in kind with prometheus (#1897)
Signed-off-by: Alexei Dodon <adodon@cisco.com>
This commit is contained in:
parent
fc2380b57b
commit
12227b4484
9 changed files with 118 additions and 139 deletions
19
Makefile
19
Makefile
|
@ -259,7 +259,7 @@ swagger:
|
||||||
.PHONY: update-licenses
|
.PHONY: update-licenses
|
||||||
# note: for predictable output of below sort command we use locale LC_ALL=C
|
# note: for predictable output of below sort command we use locale LC_ALL=C
|
||||||
update-licenses: LC_ALL=C
|
update-licenses: LC_ALL=C
|
||||||
update-licenses:
|
update-licenses: check-linux
|
||||||
@echo "Detecting and updating licenses ... please be patient!"
|
@echo "Detecting and updating licenses ... please be patient!"
|
||||||
go install github.com/google/go-licenses@latest
|
go install github.com/google/go-licenses@latest
|
||||||
$(shell echo "Module | License URL | License" > THIRD-PARTY-LICENSES.md; echo "---|---|---" >> THIRD-PARTY-LICENSES.md; for i in $$(go list -m all | awk '{print $$1}'); do l=$$(go-licenses csv $$i 2>/dev/null); if [ $$? -ne 0 ]; then continue; fi; echo $$l | tr \, \| | tr ' ' '\n'; done | sort -u >> THIRD-PARTY-LICENSES.md)
|
$(shell echo "Module | License URL | License" > THIRD-PARTY-LICENSES.md; echo "---|---|---" >> THIRD-PARTY-LICENSES.md; for i in $$(go list -m all | awk '{print $$1}'); do l=$$(go-licenses csv $$i 2>/dev/null); if [ $$? -ne 0 ]; then continue; fi; echo $$l | tr \, \| | tr ' ' '\n'; done | sort -u >> THIRD-PARTY-LICENSES.md)
|
||||||
|
@ -362,6 +362,23 @@ run-container:
|
||||||
${CONTAINER_RUNTIME} run --rm --security-opt label=disable -v $$(pwd):/go/src/github.com/project-zot/zot \
|
${CONTAINER_RUNTIME} run --rm --security-opt label=disable -v $$(pwd):/go/src/github.com/project-zot/zot \
|
||||||
zot-build:latest
|
zot-build:latest
|
||||||
|
|
||||||
|
.PHONY: binary-minimal-container
|
||||||
|
binary-minimal-container:
|
||||||
|
${CONTAINER_RUNTIME} build ${BUILD_ARGS} -f build/Dockerfile-minimal -t zot-minimal:latest .
|
||||||
|
|
||||||
|
.PHONY: run-minimal-container
|
||||||
|
run-minimal-container:
|
||||||
|
${CONTAINER_RUNTIME} run --rm --security-opt label=disable -v $$(pwd):/go/src/github.com/project-zot/zot \
|
||||||
|
zot-minimal:latest
|
||||||
|
|
||||||
|
.PHONY: binary-exporter-container
|
||||||
|
binary-exporter-container:
|
||||||
|
${CONTAINER_RUNTIME} build ${BUILD_ARGS} -f build/Dockerfile-zxp -t zxp:latest .
|
||||||
|
|
||||||
|
.PHONY: run-exporter-container
|
||||||
|
run-exporter-container:
|
||||||
|
${CONTAINER_RUNTIME} run --rm --security-opt label=disable zxp:latest
|
||||||
|
|
||||||
.PHONY: oci-image
|
.PHONY: oci-image
|
||||||
oci-image: $(STACKER)
|
oci-image: $(STACKER)
|
||||||
${STACKER} --debug build \
|
${STACKER} --debug build \
|
||||||
|
|
|
@ -1,40 +0,0 @@
|
||||||
# ---
|
|
||||||
# Stage 1: Install certs, build binary, create default config file
|
|
||||||
# ---
|
|
||||||
FROM ghcr.io/project-zot/golang:1.19 AS builder
|
|
||||||
RUN mkdir -p /go/src/github.com/project-zot/zot
|
|
||||||
WORKDIR /go/src/github.com/project-zot/zot
|
|
||||||
COPY . .
|
|
||||||
RUN make clean binary
|
|
||||||
RUN echo '{\n\
|
|
||||||
"storage": {\n\
|
|
||||||
"rootDirectory": "/var/lib/registry"\n\
|
|
||||||
},\n\
|
|
||||||
"http": {\n\
|
|
||||||
"address": "0.0.0.0",\n\
|
|
||||||
"port": "5000"\n\
|
|
||||||
},\n\
|
|
||||||
"log": {\n\
|
|
||||||
"level": "debug"\n\
|
|
||||||
},\n\
|
|
||||||
"extensions": {\n\
|
|
||||||
"metrics": {\n\
|
|
||||||
"enable": true,\n\
|
|
||||||
"prometheus": {\n\
|
|
||||||
"path": "/metrics"\n\
|
|
||||||
}\n\
|
|
||||||
}\n\
|
|
||||||
}\n\
|
|
||||||
}\n' > config.json && cat config.json
|
|
||||||
|
|
||||||
# ---
|
|
||||||
# Stage 2: Final image with nothing but certs, binary, and default config file
|
|
||||||
# ---
|
|
||||||
FROM gcr.io/distroless/base AS final
|
|
||||||
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
|
|
||||||
COPY --from=builder /go/src/github.com/project-zot/zot/bin/zot-linux-amd64 /usr/bin/zot
|
|
||||||
COPY --from=builder /go/src/github.com/project-zot/zot/config.json /etc/zot/config.json
|
|
||||||
ENTRYPOINT ["/usr/bin/zot"]
|
|
||||||
EXPOSE 5000
|
|
||||||
VOLUME ["/var/lib/registry"]
|
|
||||||
CMD ["serve", "/etc/zot/config.json"]
|
|
|
@ -1,32 +0,0 @@
|
||||||
# ---
|
|
||||||
# Stage 1: Install certs, build binary, create default config file
|
|
||||||
# ---
|
|
||||||
FROM ghcr.io/project-zot/golang:1.19 AS builder
|
|
||||||
RUN mkdir -p /go/src/github.com/project-zot/zot
|
|
||||||
WORKDIR /go/src/github.com/project-zot/zot
|
|
||||||
COPY . .
|
|
||||||
RUN make clean binary-minimal
|
|
||||||
RUN echo '{\n\
|
|
||||||
"storage": {\n\
|
|
||||||
"rootDirectory": "/var/lib/registry"\n\
|
|
||||||
},\n\
|
|
||||||
"http": {\n\
|
|
||||||
"address": "0.0.0.0",\n\
|
|
||||||
"port": "5050"\n\
|
|
||||||
},\n\
|
|
||||||
"log": {\n\
|
|
||||||
"level": "debug"\n\
|
|
||||||
}\n\
|
|
||||||
}\n' > config.json && cat config.json
|
|
||||||
|
|
||||||
# ---
|
|
||||||
# Stage 2: Final image with nothing but certs, binary, and default config file
|
|
||||||
# ---
|
|
||||||
FROM gcr.io/distroless/base AS final
|
|
||||||
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
|
|
||||||
COPY --from=builder /go/src/github.com/project-zot/zot/bin/zot-linux-amd64-minimal /usr/bin/zot
|
|
||||||
COPY --from=builder /go/src/github.com/project-zot/zot/config.json /etc/zot/config.json
|
|
||||||
ENTRYPOINT ["/usr/bin/zot"]
|
|
||||||
EXPOSE 5050
|
|
||||||
VOLUME ["/var/lib/registry"]
|
|
||||||
CMD ["serve", "/etc/zot/config.json"]
|
|
|
@ -1,31 +0,0 @@
|
||||||
# ---
|
|
||||||
# Stage 1: Build binary, create default config file
|
|
||||||
# ---
|
|
||||||
FROM ghcr.io/project-zot/golang:1.19 AS builder
|
|
||||||
RUN mkdir -p /go/src/github.com/project-zot/zot
|
|
||||||
WORKDIR /go/src/github.com/project-zot/zot
|
|
||||||
COPY . .
|
|
||||||
RUN make clean exporter-minimal
|
|
||||||
RUN echo '{\n\
|
|
||||||
"Server": {\n\
|
|
||||||
"protocol": "http",\n\
|
|
||||||
"host": "127.0.0.1",\n\
|
|
||||||
"port": "5050"\n\
|
|
||||||
},\n\
|
|
||||||
"Exporter": {\n\
|
|
||||||
"port": "5051",\n\
|
|
||||||
"log": {\n\
|
|
||||||
"level": "debug"\n\
|
|
||||||
}\n\
|
|
||||||
}\n\
|
|
||||||
}\n' > config.json && cat config.json
|
|
||||||
|
|
||||||
# ---
|
|
||||||
# Stage 2: Final image with nothing but binary and default config file
|
|
||||||
# ---
|
|
||||||
FROM gcr.io/distroless/base AS final
|
|
||||||
COPY --from=builder /go/src/github.com/project-zot/zot/bin/zxp-linux-amd64 /usr/bin/zxp
|
|
||||||
COPY --from=builder /go/src/github.com/project-zot/zot/config.json /etc/zxp/config.json
|
|
||||||
ENTRYPOINT ["/usr/bin/zxp"]
|
|
||||||
EXPOSE 5051
|
|
||||||
CMD ["config", "/etc/zxp/config.json"]
|
|
|
@ -1,27 +0,0 @@
|
||||||
CONTAINER_RUNTIME := docker
|
|
||||||
|
|
||||||
.PHONY: binary-container
|
|
||||||
binary-container:
|
|
||||||
${CONTAINER_RUNTIME} build -f build/Dockerfile -t zot-build:latest ../../.
|
|
||||||
|
|
||||||
.PHONY: run-container
|
|
||||||
run-container:
|
|
||||||
${CONTAINER_RUNTIME} run --rm --security-opt label=disable -v $$(pwd)/../..:/go/src/github.com/project-zot/zot \
|
|
||||||
zot-build:latest
|
|
||||||
|
|
||||||
.PHONY: binary-minimal-container
|
|
||||||
binary-minimal-container:
|
|
||||||
${CONTAINER_RUNTIME} build -f build/Dockerfile-minimal -t zot-minimal:latest ../../.
|
|
||||||
|
|
||||||
.PHONY: run-minimal-container
|
|
||||||
run-minimal-container:
|
|
||||||
${CONTAINER_RUNTIME} run --rm --security-opt label=disable -v $$(pwd)/../..:/go/src/github.com/project-zot/zot \
|
|
||||||
zot-minimal:latest
|
|
||||||
|
|
||||||
.PHONY: binary-exporter-container
|
|
||||||
binary-exporter-container:
|
|
||||||
${CONTAINER_RUNTIME} build -f build/Dockerfile-zxp -t zxp:latest ../../.
|
|
||||||
|
|
||||||
.PHONY: run-exporter-container
|
|
||||||
run-exporter-container:
|
|
||||||
${CONTAINER_RUNTIME} run --rm --security-opt label=disable zxp:latest
|
|
|
@ -6,8 +6,8 @@ set -e
|
||||||
CLUSTER_NAME=zot
|
CLUSTER_NAME=zot
|
||||||
|
|
||||||
# Script tested with below kubectl & kind versions
|
# Script tested with below kubectl & kind versions
|
||||||
KUBECTL_VERSION=v1.17.5
|
KUBECTL_VERSION=v1.27.3
|
||||||
KIND_VERSION=v0.7.0
|
KIND_VERSION=v0.20.0
|
||||||
|
|
||||||
function install_bin() {
|
function install_bin() {
|
||||||
if [ "$EUID" -ne 0 ]
|
if [ "$EUID" -ne 0 ]
|
||||||
|
@ -41,9 +41,9 @@ kind load docker-image quay.io/prometheus-operator/prometheus-config-reloader:v0
|
||||||
kind load docker-image quay.io/prometheus/prometheus:v2.22.1 --name ${CLUSTER_NAME}
|
kind load docker-image quay.io/prometheus/prometheus:v2.22.1 --name ${CLUSTER_NAME}
|
||||||
|
|
||||||
## Build zot & zxp images
|
## Build zot & zxp images
|
||||||
make binary-container
|
make -C ../../ binary-container
|
||||||
make binary-minimal-container
|
make -C ../../ binary-minimal-container
|
||||||
make binary-exporter-container
|
make -C ../../ binary-exporter-container
|
||||||
|
|
||||||
kind load docker-image zot-build:latest --name ${CLUSTER_NAME}
|
kind load docker-image zot-build:latest --name ${CLUSTER_NAME}
|
||||||
kind load docker-image zot-minimal:latest --name ${CLUSTER_NAME}
|
kind load docker-image zot-minimal:latest --name ${CLUSTER_NAME}
|
||||||
|
|
|
@ -3,7 +3,7 @@ kind: ServiceAccount
|
||||||
metadata:
|
metadata:
|
||||||
name: prometheus
|
name: prometheus
|
||||||
---
|
---
|
||||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
kind: ClusterRole
|
kind: ClusterRole
|
||||||
metadata:
|
metadata:
|
||||||
name: prometheus
|
name: prometheus
|
||||||
|
@ -28,7 +28,7 @@ rules:
|
||||||
- nonResourceURLs: ["/metrics"]
|
- nonResourceURLs: ["/metrics"]
|
||||||
verbs: ["get"]
|
verbs: ["get"]
|
||||||
---
|
---
|
||||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
kind: ClusterRoleBinding
|
kind: ClusterRoleBinding
|
||||||
metadata:
|
metadata:
|
||||||
name: prometheus
|
name: prometheus
|
||||||
|
|
|
@ -18,7 +18,76 @@ spec:
|
||||||
- name: zot-extended
|
- name: zot-extended
|
||||||
image: zot-build:latest
|
image: zot-build:latest
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
|
command: ["/usr/bin/zot"]
|
||||||
|
args: ["serve", "/zot-config/config.json"]
|
||||||
ports:
|
ports:
|
||||||
- name: zot-extended
|
- name: zot-extended
|
||||||
containerPort: 5000
|
containerPort: 5000
|
||||||
|
protocol: TCP
|
||||||
|
volumeMounts:
|
||||||
|
- name: zot-config
|
||||||
|
mountPath: /zot-config
|
||||||
|
readOnly: false
|
||||||
|
volumes:
|
||||||
|
- name: zot-config
|
||||||
|
configMap:
|
||||||
|
name: zot-config
|
||||||
|
items:
|
||||||
|
- key: zot_config.json
|
||||||
|
path: config.json
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: zot-config
|
||||||
|
data:
|
||||||
|
zot_config.json: |
|
||||||
|
{
|
||||||
|
"distSpecVersion":"1.0.1",
|
||||||
|
"storage": {
|
||||||
|
"rootDirectory": "/var/lib/registry"
|
||||||
|
},
|
||||||
|
"http": {
|
||||||
|
"address": "0.0.0.0",
|
||||||
|
"port": "5000"
|
||||||
|
},
|
||||||
|
"log": {
|
||||||
|
"level": "debug"
|
||||||
|
},
|
||||||
|
"extensions": {
|
||||||
|
"metrics": {
|
||||||
|
"enable": true,
|
||||||
|
"prometheus": {
|
||||||
|
"path": "/metrics"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
zot_minimal.json: |
|
||||||
|
{
|
||||||
|
"distSpecVersion":"1.0.1",
|
||||||
|
"storage": {
|
||||||
|
"rootDirectory": "/var/lib/registry"
|
||||||
|
},
|
||||||
|
"http": {
|
||||||
|
"address": "0.0.0.0",
|
||||||
|
"port": "5050"
|
||||||
|
},
|
||||||
|
"log": {
|
||||||
|
"level": "debug"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
zxp.json: |
|
||||||
|
{
|
||||||
|
"Server": {
|
||||||
|
"protocol": "http",
|
||||||
|
"host": "127.0.0.1",
|
||||||
|
"port": "5050"
|
||||||
|
},
|
||||||
|
"Exporter": {
|
||||||
|
"port": "5051",
|
||||||
|
"log": {
|
||||||
|
"level": "debug"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -18,13 +18,36 @@ spec:
|
||||||
- name: zot-minimal
|
- name: zot-minimal
|
||||||
image: zot-minimal:latest
|
image: zot-minimal:latest
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
|
command: ["/usr/bin/zot"]
|
||||||
|
args: ["serve", "/zot-config/config.json"]
|
||||||
ports:
|
ports:
|
||||||
- name: zot-minimal
|
- name: zot-minimal
|
||||||
containerPort: 5050
|
containerPort: 5050
|
||||||
|
protocol: TCP
|
||||||
|
volumeMounts:
|
||||||
|
- name: zot-config
|
||||||
|
mountPath: /zot-config
|
||||||
|
readOnly: false
|
||||||
- name: zot-exporter
|
- name: zot-exporter
|
||||||
image: zxp:latest
|
image: zxp:latest
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
|
command: ["/zxp"]
|
||||||
|
args: ["config", "/zot-config/zxp-config.json"]
|
||||||
ports:
|
ports:
|
||||||
- name: zot-exporter
|
- name: zot-exporter
|
||||||
containerPort: 5051
|
containerPort: 5051
|
||||||
|
protocol: TCP
|
||||||
|
volumeMounts:
|
||||||
|
- name: zot-config
|
||||||
|
mountPath: /zot-config
|
||||||
|
readOnly: false
|
||||||
|
volumes:
|
||||||
|
- name: zot-config
|
||||||
|
configMap:
|
||||||
|
name: zot-config
|
||||||
|
items:
|
||||||
|
- key: zot_minimal.json
|
||||||
|
path: config.json
|
||||||
|
- key: zxp.json
|
||||||
|
path: zxp-config.json
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue