在K8S中,如何下载harbor的私有项目镜像?
在Kubernetes(K8s)中,要从私有的Harbor仓库拉取镜像并部署到集群,需要完成以下步骤:
-
配置 Harbor 凭证:
- 在 Kubernetes 中,可以通过创建一个
Secret
对象来存储 Harbor 仓库的认证信息。例如,可以创建一个 Docker-registry 类型的 Secret,包含用户名和密码或 token。
apiVersion: v1 kind: Secret metadata: name: harbor-credentials namespace: default # 根据实际情况选择namespace type: kubernetes.io/dockerconfigjson data: .dockerconfigjson: <base64-encoded-docker-config> 其中
<base64-encoded-docker-config>
是对如下JSON内容进行Base64编码后的结果:{ "auths": { "<harbor-url>": { "username": "<username>", "password": "<password>" } } } - 在 Kubernetes 中,可以通过创建一个
-
更新 Service Account 或 Pod 的 ImagePullSecrets:
- 将上面创建的 Secret 关联到你的 Service Account 或直接在 Pod 定义中指定 ImagePullSecrets,这样kubelet就会使用这些凭证去拉取私有仓库中的镜像。
对于Service Account:
apiVersion: v1 kind: ServiceAccount metadata: name: my-service-account secrets: - name: harbor-credentials 或者,在Pod的定义中直接设置ImagePullSecrets:
apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: my-container image: <harbor-url>/<project-name>/<image-name>:<tag> imagePullSecrets: - name: harbor-credentials -
部署应用:
使用包含上述ImagePullSecrets设置的YAML文件通过kubectl创建或更新资源对象,这样Kubernetes就能够自动在创建Pod时使用正确的凭证从Harbor私有仓库拉取镜像。
综上所述,如果Harbor设置了项目级别的访问权限,确保在Harbor管理界面为相应服务账户分配了足够的权限来访问该项目下的镜像。同时,也可以考虑使用基于角色的访问控制(RBAC)策略来进一步细化集群内的授权规则。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步