2.10. 在构建中使用红帽订阅
按照以下部分的内容,在 OpenShift Container Platform 构建中安装红帽订阅内容。
2.10.1. 为红帽通用基础镜像创建镜像流标签
要在构建中安装 Red Hat Enterprise Linux (RHEL) 软件包,您可以创建一个镜像流标签来引用 Red Hat Universal Base Image (UBI)。
要让 UBI 在集群中的每个项目中都可用,您需要将镜像流标签添加到 openshift
命名空间中。否则,若要使其在一个特定项目中可用,您要将镜像流标签添加到该项目。
镜像流标签使用安装 pull secret 中的 registry.redhat.io
凭证授予对 UBI 的访问权限,而无需向其他用户公开 pull secret。这个方法要求每个开发人员使用项目中的 registry.redhat.io
凭证安装 pull secret 更为方便。
流程
要在
openshift
命名空间中创建ImageStreamTag
资源,以便在所有项目中都可以使用它,请输入以下命令:$ oc tag --source=docker registry.redhat.io/ubi9/ubi:latest ubi9:latest -n openshift
提示您还可以应用以下 YAML 在
openshift
命名空间中创建ImageStreamTag
资源:apiVersion: image.openshift.io/v1 kind: ImageStream metadata: name: ubi9 namespace: openshift spec: tags: - from: kind: DockerImage name: registry.redhat.io/ubi9/ubi:latest name: latest referencePolicy: type: Source
要在单个项目中创建
ImageStreamTag
资源,请输入以下命令:$ oc tag --source=docker registry.redhat.io/ubi9/ubi:latest ubi:latest
提示您还可以应用以下 YAML 在单个项目中创建
ImageStreamTag
资源:apiVersion: image.openshift.io/v1 kind: ImageStream metadata: name: ubi9 spec: tags: - from: kind: DockerImage name: registry.redhat.io/ubi9/ubi:latest name: latest referencePolicy: type: Source
2.10.2. 将订阅权利添加为构建 secret
使用红帽订阅安装内容的构建需要包括做为一个构件 secret 的权利密钥。
先决条件
- 您可以通过您的订阅访问 Red Hat Enterprise Linux (RHEL) 软件包仓库。当集群已正确订阅时,Insights Operator 会自动创建用于访问这些仓库的权利 secret。
-
您必须可以使用具有
cluster-admin
角色的用户访问集群,或者具有访问openshift-config-managed
项目中的 secret 的权限。
流程
输入以下命令将
openshift-config-managed
命名空间中的授权 secret 复制到构建的命名空间:$ cat << EOF > secret-template.txt kind: Secret apiVersion: v1 metadata: name: etc-pki-entitlement type: Opaque data: {{ range \$key, \$value := .data }} {{ \$key }}: {{ \$value }} {{ end }} EOF $ oc get secret etc-pki-entitlement -n openshift-config-managed -o=go-template-file --template=secret-template.txt | oc apply -f -
在构建配置的 Docker 策略中将 etc-pki-entitlement secret 添加为构建卷:
strategy: dockerStrategy: from: kind: ImageStreamTag name: ubi9:latest volumes: - name: etc-pki-entitlement mounts: - destinationPath: /etc/pki/entitlement source: type: Secret secret: secretName: etc-pki-entitlement
2.10.3. 使用 Subscription Manager 运行构建
2.10.3.1. 使用 Subscription Manager 执行 Docker 构建
Docker 策略构建可以使用 yum
或 dnf
安装其他 Red Hat Enterprise Linux (RHEL)软件包。
先决条件
- 必须将授权密钥添加为构建策略卷。
流程
使用以下示例 Dockerfile 来通过 Subscription Manager 安装内容:
FROM registry.redhat.io/ubi9/ubi:latest RUN rm -rf /etc/rhsm-host 1 RUN yum --enablerepo=codeready-builder-for-rhel-9-x86_64-rpms install \ 2 nss_wrapper \ uid_wrapper -y && \ yum clean all -y RUN ln -s /run/secrets/rhsm /etc/rhsm-host 3
2.10.4. 使用 Red Hat Satellite 订阅运行构建
2.10.4.1. 将 Red Hat Satellite 配置添加到构建中
使用 Red Hat Satellite 安装内容的构建必须提供适当的配置,以便从 Satellite 存储库获取内容。
先决条件
您必须提供或创建与
yum
兼容的存储库配置文件,该文件将从 Satellite 实例下载内容。仓库配置示例
[test-<name>] name=test-<number> baseurl = https://satellite.../content/dist/rhel/server/7/7Server/x86_64/os enabled=1 gpgcheck=0 sslverify=0 sslclientkey = /etc/pki/entitlement/...-key.pem sslclientcert = /etc/pki/entitlement/....pem
流程
输入以下命令来创建包含 Satellite 存储库配置文件的
ConfigMap
对象:$ oc create configmap yum-repos-d --from-file /path/to/satellite.repo
将 Satellite 存储库配置和授权密钥添加为构建卷:
strategy: dockerStrategy: from: kind: ImageStreamTag name: ubi9:latest volumes: - name: yum-repos-d mounts: - destinationPath: /etc/yum.repos.d source: type: ConfigMap configMap: name: yum-repos-d - name: etc-pki-entitlement mounts: - destinationPath: /etc/pki/entitlement source: type: Secret secret: secretName: etc-pki-entitlement
2.10.4.2. 使用 Red Hat Satellite 订阅构建 Docker
Docker 策略构建可以使用 Red Hat Satellite 软件仓库来安装订阅内容。
先决条件
- 您已将授权密钥和 Satellite 存储库配置添加为构建卷。
流程
使用以下示例为使用 Satellite 安装内容创建
Dockerfile
:FROM registry.redhat.io/ubi9/ubi:latest RUN rm -rf /etc/rhsm-host 1 RUN yum --enablerepo=codeready-builder-for-rhel-9-x86_64-rpms install \ 2 nss_wrapper \ uid_wrapper -y && \ yum clean all -y RUN ln -s /run/secrets/rhsm /etc/rhsm-host 3