作者信息:https://home.cnblogs.com/u/huangjiabobk

在K8S中,如何下载harbor的私有项目镜像?

在Kubernetes(K8s)中,要从私有的Harbor仓库拉取镜像并部署到集群,需要完成以下步骤:

  1. 配置 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>"
        }
      }
    }
    
  2. 更新 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
    
  3. 部署应用
    使用包含上述ImagePullSecrets设置的YAML文件通过kubectl创建或更新资源对象,这样Kubernetes就能够自动在创建Pod时使用正确的凭证从Harbor私有仓库拉取镜像。

综上所述,如果Harbor设置了项目级别的访问权限,确保在Harbor管理界面为相应服务账户分配了足够的权限来访问该项目下的镜像。同时,也可以考虑使用基于角色的访问控制(RBAC)策略来进一步细化集群内的授权规则。

posted @ 2024-02-23 09:37  黄嘉波  阅读(138)  评论(0编辑  收藏  举报
版权声明:原创作品,谢绝转载!否则将追究法律责任。--作者 黄嘉波