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

在K8S中,请问harbor的secret创建能否直接创建资源清单?

答案:当然可以,在Kubernetes(简称K8S)中,为了允许集群中的Pod能够从Harbor私有仓库拉取镜像,您可以直接通过编写资源清单(YAML文件)来创建一个Secret对象。这个Secret将包含访问Harbor所需的认证信息。以下是一个示例:

apiVersion: v1
kind: Secret
metadata:
  name: harbor-registry-secret # 自定义Secret名称
  namespace: default # 指定namespace,如果需要在特定namespace下使用

type: kubernetes.io/dockerconfigjson # 对于Docker注册表类型的认证信息使用此类型

data:
  .dockerconfigjson: eyJhdXRocyI6IHsiaG9tZWJhcmstbG9jYWw6ODA4MCJ8eyJ1c2VybmFtZSI6ImFkbWluIiwicGFzc3dvcmQiOiIxMjM0NTYiLCJpZGVudGl0eSI6bnVsbCwiYXV0aCI6IlNFUlZFUl9BRERSRVNTIn19 # 这里是base64编码后的.dockerconfigjson内容

# 上面的.base64encodeddockerconfigjson部分应替换为实际的Base64编码内容,例如:
# {"auths": { "<harbor-server>:<port>": { "username": "admin", "password": "123456", "identitytoken": null, "auth": "SERVICETOKEN" } } }
# 其中,"<harbor-server>:<port>" 是 Harbor 的服务器地址和端口,"admin" 和 "123456" 分别是用户名和密码,"SERVICETOKEN" 是服务令牌(如果是使用令牌而非密码的话)

然后,将此 Secret 关联到 Pod 或者 Service Account 中,以便在拉取镜像时使用这些凭据:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-container
        image: harbor.example.com/my-project/my-image:latest
      imagePullSecrets:
      - name: harbor-registry-secret # 引用上面创建的Secret名称

综上所述,请务必要确保将.dockerconfigjson字段中的Base64编码字符串替换为您的Harbor认证信息经过正确Base64编码后的实际内容。

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