Skip to content

Commit 79534d9

Browse files
committed
chore(registry): use env replace creds volume
1 parent cbdc008 commit 79534d9

10 files changed

Lines changed: 127 additions & 125 deletions

File tree

Dockerfile

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@ ENV DRYCC_UID=1001 \
1717
REGISTRY_VERSION="2.8.0"
1818

1919
COPY rootfs/bin/ /bin/
20-
COPY rootfs/config-example.yml /etc/docker/registry/config.yml
2120
COPY --from=build /usr/local/bin/registry /opt/registry/bin/registry
2221

2322
RUN groupadd drycc --gid ${DRYCC_GID} \
2423
&& useradd drycc -u ${DRYCC_UID} -g ${DRYCC_GID} -s /bin/bash -m -d ${DRYCC_HOME_DIR} \
24+
&& install-packages apache2-utils \
2525
&& install-stack jq $JQ_VERSION \
2626
&& install-stack mc $MC_VERSION \
2727
&& install-stack registry $REGISTRY_VERSION \
28-
&& chmod +x /bin/create_bucket /bin/normalize_storage \
28+
&& chmod +x /bin/init_registry \
2929
&& rm -rf \
3030
/usr/share/doc \
3131
/usr/share/man \
@@ -42,6 +42,8 @@ RUN groupadd drycc --gid ${DRYCC_GID} \
4242
&& mkdir -p /usr/share/man/man{1..8} \
4343
&& chown -R ${DRYCC_GID}:${DRYCC_UID} ${DRYCC_HOME_DIR}
4444

45+
COPY --chown=${DRYCC_GID}:${DRYCC_UID} rootfs/config-example.yml /opt/drycc/registry/etc/config.yml
46+
4547
USER ${DRYCC_UID}
4648
VOLUME ["${DRYCC_HOME_DIR}"]
4749
CMD ["/opt/registry/bin/registry"]

charts/registry/templates/_helper.tpl

Lines changed: 48 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,53 @@
11
{{- define "registry.envs" -}}
2-
{{- if eq .Values.global.minioLocation "on-cluster" }}
2+
- name: REGISTRY_STORAGE_DELETE_ENABLED
3+
value: "true"
4+
- name: REGISTRY_LOG_LEVEL
5+
value: info
6+
- name: "REGISTRY_HTTP_SECRET"
7+
valueFrom:
8+
secretKeyRef:
9+
name: registry-secret
10+
key: secret
11+
- name: "DRYCC_REGISTRY_REDIRECT"
12+
valueFrom:
13+
secretKeyRef:
14+
name: registry-secret
15+
key: redirect
16+
- name: "DRYCC_REGISTRY_USERNAME"
17+
valueFrom:
18+
secretKeyRef:
19+
name: registry-secret
20+
key: username
21+
- name: "DRYCC_REGISTRY_PASSWORD"
22+
valueFrom:
23+
secretKeyRef:
24+
name: registry-secret
25+
key: password
26+
- name: "DRYCC_MINIO_LOOKUP"
27+
valueFrom:
28+
secretKeyRef:
29+
name: minio-creds
30+
key: lookup
31+
- name: "DRYCC_MINIO_BUCKET"
32+
valueFrom:
33+
secretKeyRef:
34+
name: minio-creds
35+
key: registry-bucket
336
- name: "DRYCC_MINIO_ENDPOINT"
4-
value: http://${DRYCC_MINIO_SERVICE_HOST}:${DRYCC_MINIO_SERVICE_PORT}
5-
{{- else }}
6-
- name: "DRYCC_MINIO_ENDPOINT"
7-
value: "{{ .Values.minio.endpoint }}"
8-
{{- end }}
37+
valueFrom:
38+
secretKeyRef:
39+
name: minio-creds
40+
key: endpoint
41+
- name: "DRYCC_MINIO_ACCESSKEY"
42+
valueFrom:
43+
secretKeyRef:
44+
name: minio-creds
45+
key: accesskey
46+
- name: "DRYCC_MINIO_SECRETKEY"
47+
valueFrom:
48+
secretKeyRef:
49+
name: minio-creds
50+
key: secretkey
951
{{- end }}
1052

1153
{{/* Generate registry deployment limits */}}

charts/registry/templates/registry-deployment.yaml

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -52,26 +52,16 @@ spec:
5252
port: 5000
5353
initialDelaySeconds: 1
5454
timeoutSeconds: 1
55-
env:
56-
- name: REGISTRY_STORAGE_DELETE_ENABLED
57-
value: "true"
58-
- name: REGISTRY_LOG_LEVEL
59-
value: info
6055
ports:
6156
- containerPort: 5000
6257
volumeMounts:
6358
- name: registry-storage
6459
mountPath: /var/lib/registry
65-
- name: minio-creds
66-
mountPath: /var/run/secrets/drycc/minio/creds
6760
securityContext:
6861
fsGroup: 1001
6962
runAsGroup: 1001
7063
runAsUser: 1001
7164
volumes:
7265
- name: registry-storage
7366
emptyDir: {}
74-
- name: minio-creds
75-
secret:
76-
secretName: minio-creds
7767
{{- end }}
Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{{- if ne .Values.global.registryLocation "off-cluster" }}
1+
22
apiVersion: v1
33
kind: Secret
44
metadata:
@@ -9,8 +9,13 @@ metadata:
99
drycc.cc/registry-location: "{{ .Values.global.registryLocation }}"
1010
type: Opaque
1111
data:
12-
hostname: {{ .Values.registry.hostname | b64enc }}
13-
organization: {{ .Values.registry.organization | b64enc }}
14-
username: {{ .Values.registry.username | b64enc }}
15-
password: {{ .Values.registry.password | b64enc }}
16-
{{- end }}
12+
{{- if ne .Values.global.registryLocation "on-cluster" }}
13+
host: {{ print "drycc-registry" .Release.Namespace ".svc." .Values.global.clusterDomain | b64enc }}
14+
secret: {{ randAlphaNum 32 | b64enc }}
15+
{{- else }}
16+
host: {{ .Values.host | b64enc }}
17+
organization: {{ .Values.organization | b64enc }}
18+
{{- end }}
19+
username: {{ if .Values.username | default "" | ne "" }}{{ .Values.username | b64enc }}{{ else }}{{ randAlphaNum 32 | b64enc }}{{ end }}
20+
password: {{ if .Values.password | default "" | ne "" }}{{ .Values.password | b64enc }}{{ else }}{{ randAlphaNum 32 | b64enc }}{{ end }}
21+
redirect: {{ .Values.redirect | b64enc }}

contrib/ci/test.sh

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,12 @@
22

33
set -eoxf pipefail
44

5-
CURRENT_DIR=$(cd "$(dirname "$0")"; pwd)
6-
7-
mkdir -p "${CURRENT_DIR}"/tmp/aws-user
8-
echo "us-east-1" > "${CURRENT_DIR}"/tmp/aws-user/region
9-
echo "registry-bucket" > "${CURRENT_DIR}"/tmp/aws-user/registry-bucket
10-
echo "1234567890123456789012345678901234567890" > "${CURRENT_DIR}"/tmp/aws-user/accesskey
11-
echo "1234567890123456789012345678901234567890" > "${CURRENT_DIR}"/tmp/aws-user/secretkey
5+
s3Accesskey=drycc
6+
s3Secretkey=123456789
127

138
MINIO_JOB=$(docker run -d --name minio \
14-
-v "${CURRENT_DIR}"/tmp/aws-user:/var/run/secrets/drycc/minio/creds \
9+
-e DRYCC_MINIO_ACCESSKEY=$s3Accesskey \
10+
-e DRYCC_MINIO_SECRETKEY=$s3Secretkey \
1511
"${DEV_REGISTRY}"/drycc/minio:canary server /data/minio/ --console-address :9001)
1612

1713
sleep 5
@@ -21,8 +17,16 @@ MINIO_IP=$(docker inspect --format "{{ .NetworkSettings.IPAddress }}" "${MINIO_J
2117

2218
JOB=$(docker run --add-host minio:"${MINIO_IP}" \
2319
-d \
20+
-p 5000:5000 \
21+
-e REGISTRY_HTTP_SECRET=drycc \
22+
-e DRYCC_REGISTRY_REDIRECT=false \
23+
-e DRYCC_REGISTRY_USERNAME=admin \
24+
-e DRYCC_REGISTRY_PASSWORD=admin \
25+
-e DRYCC_MINIO_LOOKUP=path \
26+
-e DRYCC_MINIO_BUCKET=registry \
2427
-e DRYCC_MINIO_ENDPOINT=http://minio:9000 \
25-
-v "${CURRENT_DIR}"/tmp/aws-user:/var/run/secrets/drycc/minio/creds \
28+
-e DRYCC_MINIO_ACCESSKEY=$s3Accesskey \
29+
-e DRYCC_MINIO_SECRETKEY=$s3Secretkey \
2630
"$1")
2731

2832
# let the registry run for a few seconds

main.go

Lines changed: 25 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package main
22

33
import (
4-
"io/ioutil"
54
"log"
65
"net"
76
"net/url"
@@ -11,17 +10,24 @@ import (
1110
)
1211

1312
const (
14-
registryBinary = "/opt/drycc/registry/bin/registry"
15-
registryConfig = "/etc/docker/registry/config.yml"
16-
minioEndpointEnvVar = "DRYCC_MINIO_ENDPOINT"
17-
command = "serve"
13+
registryBinary = "/opt/drycc/registry/bin/registry"
14+
registryConfig = "/opt/drycc/registry/etc/config.yml"
15+
registryHtpasswd = "/opt/drycc/registry/etc/htpasswd"
16+
registryRedirectEnvVar = "DRYCC_REGISTRY_REDIRECT"
17+
minioLookupEnvVar = "DRYCC_MINIO_LOOKUP"
18+
minioBucketEnvVar = "DRYCC_MINIO_BUCKET"
19+
minioEndpointEnvVar = "DRYCC_MINIO_ENDPOINT"
20+
minioAccesskeyEnvVar = "DRYCC_MINIO_ACCESSKEY"
21+
minioSecretkeyEnvVar = "DRYCC_MINIO_SECRETKEY"
22+
command = "serve"
1823
)
1924

2025
func main() {
2126
log.Println("INFO: Starting registry...")
2227
os.Setenv("REGISTRY_STORAGE", "s3")
2328
mEndpoint := os.Getenv(minioEndpointEnvVar)
2429
os.Setenv("REGISTRY_STORAGE_S3_REGIONENDPOINT", mEndpoint)
30+
2531
region := "us-east-1" //region is required in distribution
2632
if endpointURL, err := url.Parse(mEndpoint); err == nil {
2733
if endpointURL.Hostname() != "" && net.ParseIP(endpointURL.Hostname()) == nil {
@@ -30,31 +36,26 @@ func main() {
3036
}
3137
os.Setenv("REGISTRY_STORAGE_S3_REGION", region)
3238

33-
if accesskey, err := ioutil.ReadFile("/var/run/secrets/drycc/minio/creds/accesskey"); err != nil {
34-
log.Fatal(err)
35-
} else {
36-
os.Setenv("REGISTRY_STORAGE_S3_ACCESSKEY", string(accesskey))
37-
}
39+
os.Setenv("REGISTRY_STORAGE_S3_ACCESSKEY", os.Getenv(minioAccesskeyEnvVar))
40+
os.Setenv("REGISTRY_STORAGE_S3_SECRETKEY", os.Getenv(minioSecretkeyEnvVar))
41+
os.Setenv("REGISTRY_STORAGE_S3_BUCKET", os.Getenv(minioBucketEnvVar))
42+
os.Setenv("REGISTRY_STORAGE_S3_ROOTDIRECTORY", "/registry")
3843

39-
if secretkey, err := ioutil.ReadFile("/var/run/secrets/drycc/minio/creds/secretkey"); err != nil {
40-
log.Fatal(err)
41-
} else {
42-
os.Setenv("REGISTRY_STORAGE_S3_SECRETKEY", string(secretkey))
44+
if os.Getenv(minioLookupEnvVar) == "path" {
45+
os.Setenv("REGISTRY_STORAGE_S3_FORCEPATHSTYLE", "true")
4346
}
4447

45-
bucketNameFile := "/var/run/secrets/drycc/minio/creds/registry-bucket"
46-
if _, err := os.Stat(bucketNameFile); os.IsNotExist(err) {
47-
if bucket, err := ioutil.ReadFile(bucketNameFile); err != nil {
48-
log.Fatal(err)
49-
} else {
50-
os.Setenv("REGISTRY_STORAGE_S3_BUCKET", string(bucket))
51-
}
48+
if os.Getenv(registryRedirectEnvVar) == "true" {
49+
os.Setenv("REGISTRY_STORAGE_REDIRECT_DISABLE", "false")
5250
} else {
53-
os.Setenv("REGISTRY_STORAGE_S3_BUCKET", "registry") // default bucket
51+
os.Setenv("REGISTRY_STORAGE_REDIRECT_DISABLE", "true")
5452
}
5553

56-
// run /bin/create_bucket
57-
cmd := exec.Command("/bin/create_bucket")
54+
// run /bin/init_registry
55+
os.Setenv("REGISTRY_AUTH", "htpasswd")
56+
os.Setenv("REGISTRY_AUTH_HTPASSWD_REALM", "basic-realm")
57+
os.Setenv("REGISTRY_AUTH_HTPASSWD_PATH", registryHtpasswd)
58+
cmd := exec.Command("/bin/init_registry")
5859
cmd.Stdout = os.Stdout
5960
cmd.Stderr = os.Stderr
6061
if err := cmd.Run(); err != nil {
@@ -69,11 +70,3 @@ func main() {
6970
}
7071
log.Println("INFO: registry started.")
7172
}
72-
73-
func getenv(name, dfault string) string {
74-
value := os.Getenv(name)
75-
if value == "" {
76-
value = dfault
77-
}
78-
return value
79-
}

rootfs/bin/create_bucket

Lines changed: 0 additions & 19 deletions
This file was deleted.

rootfs/bin/init_registry

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#!/usr/bin/env bash
2+
3+
set -e
4+
5+
mc config host add minio \
6+
"${DRYCC_MINIO_ENDPOINT}" \
7+
"${DRYCC_MINIO_ACCESSKEY}" \
8+
"${DRYCC_MINIO_SECRETKEY}" \
9+
--lookup "${DRYCC_MINIO_LOOKUP}" \
10+
--api s3v4
11+
12+
has_bucket(){
13+
mc ls minio -json|jq -r '.key'|grep -w "${DRYCC_MINIO_BUCKET}"
14+
}
15+
16+
if [ -z "$(has_bucket)" ] ;then
17+
mc mb minio/"${DRYCC_MINIO_BUCKET}"
18+
if [ -z "$(has_bucket)" ] ;then
19+
echo "create bucket ${DRYCC_MINIO_BUCKET} error"
20+
exit 1
21+
fi
22+
fi
23+
echo "create bucket ${DRYCC_MINIO_BUCKET} success"
24+
25+
htpasswd -Bbn "${DRYCC_REGISTRY_USERNAME}" "${DRYCC_REGISTRY_PASSWORD}" > "${REGISTRY_AUTH_HTPASSWD_PATH}"
26+
echo "create ${REGISTRY_AUTH_HTPASSWD_PATH} success"

rootfs/bin/normalize_storage

Lines changed: 0 additions & 23 deletions
This file was deleted.

rootfs/etc/docker/registry/config.yml

Lines changed: 0 additions & 18 deletions
This file was deleted.

0 commit comments

Comments
 (0)