k8s使用harbor私有仓库-创新互联
1、登录Docker
10年积累的网站建设、成都做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有沁水免费网站建设让你可以放心的选择与我们合作。通过注册表进行身份验证才能提取私有映像:
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
4、使用 Docker 配置创建一个 Secret
kubectl create secret docker-registry myregistrykey \ --docker-server=registry.hello.com --docker-username=admin \ --docker-password=admin123Pod 只能引用它们自己命名空间中的镜像拉取 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 中。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
名称栏目:k8s使用harbor私有仓库-创新互联
网页URL:http://cdiso.cn/article/esdoo.html