×

作为Red Hat OpenShift Service on AWS原生资源的镜像流,可与Red Hat OpenShift Service on AWS中所有可用的原生资源一起使用,例如BuildDeploymentConfigs资源。也可以使它们与原生Kubernetes资源一起使用,例如JobReplicationControllerReplicaSet或Kubernetes Deployment资源。

使用Kubernetes资源启用镜像流

使用Kubernetes资源与镜像流一起使用时,您只能引用与资源位于同一项目中的镜像流。镜像流引用必须由单个段值组成,例如ruby:2.5,其中ruby是具有名为2.5的标签的镜像流的名称,并且与进行引用的资源位于同一项目中。

不要在默认项目中运行工作负载或共享对默认项目的访问权限。默认项目保留用于运行核心集群组件。

以下默认项目被认为是高度特权的:defaultkube-publickube-systemopenshiftopenshift-infraopenshift-node以及其他系统创建的且其openshift.io/run-level标签设置为01的项目。依赖于准入插件的功能(例如Pod安全准入、安全上下文约束、集群资源配额和镜像引用解析)在高度特权的项目中不起作用。

有两种方法可以使用Kubernetes资源启用镜像流

  • 在特定资源上启用镜像流解析。这仅允许此资源在image字段中使用镜像流名称。

  • 在镜像流上启用镜像流解析。这允许所有指向此镜像流的资源在image字段中使用它。

步骤

您可以使用oc set image-lookup在特定资源上启用镜像流解析,或在镜像流上启用镜像流解析。

  1. 要允许所有资源引用名为mysql的镜像流,请输入以下命令

    $ oc set image-lookup mysql

    这会将Imagestream.spec.lookupPolicy.local字段设置为true。

    启用了镜像查找的镜像流
    apiVersion: image.openshift.io/v1
    kind: ImageStream
    metadata:
      annotations:
        openshift.io/display-name: mysql
      name: mysql
      namespace: myproject
    spec:
      lookupPolicy:
        local: true

    启用后,该行为将对镜像流中的所有标签启用。

  2. 然后您可以查询镜像流并查看是否设置了该选项

    $ oc set image-lookup imagestream --list

您可以在特定资源上启用镜像查找。

  • 要允许名为mysql的Kubernetes部署使用镜像流,请运行以下命令

    $ oc set image-lookup deploy/mysql

    这会设置部署上的alpha.image.policy.openshift.io/resolve-names注释。

    启用了镜像查找的部署
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: mysql
      namespace: myproject
    spec:
      replicas: 1
      template:
        metadata:
          annotations:
            alpha.image.policy.openshift.io/resolve-names: '*'
        spec:
          containers:
          - image: mysql:latest
            imagePullPolicy: Always
            name: mysql

您可以禁用镜像查找。

  • 要禁用镜像查找,请传递--enabled=false

    $ oc set image-lookup deploy/mysql --enabled=false