本文作者:丁辉
Helm部署Docker-Registry
介绍
Docker Registry 是一个用于存储、管理和分发 Docker 镜像的服务器应用程序。
开始部署
添加仓库
1
2helm repo add stable https://charts.helm.sh/stable
helm repo update创建命名空间
1
kubectl create namespace hub
使用 Htpasswd 生成镜像仓库账户密码
安装
Centos安装
1
BASHyum -y install httpd-tools
Ubuntu安装
1
apt-get -y install apache2-utils
生成密码
1
htpasswd -Bbn admin 123456
参数解释
-B
: 使用 bcrypt 算法进行密码加密。这是推荐使用的安全加密方式。-b
: 表示将用户名和密码作为命令行参数提供,而不是通过交互式输入。-n
: 表示不更新文件,而是将加密后的用户名和密码输出到标准输出(通常是终端或屏幕)。admin
: 是要创建或更新的用户名。123456
: 是该用户名的密码。
编写 values.yaml 文件
1
vi docker-registry-values.yaml
内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38image:
repository: registry
tag: latest
# 填入 htpasswd 生成的密码
secrets:
htpasswd: "admin:$2y$05$Fx9LJWaWzrgvHRm9wwrBl.V254BIoqnH/KA6wWnOMxMtmRqVbWq4O"
# Docker-Registry配置文件
configData:
version: 0.1
log:
fields:
service: registry
storage:
delete:
enabled: true
cache:
blobdescriptor: inmemory
filesystem:
rootdirectory: /var/lib/registry
http:
addr: :5000
headers:
X-Content-Type-Options: [nosniff]
Access-Control-Allow-Origin: ['*']
health:
storagedriver:
enabled: true
interval: 10s
threshold: 3
# 设置存储类型: filesystem 或 s3
storage: filesystem
persistence:
enabled: true
size: 50Gi
storageClass: # 指定存储卷, 不指定则需要集群内存在默认的存储卷创建Nginx证书secret
cert为.pem和.crt文件都可以
1
kubectl create secret tls registry-tls --key nginx.key --cert nginx.pem -n hub
部署
1
2
3helm install docker-registry stable/docker-registry \
-f docker-registry-values.yaml \
--namespace hub部署 Ingress 对外访问
因 Helm 官方 stable 仓库在 2022 年就停止维护了, Chart 有些参数版本较老, 索性自己创建 Ingress
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29cat <<EOF | kubectl apply -f -
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: docker-registry
namespace: hub
annotations:
# 不限制文件上传大小
nginx.ingress.kubernetes.io/proxy-body-size: "0"
labels:
app: docker-registry
release: docker-registry
spec:
rules:
- host: #域名
http:
paths:
- pathType: Prefix
backend:
service:
name: docker-registry
port:
number: 5000
path: /
tls:
- hosts:
- #域名
secretName: registry-tls
EOF
卸载
卸载 gitea
1
helm uninstall docker-registry -n hub
删除 secret
1
kubectl delete secret registry-tls -n hub
删除命名空间
1
kubectl delete namespace hub
I'm so cute. Please give me money.
- 本文链接: https://blog.offends.cn/Kubernetes/Helm/Helm部署Docker-Registry.html
- 版权声明: 本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。