如何让 Harbor 镜像仓库优雅接入 MinIO 对象存储 | 您所在的位置:网站首页 › oss对接minio › 如何让 Harbor 镜像仓库优雅接入 MinIO 对象存储 |
公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! ❝本文转自大数据老司机,原文:https://www.cnblogs.com/liugp/p/16632616.html,版权归原作者所有。 Harbor 的部署之前使用的存储是 NFS,虽然可以使用 rsync+inotify 做数据同步做解决单点问题,但是 NFS 效率 / 性能有限,没有对象存储那么强大,所以一般使用对象存储居多,这里选用 MinIO 对象存储软件,当然也可以使用 Ceph 或者其它对象存储。都部署在 k8s 集群上。 MinIO on K8S 部署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-namespacenotes 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 -owidewebUI 登录 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 安装 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常用命令参数: 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 部署 创建 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 实验室设备网 版权所有 |