0
0

More than 1 year has passed since last update.

【備忘録】OCP4.9 プライベートクラスターの既存VPCへのインストール手順

Posted at

目的

OpenShift Container platform 4.9をインストールしたい。
なお、インストール先はAWSの既存VPCで、パブリックドメインなどが使用できない環境に導入したい。
ここまで限定的な場面はあまり無いと思うので、あくまで自分用手順として記録。

参照手順

インストール OpenShift Container Platform 4.9
以下に記載の環境から、今回は参照手順の[4.9 プライベートクラスターのAWSへのインストール]が該当する。

インストール先環境情報(制約事項)

  • VPCは既に生成されており、クラスターデプロイ予定のサブネットも用意されている
  • OCP4.9のインストーラを実行するEC2インスタンスは用意されている
  • Route53ではプライベートホストゾーンのみ使用可(パブリックホストゾーンの使用は不可)
  • インターネットへの通信はプロキシを介す
  • デプロイするクラスターはシングルAZ構成とする

インストール作業

以下にインストール手順を記載するが、AWSマネジメントコンソールの情報は、2022/7/14時点の情報に基づいている。
そのため、UIのアップデート等があった場合は適宜読み替えること。

1:OpenShiftインストール用IAMユーザの作成

OpenShiftインストール時に、AWSリソースの追加や変更を行うユーザが必要なため、専用のIAMユーザを作成する。

  1. AWSマネジメントコンソールで、「IAM」サービスを選択する
  2. 「ユーザを追加」を選択する
  3. ユーザ名を入力し、「アクセスキー・プログラムによるアクセス」にチェックを入れ、「次のステップ:アクセス権限」へ
  4. 生成するIAMユーザに「AdministratorAccess」ポリシーをアタッチして、「次のステップ:タグ」へ
  5. 必要に応じてタグを追加し、「次のステップ:確認」へ
  6. 確認画面で設定内容に問題ないか確認し、「ユーザの生成」を行う
  7. ユーザのアクセスキー・シークレットアクセスキーを記録する

2:VPCエンドポイントの設定

インターネット接続が制限されているなどの非接続環境の場合、
OpenshiftクラスタのインストールにEC2、ELB、S3のサービスのVPCエンドポイントが必要となる。

EC2エンドポイントの作成
  1. AWSマネジメントコンソールで、「VPC」サービスを選択する
  2. 「エンドポイント」→「エンドポイントを作成」を選択する
  3. 名前を「ec2.ap-northeast-1.amazonaws.com」と入力し、「AWSのサービス」を選択する
    • 東京リージョン以外の場合は、ap-northeast-1を適宜置き換える
  4. 「com.amazonaws.ap-northeast-1.ec2」を選択する
  5. 対象VPCを選択し、「DNS名を有効化」にチェックする
  6. エンドポイントをアタッチする対象サブネットを選択する
  7. エンドポイントにアタッチするセキュリティグループを選択する
    • エンドポイントへは、OpenShiftクラスタだけでなくインストーラを実行するサーバからも通信を行うので、セキュリティグループのルールに注意すること
  8. ポリシーは必要に応じて設定する(今回はフルアクセス)
  9. タグも必要に応じて設定し、「エンドポイントを作成」を選択して作成する
ELBエンドポイントの作成
  1. AWSマネジメントコンソールで、「VPC」サービスを選択する
  2. 「エンドポイント」→「エンドポイントを作成」を選択する
  3. 名前を「elasticloadbalancing.ap-northeast-1.amazonaws.com」と入力し、「AWSのサービス」を選択する
    • 東京リージョン以外の場合は、ap-northeast-1を適宜置き換える
  4. 「com.amazonaws.ap-northeast-1.elasticloadbalancing」を選択する
  5. 対象VPCを選択し、「DNS名を有効化」にチェックする
  6. エンドポイントをアタッチする対象サブネットを選択する
  7. エンドポイントにアタッチするセキュリティグループを選択する
    • エンドポイントへは、OpenShiftクラスタだけでなくインストーラを実行するサーバからも通信を行うので、セキュリティグループのルールに注意すること
  8. ポリシーは必要に応じて設定する(今回はフルアクセス)
  9. タグも必要に応じて設定し、「エンドポイントを作成」を選択して作成する
S3エンドポイントの作成
  1. AWSマネジメントコンソールで、「VPC」サービスを選択する
  2. 「エンドポイント」→「エンドポイントを作成」を選択する
  3. 名前を「s3.ap-northeast-1.amazonaws.com」と入力し、「AWSのサービス」を選択する
    • 東京リージョン以外の場合は、ap-northeast-1を適宜置き換える
  4. 「com.amazonaws.ap-northeast-1.s3」(今回はGateway型)を選択する
  5. 対象VPCを選択する
  6. ルートテーブルを選択する
  7. ポリシーは必要に応じて設定する(今回はフルアクセス)
  8. タグも必要に応じて設定し、「エンドポイントを作成」を選択して作成する

3:インストーラ実行サーバの設定

インストーラサーバの前提

Linux OSでAWS CLIが導入されていること。

AWS CLIの設定

ミラーサーバに導入されているAWS CLIのプロファイルを、作成したOpenshiftインストール用IAMユーザに変更する。OpenShiftインストール作業は、作成したIAMユーザで行われるため、作成IAMユーザでAWS CLIが実行されるようにする必要がある。

インストール作業用ディレクトリの作成

インストール作業を行うディレクトリを作成する。

$  mkdir <installation_directory>
クラスタノードのSSHアクセス用キーペアの生成

ノードへのSSHアクセスを認証するために使用されるキーペアを生成する。
キーは各ノード~/.ssh/authorized_keysのcoreユーザーのリストに追加され、パスワードなしの認証が可能となる。

  • 認証用の鍵を生成する
$ ssh-keygen -t ed25519 -N '' -f <パス>/<ファイル名> 
  • 公開鍵が表示できることを確認する
$ cat <パス>/<ファイル>.pub
  • 秘密鍵IDをローカルユーザーのSSHエージェントに追加する
$  eval "$(ssh-agent -s)"
  • 秘密鍵をssh-agentに追加する
$  ssh-add <パス>/<ファイル名>

4:OpenShiftインストーラの入手

  1. OpenShiftインストーラダウンロードページにアクセスする
  2. インターネットタイプのページに移動し、オペレーティングシステムのインストールプログラムをダウンロードする
  3. ダウンロードしたファイルをインストール実行サーバに保存し、インストール作業用ディレクトリに解凍する
$  tar -xvf openshift-install-linux.tar.gz -C <installation_directory>

5:Pull Secretのダウンロード

  1. OpenShiftインストーラダウンロードページにアクセスする
  2. Red Hat OpenShift Cluster Manager サイトの 「Pull Secret」ページから、インストールプルシークレットをダウンロードする
  3. ダウンロードしたファイルをインストール実行サーバのインストール作業用ディレクトリに保存する

6:インストール設定ファイルの作成

内部ネットワークからのみアクセスできるプライベートクラスターをデプロイする場合、インストール設定ファイル(install-config.yaml)を手動で作成する必要がある。

  • 以下のような内容のinstall-config.yamlファイルを作成して、インストール作業用ディレクトリに保存する
install-config.yaml
apiVersion: v1
baseDomain: <basedomain> ※_(アンダースコア)は使用できないことに留意
proxy:
  httpProxy: <プロキシの情報>
  httpsProxy: <プロキシの情報>
  noProxy: <basedomain>,.apps.<clsutername>.<basedomain> ※必要に応じてさらに除外したいURLを追加
controlPlane:   
  hyperthreading: Enabled 
  name: master
  platform:
    aws:
      zones:
      - ap-northeast-1a
      type: m5.xlarge ※インスタンスタイプは変更しても良い
  replicas: 3
compute: 
- hyperthreading: Enabled 
  name: worker
  platform:
    aws:
      zones:
      - ap-northeast-1a
      type: m5.2xlarge ※インスタンスタイプは変更しても良い
  replicas: 3  ※最低2以上、推奨3以上
metadata:
  name: <clsutername> ※_(アンダースコア)は使用できないことに留意
networking:
  clusterNetwork:
  - cidr: 10.128.0.0/14
    hostPrefix: 23
  machineNetwork:
  - cidr: <VPC内ネットワークCIDRを指定>
  networkType: OpenShiftSDN
  serviceNetwork:
  - 172.30.0.0/16
platform:
  aws:
    region: ap-northeast-1 
    amiID: ami-0ba4e1ecb12d04732 ※Openshift4.9内でバージョンを固定したい場合指定。指定しない場合最新
    subnets: 
    - <subnet-id> ※インストールする対象サブネットIDを指定
fips: false 
publish: Internal
sshKey: '<作成したsshkey>' 
pullSecret: '<ダウンロードしたプルシークレット>'

なお、noProxyの.apps.<clsutername>.<basedomain>は、以下ナレッジに基づいて記載している。
MSG: OAuthRouteCheckEndpointAccessibleControllerDegraded and RouteHealthDegraded with Service Unavailable on OCPv4

7:OpenShiftインストーラの実行

カレントディレクトリをOpenShiftインストーラが配置されているディレクトリに切り替え、インストールを実施する。
※インストールを開始するとinstall-config.yamlは無くなるため、必要に応じてバックアップしておくこと。

$  ./openshift-install create cluster --dir <installation_directory> --log-level=debug
※--log-levelは、info、warn、debug、errorがある。

およそ、30分から45分程度でクラスターのインストールが完了する。
以下のようなメッセージが出力されていることを確認する。

INFO Install complete!
INFO To access the cluster as the system:admin user when using 'oc', run 'export KUBECONFIG=/home/myuser/install_dir/auth/kubeconfig'
INFO Access the OpenShift web-console here: https://console-openshift-console.apps.mycluster.example.com
INFO Login to the console with user: "kubeadmin", and password: "xxxxx-xxxxx-xxxxx-xxxxx"
INFO Time elapsed: 36m22s

上記メッセージに記載されているURLにアクセスし、ログインできるところまで確認したらインストールは完了となる。

おわりに

Openshift Container Platform 4.9のインストール方法の中でも、制約事項が多い環境へのインストール手順を自分用にまとめた。
本インストール方法は、インストーラ実行時にトライアンドエラーとなる場面が多くなりがち(元々のVPC設定が要因でエラーとなることが多い)であった。そのため、今後同様のインストールが必要になった際に、VPC設定要因かOpenShift設定要因か切り分けを行いやすくするために本手順を役立てたい。

0
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
0
0