k8s使用harbor私有仓库
admin
2023-03-27 19:41:33
0

1、登录Docker

通过注册表进行身份验证才能提取私有映像:

docker login  registry.hello.com

出现提示时,输入您的Docker用户名和密码。登录过程将创建或更新config.json包含授权令牌的文件。

查看config.json文件:

cat ~/.docker/config.json

{

       "auths": {
                "registry.hello.com": {
                        "auth": "YWRtaW46YWRtaW4xMjM="
                }
        },
        "HttpHeaders": {
                "User-Agent": "Docker-Client/18.09.0 (linux)"
        }
}

2、根据现有Docker凭证创建密钥

Kubernetes集群使用Secret docker-registry类型的密钥通过容器注册表进行身份验证以提取私有映像。如果您已经运行过docker login,则可以将该凭证复制到Kubernetes中:

kubectl create secret generic harbor \    #命名为harbor

    --from-file=.dockerconfigjson=/root/.docker/config.json \

   --type=kubernetes.io/dockerconfigjson

如果您需要更多控制权(例如,在新密钥上设置名称空间或标签),则可以在存储密钥之前自定义密钥。

务必:

    将数据项的名称设置为 .dockerconfigjson

    base64对docker文件进行编码并粘贴该字符串,将其作为字段的值不间断 data[".dockerconfigjson"]

设置type为kubernetes.io/dockerconfigjson

apiVersion: v1
data:
  .dockerconfigjson: eyJhdXRocyI6eyJyZWdpc3RyeS5jbi1oYW5nemhvdS5hbGl5dW5jcy5jb20iOnsicGFzc3dvcmQiOiJFY29uYWdlQGs4cyIsInVzZXJuYW1lIjoiazhzQGVjb25hZ2UifX19
kind: Secret
metadata:
  name: harbor
  namespace: default
type: kubernetes.io/dockerconfigjson

如果收到错误消息 `error: no objects passed to create`,这可能意味着 base64 编码的字符串无效。如果您收到的错误类似 `Secret "myregistrykey" is invalid: data[.dockerconfigjson]: invalid value ...`,这意

味着数据已成功地编码为 un-base64,但无法解析为一个 `.docker/config.json` 文件。

3、在 pod 上引用 imagePullSecrets

imagePullSecrets:

name: harbor

k8s使用harbor私有仓库

4、使用 Docker 配置创建一个 Secret

kubectl create secret docker-registry myregistrykey \
--docker-server=registry.hello.com --docker-username=admin \
--docker-password=admin123

Pod 只能引用它们自己命名空间中的镜像拉取 secret,因此,每个命名空间都需要完成一次此过程

5、应用场景

有许多配置私有仓库的解决方案。以下是一些常见的用例和建议的解决方案。

    1.集群只运行非专有(例如,开放源码)镜像。不需要隐藏镜像。在 Docker hub 上使用公共镜像

             不需要配置。

            在 GCE 或 GKE 上,自动使用本地镜像来提高速度和可用性。

    2.集群运行一些私有镜像,这些镜像应该对公司以外用户进行隐藏,但对所有集群用户都是可见的。

             使用托管的 Docker 仓库。它可能托管在 Docker Hub 上,或其它地方。像上面描述的那样在每个节点上手动配置 .docker/config.json。

             或者,在防火墙后面运行内部私有仓库,并打开读取访问权限。不需要 Kubernetes 配置。

             或者,在 GCE 或 GKE 上,使用项目的 Google 容器仓库。与手动节点配置相比,集群自动伸缩会更好地工作。

             或者,在更改节点配置不方便的集群上,使用 imagePullSecrets。

    3.拥有专有镜像的集群,其中一些需要更严格的访问控制。

             确保 AlwaysPullImages 准入控制器 打开。否则,所有 pod 都可能访问所有的镜像。

             将敏感数据移动到 “Secret” 资源中,而不是将其打包到镜像中。

    4.多租户集群,每个租户都需要自己的私有仓库。

             确保 AlwaysPullImages 准入控制器 打开。否则,所有 pod 都可能访问所有的镜像。

             运行需要授权的私有仓库。为每个租户生成仓库凭证,将其转换为 secret,并将 secret 填充到每个租户命名空间。

             租户将该 secret 添加到每个命名空间的 imagePullSecrets 中。

相关内容

热门资讯

特朗普下令不打了,美国的“余粮... 可以说戛然而止,快得让很多人都无法适应。前两周,每一天美国都要打击伊朗一通。就在7月24日白宫会议前...
穆杰塔巴最新表态:支持黎真主党 △伊朗最高领袖穆杰塔巴·哈梅内伊(资料图)当地时间7月26日晚,伊朗最高领袖穆杰塔巴·哈梅内伊对黎巴...
美军瘫痪一艘驶向伊朗的油轮,特... 美国总统特朗普虽下令暂停打击伊朗,但美军仍在执行对霍尔木兹海峡的封锁任务。针对美军瘫痪一艘驶向伊朗油...
“小牌大耍”的底气到底是哪里来... 澎湃首席评论员 李平这两天,“艺人李权哲乘高铁占座事件”在网上引发热议,该艺人参加的活动主办方曾发布...
越南籍船舶南海遇险沉没,中方已... 据凤凰卫视报道,一艘越南船舶7月24日夜间在越南庆和以东220海里附近遇险沉没,船上共62名越南籍人...
李权哲占座、蒙面、装死:娱乐圈... 你买了一张高铁一等座的票,找到自己的位置,18A。有人坐着。你拿出手机看了眼购票记录——没错,18A...
杭州景区咖啡店闯入1条幼蛇,仅... 夏天气温高、湿度大,蛇类活动进入高峰期,千万别被“小蛇无害”的刻板印象骗了!有些幼蛇看着迷你可爱,实...
AI开源公开信签署企业增至50... IT之家 7 月 26 日消息,英伟达、微软、IBM、Meta 等 25 家美国科技企业本周(7 月...
南阳快手短视频代运营企业的服务... 在短视频平台快速发展的背景下,企业通过快手等渠道进行内容运营已成为常见的市场动作。对于希望借助短视频...
普通人该如何跟上科技发展的步伐 这个被称作科技的词汇, 听起来既有宏大之感, 又颇为遥远, 好似仅仅归属于在实验室里专心致志钻研的科...