3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWSにおけるOpenShiftプライベートクラスタの構築 (OCP v4.20編)

3
Last updated at Posted at 2025-12-11

著者: 伊藤 雅博, 株式会社日立製作所

はじめに

AWS上にOpenShift Container Platform (OCP) のプライベートクラスタを構築する手順を紹介します。プライベートクラスタには以下の特徴があります。

  • クラスタからインターネットへの接続は可能だが、インターネットからの接続は不可
  • ネットワークドメインはプライベートドメインのみを使用し、パブリックドメインは使用しない

なお、本稿で説明する手順はセルフマネージドのOCPが対象で、マネージドサービスであるROSA (Red Hat OpenShift Service on AWS) は対象外です。

記事一覧:

  1. AWSにおけるOpenShiftプライベートクラスタの構築(本稿)
  2. OpenShiftにStreams for Apache Kafka (Strimzi) をデプロイする
  3. Streams for Apache Kafka Console (Kafkaコンソール) をデプロイする
  4. Streams for Apache Kafka (Strimzi) の認証・認可

概要

構築環境

構築する環境の概要を以下に示します。

  • プラットフォーム: AWS
  • OpenShiftバージョン: 4.20
  • ネットワーク要件:
    • インターネットへの接続は許可、インターネットからの接続は不許可
    • プライベートドメインを使用(パブリックドメインは準備不要)
    • 3つのAvailability Zone (AZ) で冗長化
  • OpenShiftクラスタ構成:
    • Bootstrapノード (構築時のみ): 1台
    • Controllerノード (Masterノード / Control plane): 3台
    • Computeノード (Workerノード): 3台
  • 管理用ノード(OpenShift構築用ノード 兼 OpenShiftクライアントノード):
    • Managerノード: 1台

構築するVPCとOpenShiftクラスタの構成図を以下に示します。

ocp-vpc-install.png

ノード構成

OpenShiftクラスタ

OpenShiftクラスタの各ノードは、OCPのインストールプログラムが自動作成します。Bootstrapノードはインストール完了後に削除されるため、最終的に6台でクラスタを構成します。OSはRed Hat Enterprise Linux CoreOS (RHCOS) を使用します。

ノード種別 台数 OS インスタンスタイプ ボリュームタイプ
Bootstrap 1 RHCOS - -
Controller 3 RHCOS m6i.xlarge (4 vCPU, 16 GiBメモリ) gp3, 100 GB, 2000 IOPS
Compute 3 RHCOS m6i.xlarge (4 vCPU, 16 GiBメモリ) gp3, 200 GB, 2000 IOPS

参考:

管理ノード

OCPのインストールプログラムを実行する管理ノードを1台用意します。インストール完了後は、OpenShiftクラスタにアクセスするためのクライアントノードとして使用します。

ノード種別 台数 OS インスタンスタイプ ボリュームタイプ
Manager 1 Amazon Linux 2023 m6i.large (2 vCPU, 8 GiBメモリ) gp3, 100 GB, 1000 IOPS

OpenShift構築方法の概要

OpenShiftの構築は以下の方式で実施します。

  • インストール方式: installer-provisioned infrastructure (IPI) インストール
  • IPIインストールの種類: 既存VPCへのプライベートクラスタ構築

installer-provisioned infrastructure (IPI) の既存VPCへのプライベートクラスタ構築では、事前にインストール先のVPCを構築しておく必要があります。OCPのインストールプログラムは、そのVPC内にEC2インスタンスやELB、Route 53のプライベートホストゾーンなどを作成し、OpenShiftクラスタを構築します。

参考: 3.6. プライベートクラスターの AWS へのインストール

事前準備

Red HatのサイトおよびAWSコンソールから準備を実施します。

インストール媒体の取得

Red Hatのサイトにログインして、OCPのIPIインストールのページからインストールプログラムなどを取得します。

以下の3つのファイルをダウンロードします。

  • OpenShift installer: openshift-install-linux.tar.gz
    • OCPのインストールプログラム
  • Command line interface: openshift-client-linux.tar.gz
    • OCPクラスタにアクセスするためのCLIクライアント
  • Pull secret: pull-secret.txt
    • Red Hatコンテナレジストリの認証情報

プライベートVPCの構築

OCPクラスタをデプロイするプライベートVPCを作成します。

プライベートVPCの要件

  • クラスタがインターネットへアクセス可能であること
    • 各種AWSサービスのAPIにアクセスするため
    • コンテナレジストリからコンテナイメージを取得するため
  • クラスタがVPCに割り当てられたRoute 53のプライベートホストゾーンを使用して、内部DNSレコードを解決できること

プライベートVPCの作成

構築するVPCの構成図を以下に示します。

ocp-vpc.png

OCPクラスタの配置先となるプライベートサブネットと、インターネットアクセス用のパブリックサブネットを用意します。

プライベートサブネットからはパブリックサブネットのNAT Gateway経由でインターネットにアクセスします。これにより、インターネットからプライベートサブネット内のクラスタへはアクセスできません。

また、3つのAZにプライベートサブネットとパブリックサブネットを配置して冗長化することで、AZ障害に耐えられる構成とします。

このようなプライベートVPCは一般的な構成なので、AWSコンソールのVPC作成画面から、これらのVPCコンポーネントをまとめて作成できます。

作成するVPCコンポーネント:

  • VPC Name: ocp420-vpc
    • 任意の名前
  • IPv4 CIDR: 172.26.0.0/16
    • 他のVPCと接続する場合は重複しないようにすること
  • Subnet
    • プライベートサブネット × 3AZ
    • パブリックサブネット × 3AZ
  • NAT Gateway: 各パブリックサブネットに配置し、Elastic IPを付与
  • Internet Gateway: VPCに1個配置
  • VPC DHCPオプション: クラスタの内部DNSレコード解決に必要
    • enableDnsSupport (DNS解決): 有効(デフォルト)
    • enableDnsHostnames (DNSホスト名): 有効(デフォルト)
  • Route Table: (デフォルトで自動作成)
    • 下記のリソースマップのようなルートが自動的に構成されます

プライベートサブネットとパブリックサブネットの接続:

vpc-rs2.png

vpc-rs3.png

vpc-rs4.png

パブリックサブネットとInternet Gatewayの接続:

vpc-rs1.png

プライベートサブネットとS3用Gateway Endpointの接続:

vpc-rs5.png

(任意)VPCエンドポイントの作成

今回の構成では、VPCからS3以外のAWSサービスへのアクセスはインターネットを経由します。インターネットを経由させたくない場合は、該当サービスのVPCエンドポイントを使用する必要があります。今回は実施していません。

管理ノードの構築

VPCのいずれかのプライベートサブネット内に、管理用のEC2インスタンス(Managerノード)を作成します。この管理ノードはOCPインストールプログラムの実行と、構築後のクラスタ操作に使用します。

管理ノードのOSは任意ですが、OCPインストールプログラムとAWS CLIを使用できる必要があります。今回はAmazon Linuxを使用します。

管理ノード作成後のVPCの構成を以下に示します。

ocp-vpc-manager.png

OpenShift用IAMユーザの準備

インストールプログラムの実行に使用するIAMユーザを作成します。このIAMユーザは、構築後のOCPクラスタからAWSサービスへアクセスする際にも利用します。

参考:

IAMユーザの作成

作成するIAMユーザに以下のポリシーをアタッチします。インストールプログラムがクラスタ構築時に各OCPコンポーネントへ認証情報を付与するために必要です。

  • ユーザ名: ocp420-install(任意の名前)
  • ポリシー: AdministratorAccess

アクセスキーの作成

作成したIAMユーザのアクセスキーを作成します。ユースケースは コマンドラインインターフェイス (CLI) を選択します。作成したアクセスキーとシークレットキーを控えておきます。

プライベートクラスタの構築

管理ノードにログインして実施します。管理ノードにはAWS CLIがインストールされている必要があります。

IAMユーザの利用設定

管理ノードでAWS CLIを起動して、IAMユーザのアクセスキーとシークレットキーを設定します。インストールプログラムは、このIAMユーザを使用してAWSを操作します。

# 設定
aws configure
## AWS Access Key ID [None]: 
## AWS Secret Access Key [None]: 
## Default region name [None]: 
## Default output format [None]: 

# 確認
aws sts get-caller-identity

(任意)OCPノード用SSH鍵の生成

OCPの各ノードへのログインに使用するSSH鍵を事前に生成しておくことで、クラスタ構築後に各ノードへSSH接続が可能になります。これは任意ですが、SSH鍵が無い場合はノードにログインできないため、デバッグで困ることがあります。

# OpenShiftクラスタに属するノードへSSHするために使用する鍵を生成
ssh-keygen -t rsa -b 4096 -f ~/.ssh/ocp420
## Generating public/private rsa key pair.
## Enter passphrase (empty for no passphrase): 
## Enter same passphrase again: 
## Your identification has been saved in /home/ec2-user/.ssh/ocp420
## Your public key has been saved in /home/ec2-user/.ssh/ocp420.pub

インストールプログラムの配置

管理ノードに以下のファイルを配置しておきます。

  • OpenShift installer: openshift-install-linux.tar.gz
    • OCPのインストールプログラム
# インストールプログラムを解凍
tar -zxvf openshift-install-linux.tar.gz --one-top-level

# 確認
cd openshift-install-linux/
ls -l
## -rw-r--r--. 1 ec2-user ec2-user       706 Sep 27 13:48 README.md
## -rwxr-xr-x. 1 ec2-user ec2-user 630706360 Sep 27 13:48 openshift-install

インストール設定ファイルの手動作成

プライベートクラスタを構築するため、インストール設定ファイル install-config.yaml を手動で作成します。今回作成した設定ファイルを以下に示します。

install-config.yaml
apiVersion: v1

# 任意のドメイン名:
# Route 53のプライベートホストゾーン(クラスタ名.ドメイン名)を自動作成するため重複しないこと
baseDomain: ossc.hitachi.com

metadata:
  # クラスタ名
  name: ocp420

# Controllerノードの設定
controlPlane:
  name: master
  platform:
    aws:
      # インスタンスタイプ
      type: m6i.xlarge
      rootVolume:
        iops: 2000
        size: 100
        type: gp3
  # 台数
  replicas: 3

# Computeノードの設定
compute:
  - name: worker
    platform:
      aws:
        # インスタンスタイプ
        type: m6i.xlarge
        rootVolume:
          iops: 2000
          size: 200
          type: gp3
    # 台数
    replicas: 3

# 各ネットワークのCIDR(IPアドレスブロック)を指定:
# ネットワーク間、および到達可能な他のVPCと範囲が重複しないこと
networking:
  # PodのIPアドレスブロック
  clusterNetwork:
    # デフォルト値
    - cidr: 10.128.0.0/14
      hostPrefix: 23

  # ノードのIPアドレスブロック
  machineNetwork:
    # OpenShiftクラスタ用VPCのCIDRを設定
    - cidr: 172.26.0.0/16

  # ServiceのIPアドレスブロック
  serviceNetwork:
    # 他のVPCと重複しない範囲を指定
    - 172.24.0.0/16

# 各ノードとロードバランサの配置先を指定
platform:
  aws:
    # AWSリージョン
    region: ap-northeast-1
    vpc:
      # VPCのプライベートサブネットに配置
      subnets:
        # ocp420-subnet-private1-ap-northeast-1a
        - id: subnet-0f7a55831a0a0b68f
          roles:
            - type: BootstrapNode
            - type: ClusterNode
            - type: ControlPlaneInternalLB
            - type: IngressControllerLB

        # ocp420-subnet-private2-ap-northeast-1c
        - id: subnet-07c5c4ae7e854fbff
          roles:
            - type: ClusterNode
            - type: ControlPlaneInternalLB
            - type: IngressControllerLB

        # ocp420-subnet-private3-ap-northeast-1d
        - id: subnet-09ff3944ecbc74725
          roles:
            - type: ClusterNode
            - type: ControlPlaneInternalLB
            - type: IngressControllerLB

# 公開範囲:
# Internal を指定し、インターネットからアクセスできないプライベートクラスタをデプロイする
publish: Internal

# Cloud Credential Operator (CCO) モードの指定
# Mint モードを指定し、インストールユーザの認証情報から各コンポーネント用の認証情報を払い出す
credentialsMode: Mint

# ノード用のSSH公開鍵(~/.ssh/ocp420.pub)の中身を貼り付け
sshKey: xxxxxxxxxx

# Red Hatコンテナレジストリの認証情報
# Red Hat OpenShift Cluster Managerから取得したプルシークレット(pull-secret.txt)の中身を貼り付け
pullSecret: xxxxxxxxxx

参考:

インストールの実行

インストール設定ファイルを配置

# インストールプログラムのディレクトリに移動
cd openshift-install-linux

# インストール作業用の空ディレクトリを作成
mkdir config

# インストール作業用ディレクトリに install-config.yaml を配置して確認
ls -l config
## -rw-rw-r--. 1 ec2-user ec2-user 5884 Nov  6 05:29 install-config.yaml

インストール実行

# クラスタのデプロイメントを初期化
./openshift-install create cluster --dir ./config --log-level=debug

インストール中に install-config.yaml は削除され、そこから生成されたファイル群に置き換わります。インストール完了まで45分ほどかかります。

インストール完了

クラスタのデプロイが正常に完了すると、kubeadmin ユーザの認証情報と、クラスタにアクセスするための指示が表示されます。認証情報は openshift-install-linux/config/.openshift_install.log にも出力されます。

・・・
INFO Install complete! 
INFO To access the cluster as the system:admin user when using 'oc', run 
INFO     export KUBECONFIG=/home/ec2-user/openshift-install-linux/config/auth/kubeconfig 
INFO Access the OpenShift web-console here: https://console-openshift-console.apps.ocp420.ossc.hitachi.com 
INFO Login to the console with user: "kubeadmin", and password: "XXXXX-XXXXX-XXXXX-XXXXX" 
INFO Time elapsed: 40m59s 

インストール完了後も、インストールプログラムと作成されたファイルは削除しないでください。これらはアンインストール(OCPクラスタ削除)の際に必要となります。

インストール後のVPC構成

OCPインストール完了後のVPCの構成図を以下に示します。Bootstrapノードはインストール中のみ存在し、インストール完了後は自動的に削除されます。

ocp-vpc-cluster.png

OpenShift CLIの構築

OCPクラスタにアクセスするためのCLIクライアントを構築します。

CLIのインストール

管理ノードに以下のファイルを配置しておきます。

  • Command line interface: openshift-client-linux.tar.gz
    • OCPクラスタにアクセスするためのCLIクライアント
# ファイルを解凍
tar -zxvf openshift-client-linux.tar.gz

# ocコマンドとkubectlコマンドを配置
sudo cp oc kubectl /usr/local/bin/

# 実行確認
oc version
## Client Version: 4.20.0
## Kustomize Version: v5.6.0
## Server Version: 4.20.0
## Kubernetes Version: v1.33.5

# 実行確認
kubectl version
## Client Version: v1.33.3
## Kustomize Version: v5.6.0
## Server Version: v1.33.5

CLIの認証情報を設定

OpenShift CLIの認証情報を設定します。

OCPインストール完了後、openshift-install-linux/config/auth/kubeconfig にクラスタのURLや kubeadmin ユーザの認証情報が格納されています。以下のとおり、このファイルのパスを KUBECONFIG 環境変数に設定します。

~/.bash_profile:

# kubeadmin 認証情報をエクスポート
export KUBECONFIG=~/openshift-install-linux/config/auth/kubeconfig

反映:

source ~/.bash_profile

CLIの動作確認

# 実行ユーザを確認
oc whoami
## system:admin

# 全Podの一覧を表示
oc get pods -A

OpenShift Webコンソールの使用

OpenShift WebコンソールのURLは、インストール時のログファイルまたは下記コマンドで確認できます。

# OpenShift Webコンソールのルート(エンドポイント)をリスト表示
oc get routes -n openshift-console | grep 'console-openshift'
## console     console-openshift-console.apps.ocp420.ossc.hitachi.com            console     https   reencrypt/Redirect   None

OpenShift Webコンソールのエンドポイント(ELB)はプライベートサブネット内にあるため、ブラウザから直接アクセスできない場合はポートフォワードなどを使用する必要があります。

おわりに

本稿ではAWSにおけるOpenShiftプライベートクラスタの構築手順を紹介しました。次回はOpenShift上にRed Hat Streams for Apache Kafkaをデプロイする方法を紹介します。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?