banner
NEWS LETTER

Helm部署Docker-Registry

Scroll down

本文作者:丁辉

Helm部署Docker-Registry

官方文档

Github-Docker-Registry

Helm-Chart仓库

介绍

Docker Registry 是一个用于存储、管理和分发 Docker 镜像的服务器应用程序

开始部署

  1. 添加仓库

    1
    2
    helm repo add stable https://charts.helm.sh/stable
    helm repo update
  2. 创建命名空间

    1
    kubectl create namespace hub
  3. 使用 Htpasswd 生成镜像仓库账户密码

    1. 安装

      • Centos安装

        1
        BASHyum -y install httpd-tools
      • Ubuntu安装

        1
        apt-get -y install apache2-utils
    2. 生成密码

      1
      htpasswd -Bbn admin 123456

      参数解释

      • -B: 使用 bcrypt 算法进行密码加密。这是推荐使用的安全加密方式。
      • -b: 表示将用户名和密码作为命令行参数提供,而不是通过交互式输入。
      • -n: 表示不更新文件,而是将加密后的用户名和密码输出到标准输出(通常是终端或屏幕)。
      • admin: 是要创建或更新的用户名。
      • 123456: 是该用户名的密码。
  4. 编写 values.yaml 文件

    1
    vi docker-registry-values.yaml

    内容如下

    Docker-Registry配置文件解释

    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
    38
    image:
    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: # 指定存储卷, 不指定则需要集群内存在默认的存储卷
  5. 创建Nginx证书secret

    cert为.pem和.crt文件都可以

    1
    kubectl create secret tls registry-tls --key nginx.key --cert nginx.pem -n hub
  6. 部署

    1
    2
    3
    helm install docker-registry stable/docker-registry \
    -f docker-registry-values.yaml \
    --namespace hub
  7. 部署 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
    29
    cat <<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

卸载

  1. 卸载 gitea

    1
    helm uninstall docker-registry -n hub
  2. 删除 secret

    1
    kubectl delete secret registry-tls -n hub
  3. 删除命名空间

    1
    kubectl delete namespace hub

I'm so cute. Please give me money.

其他文章
cover
Helm部署Config-Syncer
  • 70/01/01
  • 00:00
  • Kubernetes-Helm
cover
Helm部署Drone-Kubernetes-Secrets
  • 70/01/01
  • 00:00
  • Kubernetes-Helm
目录导航 置顶
  1. 1. Helm部署Docker-Registry
    1. 1.1. 介绍
    2. 1.2. 开始部署
    3. 1.3. 卸载
请输入关键词进行搜索