搜索

7.15.5.2. 准备 VDDK 镜像

download PDF

导入过程使用 VMware Virtual Disk Development Kit(VDDK)来复制 VMware 虚拟磁盘。

您可以下载 VDDK SDK,创建 VDDK 镜像,将镜像上传到镜像仓库,并将其添加到 v2v-vmware 配置映射中。

您可以配置内部 OpenShift Container Platform 镜像 registry 或 VDDK 镜像的安全外部镜像 registry。该 registry 需要可以被 OpenShift Virtualization 环境访问。

注意

在公共仓库中存储 VDDK 镜像可能会违反 VMware 许可证的条款。

7.15.5.2.1. 配置内部镜像 registry

您可以通过更新 Image Registry Operator 配置在裸机上配置内部 OpenShift Container Platform 镜像 registry。

您可以通过一个路由公开 registry,直接从 OpenShift Container Platform 集群内部或外部访问 registry。

更改镜像 registry 的管理状态

要启动镜像 registry,您必须将 Image Registry Operator 配置的 managementStateRemoved 改为 Managed

流程

  • managementState Image Registry Operator 配置从 Removed 改为 Managed。例如:

    $ oc patch configs.imageregistry.operator.openshift.io cluster --type merge --patch '{"spec":{"managementState":"Managed"}}'
为裸机和其他手动安装配置 registry 存储

作为集群管理员,在安装后需要配置 registry 来使用存储。

先决条件

  • 集群管理员权限。
  • 使用手动置备的 Red Hat Enterprise Linux CoreOS(RHCOS)节点(如裸机)的集群。
  • 为集群置备的持久性存储,如 Red Hat OpenShift Container Storage。

    重要

    当您只有一个副本时,OpenShift Container Platform 支持对镜像 registry 存储的 ReadWriteOnce 访问。要部署支持高可用性的镜像 registry,需要两个或多个副本,ReadWriteMany 访问。

  • 必须具有 100Gi 容量。

流程

  1. 要将 registry 配置为使用存储,请更改 configs .imageregistry/cluster 资源中的 spec. storage.pvc

    注意

    使用共享存储时,请查看您的安全设置以防止外部访问。

  2. 验证您没有 registry pod:

    $ oc get pod -n openshift-image-registry
    注意

    如果存储类型为 emptyDIR,则副本数不能大于 1

  3. 检查 registry 配置:

    $ oc edit configs.imageregistry.operator.openshift.io

    输出示例

    storage:
      pvc:
        claim:

    claim 字段留空以允许自动创建 image-registry-storage PVC。

  4. 检查 clusteroperator 状态:

    $ oc get clusteroperator image-registry
  5. 确保 registry 设置为 managed,以启用镜像的构建和推送。

    • 运行:

      $ oc edit configs.imageregistry/cluster

      然后,更改行

      managementState: Removed

      managementState: Managed
直接从集群访问registry

您可以从集群内部访问registry。

流程

通过使用内部路由从集群访问registry:

  1. 通过获取节点的名称来访问节点:

    $ oc get nodes
    $ oc debug nodes/<node_name>
  2. 要使用节点上的 ocpodman 等工具程序,请运行以下命令:

    sh-4.2# chroot /host
  3. 使用您的访问令牌登录到容器镜像registry:

    sh-4.2# oc login -u kubeadmin -p <password_from_install_log> https://api-int.<cluster_name>.<base_domain>:6443
    sh-4.2# podman login -u kubeadmin -p $(oc whoami -t) image-registry.openshift-image-registry.svc:5000

    您应该看到一条确认登录的消息,例如:

    Login Succeeded!
    注意

    用户名可以是任何值,令牌包含了所有必要的信息。如果用户名包含冒号,则会导致登录失败。

    因为 Image Registry Operator 创建了路由,所以它将与 default-route-openshift-image-registry.<cluster_name> 类似。

  4. 针对您的registry执行podman pullpodman push操作:

    重要

    您可以抓取任意镜像,但是如果已添加了system:registry角色,则只能将镜像推送到您自己的registry中。

    在以下示例中,使用:

    组件

    <registry_ip>

    172.30.124.220

    <port>

    5000

    <project>

    openshift

    <image>

    image

    <tag>

    忽略 (默认为 latest)

    1. 抓取任意镜像:

      sh-4.2# podman pull name.io/image
    2. 使用 <registry_ip>:<port>/<project>/<image> 格式标记(tag)新镜像。项目名称必须出现在这个 pull 规范中,以供OpenShift Container Platform 把这个镜像正确放置在 registry 中,并在以后正确访问 registry 中的这个镜像:

      sh-4.2# podman tag name.io/image image-registry.openshift-image-registry.svc:5000/openshift/image
      注意

      您必须具有指定项目的system:image-builder角色,该角色允许用户写或推送镜像。否则,下一步中的podman push将失败。为了进行测试,您可以创建一个新项目来推送镜像。

    3. 将新标记的镜像推送到 registry:

      sh-4.2# podman push image-registry.openshift-image-registry.svc:5000/openshift/image
手动公开受保护的registry

通过使用路由可以开放从外部访问OpenShift Container Platform registry的通道,用户不再需要从集群内部登录到OpenShift Container Platform registry。这样,您可以使用路由地址从集群外部登录 registry,并使用路由主机标记并推送到现有项目。

先决条件:

  • 以下的先决条件会被自动执行:

    • 部署 Registry Operator。
    • 部署 Ingress Operator。

流程

您可以使用configs.imageregistry.operator.openshift.io资源中的DefaultRoute参数或使用自定义路由来公开路由。

使用DefaultRoute公开registry:

  1. DefaultRoute设置为True

    $ oc patch configs.imageregistry.operator.openshift.io/cluster --patch '{"spec":{"defaultRoute":true}}' --type=merge
  2. 使用 podman 登录:

    $ HOST=$(oc get route default-route -n openshift-image-registry --template='{{ .spec.host }}')
    $ podman login -u kubeadmin -p $(oc whoami -t) --tls-verify=false $HOST 1
    1
    如果集群的默认路由证书不受信任,则需要--tls-verify=false 。您可以将一个自定义的可信证书设置为 Ingress Operator 的默认证书。

使用自定义路由公开registry:

  1. 使用路由的 TLS 密钥创建一个 secret:

    $ oc create secret tls public-route-tls \
        -n openshift-image-registry \
        --cert=</path/to/tls.crt> \
        --key=</path/to/tls.key>

    此步骤是可选的。如果不创建一个secret,则路由将使用Ingress Operator的默认TLS配置。

  2. 在 Registry Operator 中:

    spec:
      routes:
        - name: public-routes
          hostname: myregistry.mycorp.organization
          secretName: public-route-tls
    ...
    注意

    如果为registry的路由提供了一个自定义的 TLS 配置,则仅需设置secretName

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.