如何让 Harbor 镜像仓库优雅接入 MinIO 对象存储 您所在的位置:网站首页 oss对接minio 如何让 Harbor 镜像仓库优雅接入 MinIO 对象存储

如何让 Harbor 镜像仓库优雅接入 MinIO 对象存储

2024-06-03 01:31| 来源: 网络整理| 查看: 265

公众号关注 「奇妙的 Linux 世界」

设为「星标」,每天带你玩转 Linux !

74c5b209668ff5a3468e3ad9d518b25c.jpeg

本文转自大数据老司机,原文:https://www.cnblogs.com/liugp/p/16632616.html,版权归原作者所有。

Harbor 的部署之前使用的存储是 NFS,虽然可以使用 rsync+inotify 做数据同步做解决单点问题,但是 NFS 效率 / 性能有限,没有对象存储那么强大,所以一般使用对象存储居多,这里选用 MinIO 对象存储软件,当然也可以使用 Ceph 或者其它对象存储。都部署在 k8s 集群上。

MinIO on K8S 部署 0eaf3f57914502bb9ad3b49569650fb3.png

MinIO 的介绍可以参考我这篇文章:高性能分布式对象存储——MinIO(环境部署)[1]

这里使用 Helm 部署 MinIO ,关于 Helm 的介绍可以参考官方文档[2],部署步骤如下:

下载安装 MinIO 包 $ mkdir -p /opt/k8s/bigdata/minio;cd /opt/k8s/bigdata/minio # 添加数据源 $ helm repo add bitnami https://charts.bitnami.com/bitnami # 下载 $ helm pull bitnami/minio # 解压部署包 $ tar -xf minio-11.9.2.tgz 修改配置

添加文件 minio/templates/storage-class.yaml,内容如下:

kind: StorageClass apiVersion: storage.k8s.io/v1 metadata:   name: minio-local-storage provisioner: kubernetes.io/no-provisioner volumeBindingMode: WaitForFirstConsumer

添加 pv 配置 minio/templates/pv.yaml

{{- range .Values.persistence.local }} --- apiVersion: v1 kind: PersistentVolume metadata:   name: {{ .name }} spec:   capacity:     storage: {{ .size }}   accessModes:   - ReadWriteOnce   persistentVolumeReclaimPolicy: Retain   storageClassName: minio-local-storage   local:     path: {{ .path }}   nodeAffinity:     required:       nodeSelectorTerms:       - matchExpressions:         - key: kubernetes.io/hostname           operator: In           values:           - {{ .host }}  --- {{- end }}

修改配置 minio/values.yaml

service:   type: NodePort   nodePorts:     api: "30900"     console: "30901" # --- # 这里先部署单节点,后面会详细讲在k8s中部署分布式minio,这里的重点是Harbor对接minio mode: standalone # --- statefulset:   replicaCount: 4 # --- persistence   enabled: true   storageClass: minio-local-storage   size: 1Gi   local:     - name: minio-pv-0       size: 1Gi       path: /opt/k8s/bigdata/minio/data       host: local-168-182-110 ❝

【温馨提示】需要提前在对应的节点上创建对应的目录。

开始部署 $ cd /opt/k8s/bigdata/minio $ helm install minio ./minio \   --namespace=minio \   --create-namespace

notes

NAME: minio LAST DEPLOYED: Sun Aug 28 09:13:06 2022 NAMESPACE: minio STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: CHART NAME: minio CHART VERSION: 11.9.2 APP VERSION: 2022.8.22 ** Please be patient while the chart is being deployed ** MinIO® can be accessed via port  on the following DNS name from within your cluster:    minio.minio.svc.cluster.local To get your credentials run:    export ROOT_USER=$(kubectl get secret --namespace minio minio -o jsonpath="{.data.root-user}" | base64 -d)    export ROOT_PASSWORD=$(kubectl get secret --namespace minio minio -o jsonpath="{.data.root-password}" | base64 -d) To connect to your MinIO® server using a client: - Run a MinIO® Client pod and append the desired command (e.g. 'admin info'):    kubectl run --namespace minio minio-client \      --rm --tty -i --restart='Never' \      --env MINIO_SERVER_ROOT_USER=$ROOT_USER \      --env MINIO_SERVER_ROOT_PASSWORD=$ROOT_PASSWORD \      --env MINIO_SERVER_HOST=minio \      --image docker.io/bitnami/minio-client:2022.8.11-debian-11-r3 -- admin info minio To access the MinIO® web UI: - Get the MinIO® URL:    export NODE_PORT=$(kubectl get --namespace minio -o jsonpath="{.spec.ports[0].nodePort}" services minio)    export NODE_IP=$(kubectl get nodes --namespace minio -o jsonpath="{.items[0].status.addresses[0].address}")    echo "MinIO® web URL: http://$NODE_IP:$NODE_PORT/minio"

查看

kubectl get pods,svc -n minio -owide a99a5437af5a9c3261c72e2fbcc734ef.png

webUI  登录 http://local-168-182-110:30901。

账号密码:

$ export ROOT_USER=$(kubectl get secret --namespace minio minio -o jsonpath="{.data.root-user}" | base64 -d) $ echo $ROOT_USER $ export ROOT_PASSWORD=$(kubectl get secret --namespace minio minio -o jsonpath="{.data.root-password}" | base64 -d) $ echo $ROOT_PASSWORD 5e96b53f8d6d07c29912d216274059e5.png 4181fb361dbaf7d90915262161329973.png 安装 mc 测试 $ cd /opt/k8s/bigdata/minio $ wget https://dl.min.io/client/mc/release/linux-amd64/mc $ chmod +x mc $ ln -s /opt/k8s/bigdata/minio/mc /usr/bin/mc $ mc --help

添加 MinIO 存储服务

$ mc config host add minio http://local-168-182-110:30900 admin Kgb4zZT1cU $ mc admin info minio # 并创建bucket harbor $ mc mb minio/harbor $ mc ls minio f4b39c8b9f7864b37337f9a5df9acc8a.png

常用命令参数:

ls       列出文件和文件夹。 mb       创建一个存储桶或一个文件夹。 cat      显示文件和对象内容。 pipe     将一个STDIN重定向到一个对象或者文件或者STDOUT。 share    生成用于共享的URL。 cp       拷贝文件和对象。 mirror   给存储桶和文件夹做镜像。 find     基于参数查找文件。 diff     对两个文件夹或者存储桶比较差异。 rm       删除文件和对象。 events   管理对象通知。 watch    监听文件和对象的事件。 policy   管理访问策略。 session  为cp命令管理保存的会话。 config   管理mc配置文件。 update   检查软件更新。 version  输出版本信息。 卸载 $ helm uninstall minio -n minio $ kubectl delete ns minio --force Harbor on K8S 部署 6fde37be1060fb2fec19fdd59bf21227.png 创建 stl 证书 $ mkdir /opt/k8s/bigdata/harbor/stl && cd /opt/k8s/bigdata/harbor/stl # 生成 CA 证书私钥 $ openssl genrsa -out ca.key 4096 # 生成 CA 证书 $ openssl req -x509 -new -nodes -sha512 -days 3650 \  -subj "/C=CN/ST=Guangdong/L=Shenzhen/O=harbor/OU=harbor/CN=myharbor-minio.com" \  -key ca.key \  -out ca.crt # 创建域名证书,生成私钥 $ openssl genrsa -out myharbor-minio.com.key 4096 # 生成证书签名请求 CSR $ openssl req -sha512 -new \     -subj "/C=CN/ST=Guangdong/L=Shenzhen/O=harbor/OU=harbor/CN=myharbor-minio.com" \     -key myharbor-minio.com.key \     -out myharbor-minio.com.csr # 生成 x509 v3 扩展 $ cat > v3.ext 


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有