【问题标题】:How to configure Harbor for SCDF?如何为 SCDF 配置 Harbor?
【发布时间】:2022-01-02 22:01:07
【问题描述】:

我正在尝试在microk8s 1.18.20 中使用Harbor 注册表和SCDF 2.9.1
我成功地配置 SCDF 以通过在 SCDF 服务器配置映射中添加它来检索我的应用程序的 Docker 标签:

spring:
  cloud:
    dataflow:
      container:
        registry-configurations:
          harbor:
            registry-host: myhost
            authorization-type: dockeroauth2
            user: myuser
            secret: mypwd
            disable-ssl-verification: true
            extra:
              "registryAuthUri" : 'https://myhost/service/token?service=harbor-registry&scope=repository:{repository}:pull'

然后为了拉取图像,我用这个命令行创建了一个秘密(在配置我的本地 Docker 守护程序之后):

microk8s.kubectl create secret generic harbor-credentials \
    --from-file=.dockerconfigjson=/home/myuser/.docker/config.json \
    --type=kubernetes.io/dockerconfigjson

并更改 Skipper 和 SCDF Config Map 以将其用于:

spring.cloud.skipper.server.platform.kubernetes.accounts.default.imagePullSecret=harbor-credentials
spring.cloud.dataflow.task.platform.kubernetes.accounts.default.imagePullSecret=harbor-credentials

但是当我尝试在流中部署我的应用程序时,我在拉取图像时收到此错误:

Head "https://myhost/v2/scdf/myapp/manifests/latest": x509: certificate signed by unknown authority

我必须如何以及在哪里配置 Harbor 自签名证书,以便 SCDF/Skipper 可以部署应用程序?
理想情况下,我也更愿意为 Docker 标签删除 disable-ssl-verification: true

【问题讨论】:

    标签: docker kubernetes spring-cloud-dataflow self-signed-certificate harbor


    【解决方案1】:

    解决方案非常简单:我只需复制 /ets/ssl/certs 目录中的 Harbor ca.crt 文件(从 Harbor UI 下载)。

    您也可以直接创建密钥,而无需配置 Docker 守护程序,例如:

    microk8s.kubectl create secret docker-registry harbor-credentials \
        --docker-server=hostname \
        --docker-username='user' \
        --docker-password=pwd
    

    另外,如果你想使用 Harbor 作为来自 docker.io 的 OCI 镜像的代理,你可以通过在安装过程中添加这些属性来一次性配置 SCDF(当然是在配置 Harbor 代理缓存项目 dockerhub-proxy 之后):

    global.imageRegistry = hostname/dockerhub-proxy
    global.imagePullSecrets = [harbor-credentials]
    

    在这种情况下,您的用户应该有权拉取您需要的每个 Harbor 项目。
    然后所有的图片都会从Harbor中拉出来,包括kafka、skipper、zookeeper等……

    编辑: 我分享了一种通过 K8S 密钥配置 Harbor 凭据的更优雅的方法:将密钥添加为像 this 这样的卷。
    容器注册表是自动配置的。如果你需要添加选项,你可以像这样在配置映射中添加它:

    spring:
      cloud:
        dataflow:
          container:
            registry-configurations:
              harbor:
                registry-host: myhost
                disable-ssl-verification: true
    

    秘密和附加配置之间的映射是基于秘密中的registry-hostdocker-server属性进行的,如果我理解的话

    所有这些都可以使用 Helm 图表(自 v5.0.1 起)和这样的 YAML 一次性完成:

    server:
      configuration:
        containerRegistries:
          harbor:
            registry-host: hostname
            disable-ssl-verification: true
      extraVolumes:
        - name: harbor
          secret:
            secretName: harbor-credentials
      extraVolumeMounts:
        - name: harbor
          readOnly: true
          mountPath: /etc/secrets/harbor
    global:
      imageRegistry: hostname/dockerhub-proxy
      imagePullSecrets: [harbor-credentials]
    deployer:
      imagePullSecrets: [harbor-credentials]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-07
      • 2017-09-19
      • 2021-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多