$ oc tag --source=docker registry.redhat.io/ubi9/ubi:latest ubi:latest
使用以下部分在 OpenShift Dedicated 构建中安装 Red Hat 订阅内容。
要在构建中安装 Red Hat Enterprise Linux (RHEL) 包,您可以创建一个镜像流标签来引用 Red Hat 通用基础镜像 (UBI)。
要使 UBI 在集群中的每个项目中可用,请将镜像流标签添加到 `openshift` 命名空间。否则,要使其在特定项目中可用,请将镜像流标签添加到该项目。
镜像流标签通过使用安装拉取密钥中存在的 `registry.redhat.io` 凭据来授予对 UBI 的访问权限,而无需向其他用户公开拉取密钥。此方法比要求每个开发人员在每个项目中安装具有 `registry.redhat.io` 凭据的拉取密钥更方便。
要在单个项目中创建 `ImageStreamTag` 资源,请输入以下命令
$ oc tag --source=docker registry.redhat.io/ubi9/ubi:latest ubi:latest
或者,您可以应用以下 YAML 来在单个项目中创建 `ImageStreamTag` 资源
|
使用 Red Hat 订阅安装内容的构建必须包含授权密钥作为构建密钥。
您必须以具有 `cluster-admin` 角色的用户身份访问集群,或者您有权访问 `openshift-config-managed` 项目中的密钥。
通过输入以下命令,将授权密钥从 `openshift-config-managed` 命名空间复制到构建的命名空间
$ 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 密钥添加为构建卷
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
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)
1 | 在执行任何 `yum` 或 `dnf` 命令之前,您必须在 Dockerfile 中包含删除 `/etc/rhsm-host` 目录及其所有内容的命令。 |
2 | 使用Red Hat 包浏览器查找已安装包的正确存储库。 |
3 | 您必须恢复 `/etc/rhsm-host` 符号链接以保持您的镜像与其他 Red Hat 容器镜像兼容。 |
使用 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
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)
1 | 在执行任何 `yum` 或 `dnf` 命令之前,您必须在 Dockerfile 中包含删除 `/etc/rhsm-host` 目录及其所有内容的命令。 |
2 | 请联系您的 Satellite 系统管理员以查找构建已安装包的正确存储库。 |
3 | 您必须恢复 `/etc/rhsm-host` 符号链接以保持您的镜像与其他 Red Hat 容器镜像兼容。 |