Red Hat OpenShift UPI

概要

OpenShift(以下OCP)に触れる機会があったのでUPIインストールの方法を紹介します。

この記事を執筆する一番のモチベーションは巷に溢れるOCPのインストール関連の記事がかなり気持ち悪く書かれている為です。きれいに整理すれば理解もしやすくなります。

必要なコンポーネント

UPI では下記のコンポーネントが必要となります(細かくはそれぞれの項を参照)。よくありがちなのは、動的な管理を嫌い、全て静的に管理したいという、古めの Sier 的モチベーションから状況をややこしくするパターンです。

DNS サーバー
OpenShift を構成するには DNS サーバーが必須です。hosts に書けば何とかなるのでは?と思いがちですが、仕様として必須となります。仮に DNS 無しで構成できたとして、運用中に何らかの問題にあたった場合は Red Hat のサポートを受けられないでしょう。
DHCP サーバー
まずはじめに OpenShift は固定 IP アドレスもサポートしているので DHCP サーバーは必須ではありません。また、DHCP サーバーを使用する場合でも MAC アドレスでの固定が必要です。ただ、固定 IP アドレスを使用する場合は事前に定義ファイルを作成したりノード毎の設定を厳密に管理する必要があります。DHCP を使用すると、それらの管理は不要となり、クラスタのスケールも楽になると思います。永続的なという観点では DHCP のリース時間を無制限にするというアイデアもありです。
haproxy
OCPの稼働には外部のロードバランサーが必要です。
nfs
PV用のNFSサーバーです。SNOの場合はhostpathでも問題ありませんが、複数ノードクラスター構成の場合は必須と考えて良いでしょう。

workbox

Red Hat OpenShift Cluster Managerから必要ファイルの入手とセットアップ

Red Hat OpenShift Cluster Managerにログインして必要なファイルをダウンロードします。本稿の例では各ファイルを~/work/ocpに配置します。

Red Hat OpenShift Cluster Managerにはいくつか選択肢がありますが、本稿ではRun it yourselfを使用します。また、Run it yourself内でもいくつかのプロバイダーを選択できますが、Platform agnostic (x86_64)(プラットフォームに依存しない)を選択しています。

OpenShift installer

Run it yourself > Platform agnostic (x86_64) > OpenShift installerでLinuxを選択します。ダウンロードファイル名はopenshift-install-linux.tar.gzです。

展開するとopenshift-install-linuxが作成されます。openshift-install-linuxは後述のocのようにパスが存在するディレクトリに移動して実行するとignitionファイルの生成に失敗する為、~/work/ocp内で展開したままの状態とします。

$ tar xzf openshift-install-linux.tar.gz

Pull secret

Run it yourself > Platform agnostic (x86_64) > Pull secretをダウンロードします。ダウンロードファイル名はpull-secret.txtです。

Command line interface (oc, kubectl)

Run it yourself > Platform agnostic (x86_64) > Command line interfaceでLinuxを選択します。ダウンロードファイル名はopenshift-client-linux.tar.gzです。

展開するとoc, kubectlが作成されます。

$ tar xzf openshift-client-linux.tar.gz

oc, kubectlはパスが存在するディレクトリと配置すると扱い易くなります。本稿では/usr/local/binに配置します。パーミッションは755であることを確認しておきましょう。

$ mv oc kubectl /usr/local/bin
$ ls -l /usr/local/bin

ocのコマンド補完を有効にします。シェルに入りなおすと有効になります。

$ oc completion bash > oc_bash_completion
$ sudo mv oc_bash_completion /etc/bash_completion.d/

同じくkubectlのコマンド補完を有効にします。

$ kubectl completion bash > kubectl_bash_completion
$ sudo mv kubectl_bash_completion /etc/bash_completion.d/

Red Hat Enterprise Linux CoreOS (RHCOS)

RHCOSのISOをダウンロードします。このISOは単にOCPをインストールするホストでbootさせます。もちろん周辺環境の準備が整ってからです。

Podman

openshift-installの実行にPodmanが必要となります。

$ sudo DEBIAN_FRONTEND=noninteractive apt-get -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold install podman

Ignitionファイルの作成

IgnitionファイルはOCPインストールに必要な全ての情報が記載されます。実体はcloud-initです。

SSH鍵の作成

パスフレーズ無しのSSH鍵を作成します。このSSH鍵は各ノードへの接続に必須となる為、秘密鍵(.ssh/id_rsa)、公開鍵(.ssh/id_rsa.pub)ともに確実に保管するべきです。

$ ssh-keygen -t rsa -b 4096 -N '' -C "myadmin@workbox.si1230.com"

インストールファイル配置用の専用ディレクトリ

以降はクラスター毎の個別の設定ファイルとなる為、特に複数のクラスターを展開する場合はクラスター名を元にしたインストールファイル配置用の専用ディレクトリを作成すると管理し易くなります。本稿でのクラスター名はmgmtとしています。

$ mkdir -p ~/work/ocp/cluster/mgmt/installdir

install-config.yamlの作成

公式ドキュメントを参考に作成します。

$ vi ~/work/ocp/cluster/mgmt/install-config.yaml
apiVersion: v1
baseDomain: si1230.com
proxy:
  httpProxy: http://10.0.0.200:3128
  httpsProxy: http://10.0.0.200:3128
  noProxy: 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,si1230.com,.si1230.com
compute:
- hyperthreading: Enabled
  name: worker
  replicas: 0
controlPlane:
  hyperthreading: Enabled
  name: master
  replicas: 3
metadata:
  name: mgmt
networking:
  clusterNetwork:
  - cidr: 10.128.0.0/14
    hostPrefix: 23
  networkType: OpenShiftSDN
  serviceNetwork:
  - 172.30.0.0/16
platform:
  none: {}
fips: false
pullSecret: ''
sshKey: ''
  • baseDomainはmetadata.nameと結合してサブドメイン(mgmt.si1230.com)となります。
  • proxyはインターネット接続環境に応じて必要であれば設定します。不要であれば削除します。
  • controlPlane.replicasを3とし、compute.replicasを0にしてクラスターを作成すると3ノードクラスターができます。3ノードクラスターの各ノードはMasterとWorkerを兼ねます。
  • metadata.nameはクラスター名です。ベースドメインのサブドメインになります。
  • networkingはデフォルト値です。隠蔽されたアドレスなので何でも良いという人もいますが「Pod発の通信で宛先が重複する場合は通信が成り立たない」ので、環境によっては全体で重複しないアドレスを設定すべきです。
  • pullSecretは前述でダウンロードした内容を記載します。シングルクォートで囲みます。
  • sshKeyは前述で作成した公開鍵(.ssh/id_rsa.pub)を記載します。シングルクォートで囲みます。

Manifestファイルの作成

openshift-installを実行してIgnitionファイルを作成します。

$ cp ~/work/ocp/cluster/mgmt/install-config.yaml ~/work/ocp/cluster/mgmt/installdir
$ cd ~/work/ocp
$ ./openshift-install create manifests --dir=cluster/mgmt/installdir

Ignitionファイルの作成

Ignitionファイルを作成します。具体的には前述のManifestファイルが変換されます。.ignファイルとなり.yamlのように可読性はありません。

$ cd ~/work/ocp
$ ./openshift-install create ignition-configs --dir cluster/mgmt/installdir

WebサーバーへIgnitionファイルの配置

WebサーバーへIgnitionファイルを配置します。Webサーバー上での公開ディレクトリへの配置はmsrvの章に記載します。

$ cd ~/work/ocp/cluster/mgmt/installdir
$ scp *.ign msrv.si1230.com:~/
Red Hat OpenShift UPI

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る