OpenShift 4.9 を SNO で構築して、AAP 2.1 をインストールしてみた!

レッドハットの杉村です。Ansible のテクニカルサポートをしています。

Ansible Automation Platform は旧 Ansible Tower の時代から、OpenShift での動作をサポートしています。これまでも自宅で試してみようという記事をこれまでも何度か書いてきました。

rheb.hatenablog.com

rheb.hatenablog.com

OpenShift が SIngle Node OpenShift (SNO) でインストールできるようになったということで、CRC をインストールして使っていたものを置き換えて使うことにしてみます。このPCに SNO をインストールして、Ansible Automation Platform 2.1 (AAP 2.1) を Operator でインストールするのを今回の記事の目標にします。

  • Intel(R) Core(TM) i7-10750H CPU @ 2.60GHz 12core
  • 64GB RAM
  • 1TB SSD

ネットワークの準備

PC を USB メモリから起動してインストールしていくのですが、起動した後に Red Hat のサイトとやりとりしながらインストールを進めるので、DHCP で適切なIPアドレスが割り当てられてインターネット接続ができるという環境が必要です。DHCP サーバになっている自宅のルータを設定して、MAC アドレスについて IP アドレスを固定で割り当てるようにしました。

DNS についても、あらかじめ準備しておく必要があります。dnsmasq で設定しました。

まとめますと、PC につける IP アドレスやホスト名をこのようにしています。

  • IPアドレス: 192.168.0.6 (DHCPで割り当て)
  • ホスト名: ocp49.sugimura.home
  • DNS (dnsmasq) の sugimura.home ドメイン (下記)
local=/sugimura.home/
domain=sugimura.home
server=192.168.0.1
expand-hosts

address=/ocp.sugimura.home/192.168.0.6
address=/apps.ocp.sugimura.home/192.168.0.6

最後に、普段使う端末から SSH でログインするための鍵ペアを作っておきます。普段使っているものがあればそのまま使えます。公開鍵を設定するので用意しておいてください。

Assisted Installer の画面にアクセスしてUSBを作る

console.redhat.com

Create New Cluster のボタンを押して、インストールする構成のための設定をまず作ります。

f:id:sugitk:20220124081000p:plain

Assisted Installer を選びます。

  • Cluster name: ocp
  • Base domain: sugimura.home
  • OpenShift version: OpenShift 4.9.9
  • Install single node OpenShift (SNO) にチェック
  • Edit pull secret にチェックして内容を別ファイルに保存

f:id:sugitk:20220124081035p:plain

次の画面で Add hosts を押して公開鍵を設定します。この公開鍵をインストールすることで、後で SSH でアクセスできるようになります。

f:id:sugitk:20220124081058p:plain

ISO イメージが作成されるので、ダウンロードします。

f:id:sugitk:20220124081120p:plain

USB から起動

Web ブラウザの設定画面はそのままにしておいて別な作業をします。

ダウンロードした ISO イメージを USB メモリに入れて、PC に挿して起動します。ISO を書くのは何を使ってもいいですが、わたしはこれを愛用しています。

www.balena.io

USB から起動するための設定は PC ごとに異なるので、あれこれ試してください。わたしの PC の場合だと、SSD に設定されている grub のプロンプトを出して exit で抜けると USB デバイスから起動するようになっていました。

f:id:sugitk:20220124081145p:plain

画面で設定しつつ進める

USB から起動してしばらく経つと、起動したことを認識してくれます。

f:id:sugitk:20220124081205p:plain

ネットワークを設定して、次に進みます。

f:id:sugitk:20220124081232p:plain

最後に全体の確認があります。

f:id:sugitk:20220124081300p:plain

Install cluster のボタンを押すと実際のインストール作業が進みます。

f:id:sugitk:20220124081329p:plain

しばらく経ったら終わります。kubeadmin ユーザのパスワードが生成されるので、メモっておいてください。Download kubeconfig のボタンも押して、保存しておきましょう。

途中で多くのファイルのダウンロードや再起動があるので、焦らずじっくり待つのがコツです。10〜15分くらいで終わりました。

f:id:sugitk:20220124081350p:plain

Web コンソールにログイン

表示されている Web Console URL にアクセスして、kubeadmin ユーザでログインします。

f:id:sugitk:20220124081421p:plain

無事ログインできました。

f:id:sugitk:20220124081439p:plain

アップデート

CRC とは違って SNO は機能制限がされていない OpenShift なので、アップデートもできます。4.9.9 から 4.9.13 にアップデートしてみました。この Web Console から実行して、1時間くらいで無事更新されました。

f:id:sugitk:20220124081544p:plain

ストレージを作る

インストール直後の状態では、ストレージ (Persistent Volume) がありません。SNO では hostPath として作ります。

access.redhat.com

SSH でログインして、スクリプトを作って実行しました。50GB x 10 の PV を作るものです。

$ ssh -i ~/.ssh/id_ed25519 core@192.168.0.6
...
[core@ocp49 ~]$ cat storage.sh 
#!/bin/sh

for i in $(seq -w 10)
do

sudo mkdir -p /var/lib/storage/pv$i
sudo chmod -R 777 /var/lib/storage/pv$i
sudo chcon -R -t container_file_t /var/lib/storage/pv$i

cat << HOSTPATHPV > storagepv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv$i
spec:
  capacity:
    storage: 50Gi
  accessModes:
    - ReadWriteOnce
    - ReadWriteMany
    - ReadOnlyMany
  persistentVolumeReclaimPolicy: Recycle
  hostPath:
    path: /var/lib/storage/pv$i
HOSTPATHPV

oc create -f storagepv.yaml
rm -f storagepv.yaml

done
[core@ocp49 ~]$ 

kubeadmin でログインしてからスクリプトを実行します。

[core@ocp49 ~]$ oc login https://api.ocp.sugimura.home:6443 --username=kubeadmin --insecure-skip-tls-verify=true 
Authentication required for https://api.ocp.sugimura.home:6443 (openshift)
Username: kubeadmin
Password: XXXXXXXXXXXXXXXXXX
Login successful.

You have access to 66 projects, the list has been suppressed. You can list all projects with 'oc projects'

Using project "default".
[core@ocp49 ~]$ 

[core@ocp49 ~]$ sh storage.sh 
persistentvolume/pv01 created
persistentvolume/pv02 created
persistentvolume/pv03 created
persistentvolume/pv04 created
persistentvolume/pv05 created
persistentvolume/pv06 created
persistentvolume/pv07 created
persistentvolume/pv08 created
persistentvolume/pv09 created
persistentvolume/pv10 created
[core@ocp49 ~]$ 

[core@ocp49 ~]$ oc get pv
NAME   CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
pv01   50Gi       RWO,ROX,RWX    Recycle          Available                                   17s
pv02   50Gi       RWO,ROX,RWX    Recycle          Available                                   17s
pv03   50Gi       RWO,ROX,RWX    Recycle          Available                                   17s
pv04   50Gi       RWO,ROX,RWX    Recycle          Available                                   17s
pv05   50Gi       RWO,ROX,RWX    Recycle          Available                                   17s
pv06   50Gi       RWO,ROX,RWX    Recycle          Available                                   17s
pv07   50Gi       RWO,ROX,RWX    Recycle          Available                                   17s
pv08   50Gi       RWO,ROX,RWX    Recycle          Available                                   17s
pv09   50Gi       RWO,ROX,RWX    Recycle          Available                                   17s
pv10   50Gi       RWO,ROX,RWX    Recycle          Available                                   17s
[core@ocp49 ~]$ 

作った PV は Web Console からも確認できます。あとは PVC の要求に応じて割り当ててくれます。

f:id:sugitk:20220124081626p:plain

Ansible Automation Platform 2.1 をインストール

ここからはもう一つのテーマとして、この SNO で AAP 2.1 を Operator でインストールしてみます。

Ansible Tower の時代では独自のインストーラを実行していましたが、AAP 2.1 になって Operator で簡単に入れられるようになりました。左のメニューから OperatorHub をクリックして検索すると、Ansible Automation Platform の Operator が見つかります。

f:id:sugitk:20220124081646p:plain

クリックしていくとこの Operator をインストールできます。

f:id:sugitk:20220124081658p:plain

f:id:sugitk:20220124081719p:plain

f:id:sugitk:20220124081734p:plain

Automation Controller の Create instance を押して、作ってみます。ここでは名前を aap21 としてみました。Create を押すだけで終わりです。細かい設定をすることもできます。

f:id:sugitk:20220124081757p:plain

しばらく待つとインストールが終わって、Routes に URL が生えてきます。

f:id:sugitk:20220124081809p:plain

この Location にある URL にアクセスすると、見慣れたログイン画面が出てきます。

f:id:sugitk:20220124081823p:plain

admin ユーザのパスワードは Secret に作られます。

f:id:sugitk:20220124081841p:plain

AAP 2.1 にログインできました。

f:id:sugitk:20220124081852p:plain

インスタンスは Pod に対応して作られます。OpenShift 側で Deployment から scale up すると、2つに増えたりしますのでお試しください。

f:id:sugitk:20220124081910p:plain

まとめ

長くなりましたが、SNO のインストールと、OpenShift のアプリケーションとしての Ansible Automation Platform 2.1 のインストールを紹介してみました。

PC 1台で OpenShift を試すことができますので、ぜひ遊んでみてください。

OpenShift と Ansible Automation Platform の評価ライセンスリクエストはこちらからご利用いただけます。60日間利用できます。

www.redhat.com

www.redhat.com

Happy Automation!

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。