• Docker Registry
    • 使用不同的 Docker Registry
    • 更新 config.json
    • 使用 Docker Hub
      • 为你的 registry 挂载凭证

    Docker Registry

    配置你的 docker registry

    为了能够创建和发布 docker 镜像,我们需要使用 Docker Registry。

    默认,Jenkins X 会在系统命名空间中带一个 Docker Registry,以及 Jenkins 和 Nexus。当 Docker Registry 运行在你的 Kubernetes 集群中,它会在集群内部使用,它很难通过带有自签名证书的 HTTPS 暴露 —— 因此,在你的 Kubernetes 集群服务中,我们默认使用 insecure 的 Docker Registry。

    使用不同的 Docker Registry

    如果你使用公有云的话,可能希望利用你的云服务商的 Docker Registry;或者复用你已有的 Docker Registry。

    为了指定 Docker Registry 的主机、端口,你可以使用 Jenkins 控制台:

    1. jx console

    然后,定位到 管理 Jenkins -> 系统配置,并修改环境变量 DOCKER_REGISTRY 指向你选择的 Docker Registry。

    另一种方法是,把下面的内容添加到你的自定义 Jenkins X 平台 helm charts 的values.yaml 文件中:

    1. jenkins:
    2. Servers:
    3. Global:
    4. EnvVars:
    5. DOCKER_REGISTRY: "gcr.io"

    更新 config.json

    下一步,你需要为 docker 更新 config.json 中的认证。

    如果为你的 Docker Registry 创建一个 config.json 文件,例如:Google 云的 GCR,它可能看起来像:

    1. {
    2. "credHelpers": {
    3. "gcr.io": "gcloud",
    4. "us.gcr.io": "gcloud",
    5. "eu.gcr.io": "gcloud",
    6. "asia.gcr.io": "gcloud",
    7. "staging-k8s.gcr.io": "gcloud"
    8. }
    9. }

    对于 AWS 则像:

    1. {
    2. "credsStore": "ecr-login"
    3. }

    然后需要更新凭据 jenkins-docker-cfg ,你可以执行以下操作:

    1. kubectl delete secret jenkins-docker-cfg
    2. kubectl create secret generic jenkins-docker-cfg --from-file=./config.json

    使用 Docker Hub

    如果你想要发布你的镜像到 Docker Hub 当中 ,则需要修改你的 config.json 像下面那样:

    1. {
    2. "auths": {
    3. "https://index.docker.io/v1/": {
    4. "auth": "MyDockerHubToken",
    5. "email": "myemail@acme.com"
    6. }
    7. }
    8. }

    为你的 registry 挂载凭证

    你的 docker registry 需要将凭证挂载到 Pod 模板当中。