エアギャップ環境でImage Bakerを使用したRHEL 9ベースのイメージのビルドが失敗する
search cancel

エアギャップ環境でImage Bakerを使用したRHEL 9ベースのイメージのビルドが失敗する

book

Article ID: 449502

calendar_today

Updated On:

Products

VMware vSphere Kubernetes Service

Issue/Introduction

免責事項:これは英文の記事「Failed to build a RHEL 9-based image using Image Baker in an air-gapped environment」の日本語訳です。
記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。

インターネットへの接続のためにHTTPプロキシが必要な環境でImage Bakerが失敗する:

$ sudo -E vcf kr bake -f rhel-9.yaml --log-level DEBUG

✖  error creating ova rhel-9-amd64-v1.35.2---vmware.1-vkr.3: error creating vmdk: error creating disk image: error debootstrapping OS: error baking sysprep layer of rhel-9 image: error building final rhel state: error solving docker template: failed to solve: process "dnf install -y coreutils --allowerasing" did not complete successfully: exit code: 1

Environment

VKS 3.6.0

Cause

プロキシ設定は、ビルドプロセス中のコンテナには適用されません。
そのため、dnfコマンドやsubscription-managerコマンドを実行する際にコンテナがRed Hatサイトに接続できません。

Resolution

Image Bakerはビルド中のコンテナに対してプロキシ設定を適用する機能を実装していません。

回避策: dnfとsubscription-managerにプロキシを設定したDockerイメージをビルドし、そのイメージをもとにImage Bakerを実行してください。

実行手順例

1. 以下のコマンドを実行して、Dockerホスト上でローカルレジストリを起動します:

docker run -d -p 5000:5000 --name registry registry:2

2. 以下の内容でDockerfileを作成します:

FROM registry.access.redhat.com/ubi9/ubi

ARG PROXY_HOST="proxy.example.com"
ARG PROXY_PORT="8080"
ARG PROXY_URL="http://${PROXY_HOST}:${PROXY_PORT}"

RUN echo "proxy=${PROXY_URL}" >> /etc/dnf/dnf.conf

RUN sed -i -e "s|^proxy_hostname =.*|proxy_hostname = ${PROXY_HOST}|" \
           -e "s|^proxy_port =.*|proxy_port = ${PROXY_PORT}|" \
         /etc/rhsm/rhsm.conf

 

注: ご利用の環境に応じて各プロキシ設定を置き換えてください。
また、プロキシがRed Hatの以下のサイトへのアクセスを許可していることを確認してください。
cdn-ubi.redhat.com, cdn.redhat.com, subscription.rhsm.redhat.com

3. プロキシ構成済みのUBIを作成し、ローカルレジストリにプッシュします:

docker build -t localhost:5000/ubi-with-proxy .
docker push localhost:5000/ubi-with-proxy

4. 以下の設定で rhel-9.yaml ファイルを作成します。spec.osSpec.image フィールドには、手順 3 で作成したイメージを指定してください:

apiVersion: imageconfiguration.vmware.com/v1alpha1
kind: Image
metadata:
  # name format: {os}-{os-version}-{arch}-{kubernetes-version}---{vmware-version}
  name: rhel-9-amd64-v1.35.2---vmware.1-vkr.3
spec:
  osSpec:
    name: rhel
    version: "9"
    image: localhost:5000/ubi-with-proxy
  kubernetesSpec:
    # Reference the VKS Kubernetes distribution
    image: projects.packages.broadcom.com/vsphere/iaas/kubernetes-release/1.35.2/kubernetes-distribution-image:v1.35.2_vmware.1-vkr.3
  # Optional: Customize Node Configuration
  diskSize: 20Gi

5. 以下のコマンドを実行して、VKSノードイメージを作成します:

sudo -E vcf kr bake -f ./rhel-9.yaml