目的
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ユーザを作成する。
- AWSマネジメントコンソールで、「IAM」サービスを選択する
- 「ユーザを追加」を選択する
- ユーザ名を入力し、「アクセスキー・プログラムによるアクセス」にチェックを入れ、「次のステップ:アクセス権限」へ
- 生成するIAMユーザに「AdministratorAccess」ポリシーをアタッチして、「次のステップ:タグ」へ
- 必要に応じてタグを追加し、「次のステップ:確認」へ
- 確認画面で設定内容に問題ないか確認し、「ユーザの生成」を行う
- ユーザのアクセスキー・シークレットアクセスキーを記録する
2:VPCエンドポイントの設定
インターネット接続が制限されているなどの非接続環境の場合、
OpenshiftクラスタのインストールにEC2、ELB、S3のサービスのVPCエンドポイントが必要となる。
EC2エンドポイントの作成
- AWSマネジメントコンソールで、「VPC」サービスを選択する
- 「エンドポイント」→「エンドポイントを作成」を選択する
- 名前を「ec2.ap-northeast-1.amazonaws.com」と入力し、「AWSのサービス」を選択する
- 東京リージョン以外の場合は、ap-northeast-1を適宜置き換える
- 「com.amazonaws.ap-northeast-1.ec2」を選択する
- 対象VPCを選択し、「DNS名を有効化」にチェックする
- エンドポイントをアタッチする対象サブネットを選択する
- エンドポイントにアタッチするセキュリティグループを選択する
- エンドポイントへは、OpenShiftクラスタだけでなくインストーラを実行するサーバからも通信を行うので、セキュリティグループのルールに注意すること
- ポリシーは必要に応じて設定する(今回はフルアクセス)
- タグも必要に応じて設定し、「エンドポイントを作成」を選択して作成する
ELBエンドポイントの作成
- AWSマネジメントコンソールで、「VPC」サービスを選択する
- 「エンドポイント」→「エンドポイントを作成」を選択する
- 名前を「elasticloadbalancing.ap-northeast-1.amazonaws.com」と入力し、「AWSのサービス」を選択する
- 東京リージョン以外の場合は、ap-northeast-1を適宜置き換える
- 「com.amazonaws.ap-northeast-1.elasticloadbalancing」を選択する
- 対象VPCを選択し、「DNS名を有効化」にチェックする
- エンドポイントをアタッチする対象サブネットを選択する
- エンドポイントにアタッチするセキュリティグループを選択する
- エンドポイントへは、OpenShiftクラスタだけでなくインストーラを実行するサーバからも通信を行うので、セキュリティグループのルールに注意すること
- ポリシーは必要に応じて設定する(今回はフルアクセス)
- タグも必要に応じて設定し、「エンドポイントを作成」を選択して作成する
S3エンドポイントの作成
- AWSマネジメントコンソールで、「VPC」サービスを選択する
- 「エンドポイント」→「エンドポイントを作成」を選択する
- 名前を「s3.ap-northeast-1.amazonaws.com」と入力し、「AWSのサービス」を選択する
- 東京リージョン以外の場合は、ap-northeast-1を適宜置き換える
- 「com.amazonaws.ap-northeast-1.s3」(今回はGateway型)を選択する
- 対象VPCを選択する
- ルートテーブルを選択する
- ポリシーは必要に応じて設定する(今回はフルアクセス)
- タグも必要に応じて設定し、「エンドポイントを作成」を選択して作成する
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インストーラの入手
- OpenShiftインストーラダウンロードページにアクセスする
- インターネットタイプのページに移動し、オペレーティングシステムのインストールプログラムをダウンロードする
- ダウンロードしたファイルをインストール実行サーバに保存し、インストール作業用ディレクトリに解凍する
$ tar -xvf openshift-install-linux.tar.gz -C <installation_directory>
5:Pull Secretのダウンロード
- OpenShiftインストーラダウンロードページにアクセスする
- Red Hat OpenShift Cluster Manager サイトの 「Pull Secret」ページから、インストールプルシークレットをダウンロードする
- ダウンロードしたファイルをインストール実行サーバのインストール作業用ディレクトリに保存する
6:インストール設定ファイルの作成
内部ネットワークからのみアクセスできるプライベートクラスターをデプロイする場合、インストール設定ファイル(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設定要因か切り分けを行いやすくするために本手順を役立てたい。