kubernetes下搭建harbor企业级docker仓库

部署Harbor进行镜像仓库管理、harbor核心服务不可用问题解决(七.3和八.2) 在刚才第一步最后这样改过密码后重新安装会出现harbor的核心服务不可用的情况,也就是他的harbor-core直接是一直restart的状态,此时我们需要进入容器将密码修改一致。本部分为2024年6月补充,都是在我的harbor安装目录/usr/local/harbor下进行的,代码段或者主机名有所不同,原理一样,仅做参考。我是重新运行此命令解决,在第八部分也涉及到了这个问题,我目前遇到的就是一个修改密码后,harbor服务与数据库中的密码不一致导致,敬请查看后文。此处修改主机登录密码和数据库登录密码。 阅读详情

前言

harbor是由vmware开源的企业级docker repository,提供私有仓库,安全认证,权限管理,漏洞扫描及仓库复制等多种功能,因为之前搭建的harbor在线上环境存在各种各样的问题(之前搭建的方式目前发现已被官方宣布弃用https://github.com/vmware/harbor/blob/master/docs/kubernetes_deployment.md,如ui显示不正常,权限认证不正常),于是近期抽空用官方推荐的helm方式对harbor进行重新部署,并替换掉线上harbor

准备

  1. Kubernetes集群1.8+
  2. Kubernetes Ingress Controller已启用(这里我们选用的traefik-ingress)
  3. kubectl 客户端 1.8+
  4. 可选的持久化功能需要准备PV或者SC(我们这里使用nfs创建的PV和PVC,如果有条件使用SC的会更加方便)

部署过程

  1. 首先按照官方教程安装Helm,然后初始化Helm。
    注意: 初始化需要使用下面命令使用canary镜像,否则无法正常安装,会报错helm部署文件的格式不正确,目前这是一个已知issue:https://github.com/vmware/harbor/issues/4484

    helm init --canary-image

    如果你和我一样,在这之前已经用官方教程安装好了helm,则可使用下面命令更新helm server:

    helm init --canary-image --upgrade
  2. 下载helm部署代码并进入harbor helm目录。

    git clone https://github.com/vmware/harbor
    cd harbor/contrib/helm/harbor

    推荐使用这个连接下载指定的文件夹,否则在网络不佳的情况下拉取全部代码会比较耗时:

    https://minhaskamal.github.io/DownGit/#/home
  3. 更新helm dependency
    harbor的helm部署依赖了postgresql的helm,在官方的安装文档没有明确说明,因为我也是第一次使用,直接按照官方文档说明安装,就会缺失postgresql的部署,导致整个服务无法启动

    helm dependency update
  4. 安装harbor
    这里官方提供了两种方式,Insecure和Secure,我这里选用的是Secure安全的部署方式,让harbor自己生成CA和SSL,简单方便。执行如下命令安装harbor:

    helm install . --debug --name hub --set externalDomain=harbor.my.domain

    externalDomain为外部能访问到harbor的域名,到目前为止,你可以在本地/etc/hosts中添加域名解析,从本地访问进行测试,待测试完成后再加入traefik-ingress中,当然你也可以直接在traefik-ingress中添加域名解析。
  5. 添加traefik-ingress的域名解析:

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
    name: traefik-default-ingress
    namespace: default
    annotations:
    kubernetes.io/ingress.class: "traefik"
    spec:
    rules:
    <ul><li>host: harbor.my.domain
    http:
    paths:
    <ul><li>path: /
    backend:
    serviceName: my-release-harbor-ui
    servicePort: 80

helm harbor自定义配置

注意: 我这里把所有自定义配置放到后面的附录中,供大家参考,同时可以点击https://github.com/Anteoy/harbor-helm/commit/226b296d130b4f956f8463eecf2aa473bc1e844c,查看我上传到github的自定义配置,从github阅读更清晰。

  1. 重要:在生产环境中需要持久化数据存储,否则pod重启或重建会造成数据丢失。如果有创建好的storageClass可以直接在values.yaml配置,如果没有或暂时不能使用SC的,比如我这里只有nfs,则需要像我一样多修改一些配置。另外,nfs其实在社区也有storageClass的驱动库,不过我看了下使用起来较为繁琐,于是这里仍然修改为使用nfs。
  2. 修改templates默认的namespace,注意需要修改依赖的chart文件夹下的postgresql-0.9-1.tgz压缩文件中的部署yaml模板,否则harbor的ui,register,mysql和postgresql不在一个namespace下,不能正常安装
  3. 注意修改postgresql的持久化数据卷,可参考https://github.com/kubernetes/charts/tree/master/stable/postgresql

附录

 templates/adminserver/adminserver-cm.yaml
@@ -1,6 +1,7 @@
 apiVersion: v1
 kind: ConfigMap
 metadata:
+  namespace: class100-ops
   name: "{{ template "harbor.fullname" . }}-adminserver"
   labels:
 {{ include "harbor.labels" . | indent 4 }}

1  templates/adminserver/adminserver-secrets.yaml
@@ -2,6 +2,7 @@ apiVersion: v1
 kind: Secret
 metadata:
   name: "{{ template "harbor.fullname" . }}-adminserver"
+  namespace: class100-ops
   labels:
 {{ include "harbor.labels" . | indent 4 }}
     component: adminserver

5  templates/adminserver/adminserver-ss.yaml
@@ -2,6 +2,7 @@ apiVersion: apps/v1beta2
 kind: StatefulSet
 metadata:
   name: "{{ template "harbor.fullname" . }}-adminserver"
+  namespace: class100-ops
   labels:
 {{ include "harbor.labels" . | indent 4 }}
     component: adminserver
@@ -42,13 +43,15 @@ spec:
         volumeMounts:
         - name: adminserver-config
           mountPath: /etc/adminserver/config
+          subPath: harbor-v1/adminserver/
         - name: adminserver-key
           mountPath: /etc/adminserver/key
           subPath: key
       volumes:
       {{- if not .Values.persistence.enabled }}
       - name: adminserver-config
-        emptyDir: {}
+        persistentVolumeClaim:
+          claimName: harbor-pvc
       {{- end }}
       - name: adminserver-key
         secret:

1  templates/adminserver/adminserver-svc.yaml
@@ -2,6 +2,7 @@ apiVersion: v1
 kind: Service
 metadata:
   name: "{{ template "harbor.fullname" . }}-adminserver"
+  namespace: class100-ops
 spec:
   ports:
     - port: 80

1  templates/clair/clair-cm.yaml
@@ -3,6 +3,7 @@ apiVersion: v1
 kind: ConfigMap
 metadata:
   name: {{ template "harbor.fullname" . }}-clair
+  namespace: class100-ops
   labels:
 {{ include "harbor.labels" . | indent 4 }}
     component: clair

1  templates/clair/clair-dpl.yaml
@@ -3,6 +3,7 @@ apiVersion: extensions/v1beta1
 kind: Deployment
 metadata:
   name: {{ template "harbor.fullname" . }}-clair
+  namespace: class100-ops
   labels:
 {{ include "harbor.labels" . | indent 4 }}
     component: clair

1  templates/clair/clair-svc.yaml
@@ -6,6 +6,7 @@ apiVersion: v1
 kind: Service
 metadata:
   name: clair
+  namespace: class100-ops
   labels:
 {{ include "harbor.labels" . | indent 4 }}
 spec:

1  templates/ingress/ingress.yaml
@@ -2,6 +2,7 @@ apiVersion: extensions/v1beta1
 kind: Ingress
 metadata:
   name: "{{ template "harbor.fullname" . }}-ingress"
+  namespace: class100-ops
   labels:
 {{ include "harbor.labels" . | indent 4 }}
   annotations:

1  templates/ingress/secret.yaml
@@ -5,6 +5,7 @@ apiVersion: v1
 kind: Secret
 metadata:
   name: "{{ template "harbor.fullname" . }}-ingress"
+  namespace: class100-ops
   labels:
 {{ include "harbor.labels" . | indent 4 }}
 type: kubernetes.io/tls

1  templates/jobservice/jobservice-cm.yaml
@@ -2,6 +2,7 @@ apiVersion: v1
 kind: ConfigMap
 metadata:
   name: "{{ template "harbor.fullname" . }}-jobservice"
+  namespace: class100-ops
   labels:
 {{ include "harbor.labels" . | indent 4 }}
 data:

1  templates/jobservice/jobservice-dpl.yaml
@@ -2,6 +2,7 @@ apiVersion: extensions/v1beta1
 kind: Deployment
 metadata:
   name: "{{ template "harbor.fullname" . }}-jobservice"
+  namespace: class100-ops
   labels:
 {{ include "harbor.labels" . | indent 4 }}
     component: jobservice

1  templates/jobservice/jobservice-secrets.yaml
@@ -2,6 +2,7 @@ apiVersion: v1
 kind: Secret
 metadata:
   name: "{{ template "harbor.fullname" . }}-jobservice"
+  namespace: class100-ops
   labels:
 {{ include "harbor.labels" . | indent 4 }}
 type: Opaque

1  templates/jobservice/jobservice-svc.yaml
@@ -2,6 +2,7 @@ apiVersion: v1
 kind: Service
 metadata:
   name: "{{ template "harbor.fullname" . }}-jobservice"
+  namespace: class100-ops
   labels:
 {{ include "harbor.labels" . | indent 4 }}
 spec:

1  templates/mysql/mysql-secret.yaml
@@ -2,6 +2,7 @@ apiVersion: v1
 kind: Secret
 metadata:
   name: "{{ template "harbor.fullname" . }}-mysql"
+  namespace: class100-ops
   labels:
 {{ include "harbor.labels" . | indent 4 }}
 type: Opaque

7  templates/mysql/mysql-ss.yaml
@@ -2,6 +2,7 @@ apiVersion: apps/v1beta2
 kind: StatefulSet
 metadata:
   name: "{{ template "harbor.fullname" . }}-mysql"
+  namespace: class100-ops
   labels:
 {{ include "harbor.labels" . | indent 4 }}
     component: mysql
@@ -33,10 +34,12 @@ spec:
         volumeMounts:
         - name: mysql-data
           mountPath: /var/lib/mysql
+          subPath: harbor-v1/mysql-data/
       {{- if not .Values.persistence.enabled }}
       volumes:
-      - name: "mysql-data"
-        emptyDir: {}
+      - name: mysql-data
+        persistentVolumeClaim:
+          claimName: harbor-pvc
       {{- end -}}
   {{- if .Values.persistence.enabled }}
   volumeClaimTemplates:

1  templates/mysql/mysql-svc.yaml
@@ -2,6 +2,7 @@ apiVersion: v1
 kind: Service
 metadata:
   name: "{{ template "harbor.fullname" . }}-mysql"
+  namespace: class100-ops
   labels:
 {{ include "harbor.labels" . | indent 4 }}
 spec:

1  templates/registry/registry-cm.yaml
@@ -2,6 +2,7 @@ apiVersion: v1
 kind: ConfigMap
 metadata:
   name: "{{ template "harbor.fullname" . }}-registry"
+  namespace: class100-ops
   labels:
 {{ include "harbor.labels" . | indent 4 }}
 data:

1  templates/registry/registry-secret.yaml
@@ -2,6 +2,7 @@ apiVersion: v1
 kind: Secret
 metadata:
   name: "{{ template "harbor.fullname" . }}-registry"
+  namespace: class100-ops
   labels:
 {{ include "harbor.labels" . | indent 4 }}
 type: Opaque

5  templates/registry/registry-ss.yaml
@@ -2,6 +2,7 @@ apiVersion: apps/v1beta2
 kind: StatefulSet
 metadata:
   name: "{{ template "harbor.fullname" . }}-registry"
+  namespace: class100-ops
   labels:
 {{ include "harbor.labels" . | indent 4 }}
     component: registry
@@ -37,6 +38,7 @@ spec:
         volumeMounts:
         - name: registry-data
           mountPath: /var/lib/registry
+          subPath: harbor-v1/registry-data/
         - name: registry-root-certificate
           mountPath: /etc/registry/root.crt
           subPath: root.crt
@@ -47,7 +49,8 @@ spec:
 {{- if not .Values.registry.objectStorage }}
 {{- if not .Values.persistence.enabled }}
       - name: registry-data
-        emptyDir: {}
+        persistentVolumeClaim:
+          claimName: harbor-pvc
 {{- end }}
 {{- end }}
       - name: registry-root-certificate

1  templates/registry/registry-svc.yaml
@@ -2,6 +2,7 @@ apiVersion: v1
 kind: Service
 metadata:
   name: "{{ template "harbor.fullname" . }}-registry"
+  namespace: class100-ops
   labels:
 {{ include "harbor.labels" . | indent 4 }}
 spec:

1  templates/ui/ui-cm.yaml
@@ -2,6 +2,7 @@ apiVersion: v1
 kind: ConfigMap
 metadata:
   name: "{{ template "harbor.fullname" . }}-ui"
+  namespace: class100-ops
   labels:
 {{ include "harbor.labels" . | indent 4 }}
 data:

3  templates/ui/ui-dpl.yaml
@@ -2,6 +2,7 @@ apiVersion: extensions/v1beta1
 kind: Deployment
 metadata:
   name: "{{ template "harbor.fullname" . }}-ui"
+  namespace: class100-ops
   labels:
 {{ include "harbor.labels" . | indent 4 }}
     component: ui
@@ -54,8 +55,10 @@ spec:
           subPath: private_key.pem
         - name: ca-download
           mountPath: /etc/ui/ca
+          subPath: harbor-v1/ui-ca/
         - name: psc
           mountPath: /etc/ui/token
+          subPath: harbor-v1/ui-psc/
       volumes:
       - name: ui-config
         configMap:

1  templates/ui/ui-secrets.yaml
@@ -2,6 +2,7 @@ apiVersion: v1
 kind: Secret
 metadata:
   name: "{{ template "harbor.fullname" . }}-ui"
+  namespace: class100-ops
   labels:
 {{ include "harbor.labels" . | indent 4 }}
 type: Opaque

1  templates/ui/ui-svc.yaml
@@ -2,6 +2,7 @@ apiVersion: v1
 kind: Service
 metadata:
   name: "{{ template "harbor.fullname" . }}-ui"
+  namespace: class100-ops
   labels:
 {{ include "harbor.labels" . | indent 4 }}
 spec:

3  values.yaml
@@ -287,4 +287,5 @@ postgresql:
   postgresPassword: not-a-secure-password
   postgresDatabase: clair
   persistence:
-    enabled: false
+    enabled: true
+    existingClaim: harbor-pvc 

参考

  1. https://github.com/vmware/harbor/issues/4484
  2. https://github.com/vmware/harbor/tree/master/contrib/helm/harbor
  3. https://github.com/vmware/harbor/issues/4481
  4. https://kubernetes.io/docs/concepts/storage/storage-classes/#introduction
helm搭建harbor报错 说明:github上有对这个的说明,但不是我遇到的这种问题。访问输入密码的时候报错。 阅读详情

相关推荐

云原生之容器编排实践-在K8S集群中使用Registry2搭建私有镜像仓库

基于前面搭建的3节点 Kubernetes 集群,今天我们使用 Registry2 搭建私有镜像仓库,这在镜像安全性以及离线环境下运维等方面具有重要意义。作为测试环境,本次使用 Registry2 搭建了私有镜像仓库,实际生产环境建议使用 Harbor;创建了一个 local-storage 的 StorageClass ,并使用本地磁盘的方式创建使用 PV ,实际建议使用 NFS 。

Heartsuit的博客 2462

redis-ha helm

NOTES:

青春不流名 1040

从零到一:KUKA机械臂与ROS的工业级通讯协议深度解析

本文深度解析KUKA机械臂与ROS的工业级通讯协议,重点对比EKI与RSI两种核心接口的技术特点与应用场景。详细介绍了网络架构设计、数据包解析机制及ROS-I集成方法,并提供实时性能优化与故障排除策略,为工程师实现高可靠性工业自动化集成提供完整解决方案。

2a4s6d8f0g的博客 296

helm install报错Error: INSTALLATION FAILED: unable to build kubernetes objects from release manifest:

Error: INSTALLATION FAILED: unable to build kubernetes objects from release manifest: [resource mapping not found for name: "weave-scope-agent-ui" namespace: "" from "": no matches for kind "ClusterRole" in version "rbac.authorization.k8s.io/v1beta1" ensur

qq_41954181的博客 5688

QMT实盘交易入门:5分钟搞定ETF全球配置策略(附完整代码)

本文详细介绍了如何使用QMT平台实现ETF全球配置策略,从环境准备到策略编写、实盘部署全流程仅需5分钟。通过xtquant库对接交易所接口,提供完整的动量轮动策略代码,帮助投资者快速掌握自动交易技术,优化全球资产配置。

weixin_30675247的博客 335

全在这了!全国分省90米、30米、12.5米、5米DEM高程模型数据下载方式汇总

全在这了!全国分省90米、30米、12.5米、5米DEM高程模型数据下载方式汇总 SRTM15(450米)免费下载 https://pan.baidu.com/s/1eO0U6wfzs7YSe2EQdxRJ2Q提取码:o7am GMTED(250米)免费下载 https://pan.baidu.com/share/init?surl=nrbbdbhyNVQV46XwqzqLlg 提取码:V7X9 SRTM3 (90米)免费下载 https://pan.baidu.com/share/..

TuxinyunGIS的博客 1万+

【ERROR】搭建harbor时,redis和register启动失败

2)register启动失败:unable to configure authorization (htpasswd): open /etc/registry/passwd: permission denied。1)redis启动失败:open() “/etc/nginx/nginx.conf” failed (13: Permission denied)搭建harbor时,运行docker-compose.yml,内置的redis和register启动失败。registry容器因为权限问题导致异常重启。

落拓子ю的博客 1673

AI量化学习入门指南:从零开始掌握人工智能投资策略

量化投资:利用数学模型和计算机算法进行投资决策的方法算法交易:自动执行预定义交易规则的系统机器学习:让计算机从数据中学习并改进的技术回测:用历史数据检验交易策略表现的过程特征工程:将原始数据转化为模型可理解的输入过拟合:模型过度适应历史数据,导致未来表现不佳夏普比率:衡量单位风险所获得的超额收益AI量化投资不仅仅是技术的应用,更是一种理性、系统化的投资哲学。它不追求预测市场的每一个拐点,而是通过概率思维和风险管理,在不确定性的市场中寻找统计优势。

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 1134

k8s(十三)、企业级docker仓库Harbor在kubernetes上搭建使用

前言 Harbor是Docker镜像仓库管理系统,用于企业级管理容器镜像,支持对接ldap进行权限管理,由VMVare中国团队开发。 项目地址: https://github.com/goharbor/harbor/ 安装方式: 1.Docker Compose方式部署: https://github.com/goharbor/harbor/blob/master/docs/installatio...

ywq935的博客 1万+

【25届数字IC秋招总结】面试经验10——紫光同芯

25届数字ic面试记录——紫光同芯

lalala0635的博客 863

代谢组数据分析(十五):基于python语言构建PLS-DA分类预测模型

本教程阐述典型代谢组学数据分析工作流程,用于二元分类结果的研究。流程主要步骤如下:首先从 Excel 表格导入代谢物与实验数据,接着基于汇总 QC 进行数据清洗。随后借助主成分分析可视化检查数据质量,再开展两类单变量统计。之后运用偏最小二乘判别分析(PLS - DA)实施多变量分析,此过程涵盖模型优化(对比 R2 与 Q2)、置换测试及明确模型预测指标、确定特征重要性、对模型预测数据进行可视化。最终将统计表格导出至 Excel 表格,完整呈现从数据导入到分析结果输出的全过程。

专注生信领域 2878

企业级docker仓库Harbor在kubernetes上搭建使用

来自https://blog.youkuaiyun.com/ywq935/article/details/83347026 前言 Harbor是Docker镜像仓库管理系统,用于企业级管理容器镜像,支持对接ldap进行权限管理,由VMVare中国团队开发。 项目地址: https://github.com/goharbor/harbor/ 安装方式: 1.Docker Compose方式部署: https:...

yangbosos的博客 5024

【反封禁策略】集成 Undetected-Chromedriver:让 Browser-Use 绕过 Cloudflare 五秒盾

摘要:AI Agent如何突破Cloudflare检测的实战指南 本文针对AI Agent在Cloudflare检测下频繁受阻的问题,深入分析了undetected-chromedriver的工作原理与局限性。文章指出,Cloudflare 2026年的检测体系已升级为"浏览器指纹+IP信誉+协议指纹+行为模式"的多维交叉验证,单一伪装方案难以奏效。 核心内容包括: undetected-chromedriver的三层补丁体系解析 v2与v3版本的适用场景对比 两种Browser-Use集成方案:Selen

ZDQ58818的博客 284

SpringCloud微服务实战——搭建企业级开发框架(三十五):SpringCloud + Docker + k8s实现微服务集群打包部署-集群环境部署

从Jenkins的登录界面提示可以知道,默认密码路径为/var/jenkins_home/secrets/initialAdminPassword,这里显示的事Docker容器内部的路径,实际对应我们上面服务器设置的路径为/data/docker/ci/jenkins/home/secrets/initialAdminPassword ,我们打开这个文件并输入密码就可以进入Jenkins管理界面。5、配置ipvs模式,kube-proxy监控Pod的变化并创建相应的ipvs规则。

qq_24428851的博客 702

SoC 内的 CPU、GPU、DSP、NPU 协同执行结构图解析:多异构协同的最新实战体系

随着移动端 AI 能力迅速演进,SoC(System on Chip)内部的多种异构计算单元(CPU、GPU、DSP、NPU)之间的协同执行能力成为衡量芯片智能算力的关键指标。本文基于截至 2025 年 5 月最新主流国产芯片(如海思昇腾、地平线旭日、联发科天玑、高通骁龙 8 Gen 系、寒武纪思元等)在实际落地应用中的公开结构与技术资料,深入解析 CPU-GPU-DSP-NPU 协同执行的体系结构、执行路径与调度逻辑。文章结合 Android NNAPI、Vulkan Compute、自定义调度器等工程实

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 8710

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【云原生】DevOps 环境搭建

说明:内存尽量给多点(2G以上),后面会安装一些软件,会占用内存。1.5.2、登陆gitlab(默认用户:root 密码:自定义)6、配置Jenkins Pipeline。2.2、安装jdk及jenkins。5、安装Harnor仓库见如下文档。1.2、下载gitlab包并安装。1.5、网页登陆配置gitlab。2.4、启动完成后安装必要插件。4、安装k8s集群见如下文档。二、Jenkins环境部署。2.3、启动jenkins。一、Gitlab环境部署。3.1、检查是否安装成功。

运维那些事儿 1165

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Kubernetes部署

问题来了:机器少手动启动容器还行;几十上百台服务器,成千上万个容器,手动管不过来:容器挂了怎么自动重启?访问量变大怎么自动多开容器?怎么把请求分发到多个容器?→ 这就需要,专门帮我们批量管理容器。

2301_82163761的博客 244

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

利用 Harbor 搭建企业级私有镜像仓库(文末赠书)

「点击图片获取最近两年爆款好文」背景docker中要使用镜像,一般会从本地、docker Hup公共仓库和其它第三方公共仓库中下载镜像,一般出于安全和外网(墙)资源下载速率的原因考虑...

民工哥的博客 1448

Rancher + Harbor + Docker + k8s环境管理

目标 192.168.239.155 Docker|Rancher 192.168.239.156 Docker|Docker-compose|Harbor 注:Harbor的所有服务组件都是在Docker中部署的,官方安装使用Docker-compose快速部署,所以我们需要安装Docker、Docker-compose。由于Harbor是基于Docker Registry V2版本, 要求Docker版本不小于1.10.0,Docker-compose版本不小于1.6.0。 安装

窦再兴的博客 3439

Harbor 部署安装

1. Harbor简介 Harbor是构建企业级私有docker镜像的仓库的开源解决方案,它是Docker Registry的更高级封装,它除了提供友好的Web UI界面,角色和用户权限管理,用户操作审计等功能外,它还整合了K8s的插件(Add-ons)仓库,即Helm通过chart方式下载,管理,安装K8s插件,而chartmuseum可以提供存储chart数据的仓库。 另外它还整合了两个开...

cuomer的博客 2890

Docker私有仓库Harbor介绍和部署记录

参考文档:https://www.cnblogs.com/kevingrace/p/6547616.html Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry 也是非常必要的。之前介绍了Docker私有仓库Registry,这里介绍另一款企业级Docker镜像仓库Harbor的部署和使用,在Kubernetes集群中,推荐使用Harbor仓库环境。 我们在日常Docker容器使用和管理过程中,渐

qq_15821487的博客 209

从小白到精通——Harbor企业级镜像仓库搭建与管理全攻略

Harbor 是 VMware 开源的企业级 Docker 镜像仓库系统,兼容 Docker Registry 协议,并提供。搭建一个供全公司研发使用的 Harbor 镜像中心,并集成 Jenkins 与 Kubernetes。Harbor 实际上是一个由多个容器组成的微服务系统,通常通过。Jenkins 自动构建并推送镜像至 Harbor。Harbor 提供 RESTful API。K8s 将自动从 Harbor 拉取镜像。Harbor 支持基于项目的访问控制。Harbor 自动扫描安全漏洞。

2501_93945836的博客 709

万字精讲,保姆级流程!Docker容器化环境下企业级Harbor私有镜像仓库搭建

本文介绍了企业级Harbor私有镜像仓库的搭建与运维实践。针对Docker容器化环境下公共仓库的痛点,通过配置Harbor私有仓库实现镜像安全管控、HTTPS访问和可视化管理。详细步骤包括:环境准备(主机配置、Docker安装)、Docker-Compose环境搭建、Harbor安装包部署,以及关键的安全证书配置(生成CA证书和私钥)。实践验证了Harbor在企业容器平台中的稳定性和实用性,为容器镜像全生命周期管理提供了可靠解决方案。

2503_90172382的博客 931

6-kubernetes私服

<文章感谢 xingdian > 文章目录kubernetes私服一:Registry1.部署docker registry2.更改名称并推送二:Harbor1.Harbor简史2.Harbor主要功能3.Harbor高可用方案4.Harbor组件5.部署6.浏览器访问三:Harbor使用1.创建用户2.创建项目3.仓库管理4.创建复制规则5.上传项目到私仓6.扩展 kubernetes私服 一:Registry 生产环境下,势必不能够每个机器都导入一遍从海外下载回来的镜像,这方法都不是可以长

Neko的博客 322

docker之harbor仓库8

官方文档地址:https://goharbor.io/docs/1.10/working-with-projects/working-with-images/pulling-pushing-images/

Redhat_yan 1092

企业级Docker镜像仓库搭建实战指南

最近在帮公司搭建私有Docker镜像仓库,踩了不少坑也积累了一些经验。企业级镜像仓库和简单的个人使用完全不同,需要考虑安全性、稳定性和运维便利性。下面分享我的实战经验,希望能帮到有类似需求的同行。这个平台提供现成的开发环境,可以免去复杂的配置过程,直接体验核心功能。我测试时发现它的部署流程特别简单,几分钟就能看到效果,对技术验证阶段很有帮助。整个项目从规划到上线用了约两个月时间,现在每天处理数千次拉取请求,运行稳定。通过这次实践,我们不仅解决了镜像管理问题,还建立了标准化的容器交付流程。

EmeraldWolf23的博客 157
上一篇: 使用pandoc xelatex转换md文档为pdf
下一篇: 在kubernetes集群上使用istio遇到的问题
anteoy
博客等级 码龄10年 24粉丝 83原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值