経緯
- エッジでコンテナオーケストレーションをする際、RedHat社のOSSであるMicroShiftが手軽そうだった + OpenShift Localを使ったことがあった(UnityのロボットシミュレーションをOpenShiftで管理)ので、使ってみたかった
- 息子(4)が、学校のチャイムが鳴るおもちゃをほしがったのでRaspberry Piで組んでみようと思った
環境
- boot用SDカードを用意したPC: Windows 11
- Raspberry Pi5
- 2~3倍性能が上がった等、Raspberry Pi4のグレードアップ版
- 5V/5Aの電源が必要
(テキトーにUSBをつないだらOSが立ち上がらず落ちた)
- AlmaLinux release 9.4 (Seafoam Ocelot)
- Red Hat Enterprise Linux (RHEL)と完全に互換性のあるオープンソースのOS
- AlmaLinux OS Foundationによって管理されており、コミュニティ主導で開発が進められている
- Fedora IoT、CentOSも検討したが、調査時点でRaspberry Pi5に対応したイメージを見つけられなかったので今回はAlmaLinuxを採用
- MicroShift Version: 4.8.0-0.microshift-2022-04-20-141053
手順
1. AlmaLinuxイメージ・AlmaLinuxへの接続準備 (WSL2)
- AlmaLinuxのイメージをダウンロード
$ curl -O https://repo.almalinux.org/almalinux/9/raspberrypi/images/AlmaLinux-9-RaspberryPi-GNOME-latest.aarch64.raw.xz
- イメージを検証するため、AlmaLinux OS PGP public keyをダウンロード
$ curl -O -s https://repo.almalinux.org/almalinux/RPM-GPG-KEY-AlmaLinux-9
- key fingerprintを確認
$ gpg --with-subkey-fingerprints RPM-GPG-KEY-AlmaLinux-9 gpg: WARNING: no command supplied. Trying to guess what you mean ... pub rsa4096 2022-01-18 [SC] BF18AC2876178908D6E71267D36CB86CB86B3716 uid AlmaLinux OS 9 <packager@almalinux.org> sub rsa4096 2022-01-18 [E]
- finger printが
BF18AC2876178908D6E71267D36CB86CB86B3716
であることを確認
- finger printが
- keyをインポート
$ gpg --import RPM-GPG-KEY-AlmaLinux-9 gpg: key D36CB86CB86B3716: public key "AlmaLinux OS 9 <packager@almalinux.org>" imported gpg: Total number processed: 1 gpg: imported: 1
- checksumファイルとsignatureをダウンロード
$ curl -O -s https://repo.almalinux.org/rpi/9/images/CHECKSUM $ curl -O -s https://repo.almalinux.org/rpi/9/images/CHECKSUM.asc
- checksumファイルのsignatureを検証
$ gpg --verify CHECKSUM.asc CHECKSUM gpg: Signature made Fri Aug 2 22:53:39 2024 JST gpg: using RSA key D36CB86CB86B3716 gpg: Good signature from "AlmaLinux OS 9 <packager@almalinux.org>" [unknown] gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: BF18 AC28 7617 8908 D6E7 1267 D36C B86C B86B 3716
-
Good signature from "AlmaLinux OS 9 <packager@almalinux.org>"
が出力されることを確認
-
- ダウンロードしたイメージのchecksumを検証
$ sha256sum -c CHECKSUM 2>&1 | grep OK AlmaLinux-9-RaspberryPi-GNOME-latest.aarch64.raw.xz: OK
- AlmaLinuxへssh接続するための公開鍵・秘密鍵を作成
$ ~/.ssh $ ssh-keygen
-
id_rsa
,id_rsa.pub
が生成される
-
2. SDカードの用意 (Windows11)
-
Raspberry Pi Imagerをダウンロード&インストール
- ここからインストーラをダウンロード
- インストーラの指示にしたがってインストール
-
Raspberry Pi ImagerでAlmaLinux-9-RaspberryPi-GNOME-latest.aarch64.raw.xzをSDカードに書き込む
- 下記のように設定し、次へをクリック
- Raspberry Piデバイス:Raspberry Pi 5
- OS:AlmaLinux-9-RaspberryPi-GNOME-latest.aarch64.raw.xz
- Use custom > AlmaLinux-9-RaspberryPi-GNOME-latest.aarch64.raw.xzを選択
- ストレージ:SDXC CARD
- 下記のように設定し、次へをクリック
-
Would you like to apply OS customization settings?で「いいえ」
-
書き込み
-
書き込みが終わったら、SDカードをRaspberryPi5に挿入
3. AlmaLinux立ち上げ(RaspberryPi5のAlmaLinux)
- User: almalinux, Password: almalinuxでログイン
- ネットワークをつなぐ
- 有線LAN、WiFiの設定:AlmaLinuxのGUIで簡単に設定できるので詳細は省略
-
$ ip a
コマンドでIPアドレスを確認 - 公開鍵(1.8.で作成した
id_rsa.pub
)を~/.ssh/
に、authorized_keys
というファイル名で保存
5. Raspberry Pi5のAlmaLinuxへログイン(WSL2)
- Raspberry Pi5のAlmaLinuxにSSH接続
$ ssh almalinux@<3.3.で確認したIPアドレス>
- AlmaLinuxへログインできたことを確認
[almalinux@almalinux ~]$
6. MicroShiftインストール(AlmaLinux)
全コマンドを十分理解していないので、過不足あるかもしれません
-
SELinuxを無効化
$ sudo nano /etc/selinux/config
-
SELINUX=disabled
に更新
-
-
cgroupv2のメモリコントローラを有効化
$ sudo sed -i -e "1 s/$/ cgroup_enable=memory/" /boot/cmdline.txt
-
再起動
$ sudo reboot
-
必要なリポジトリの追加
$ sudo dnf install -y epel-release $ sudo dnf config-manager --set-enabled crb
- EPEL(Extra Packages for Enterprise Linux)
- CRB
-
Gitとtarのインストール
$ sudo dnf update -y $ sudo dnf install -y git tar
- tarをインストールしておくとVSCodeのRemote-SSHから接続できる
-
CRI-Oのインストール
$ sudo curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable.repo https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/CentOS_8/devel:kubic:libcontainers:stable.repo $ sudo curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable:cri-o:1.24.repo https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:1.24/CentOS_8/devel:kubic:libcontainers:stable:cri-o:1.24.repo $ sudo dnf install -y cri-o $ sudo systemctl start crio $ sudo systemctl enable --now crio
-
$ sudo systemctl start crio
が不要っぽいが、飛ばすとエラーになった(原因究明せず)
-
-
MicroShiftインストール
$ sudo dnf copr enable -y @redhat-et/microshift $ sudo dnf install -y microshift $ microshift version MicroShift Version: 4.8.0-0.microshift-2022-04-20-141053 Base OKD Version: 4.8.0-0.okd-2021-10-10-030117 $ sudo systemctl enable --now microshift
-
oc
コマンドインストール$ curl -O https://mirror.openshift.com/pub/openshift-v4/aarch64/clients/ocp/stable/openshift-client-linux.tar.gz $ tar xvzf openshift-client-linux.tar.gz $ sudo mv oc /usr/local/bin/ $ oc version Client Version: 4.16.8 Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
-
oc
コマンドのconfig設定$ mkdir -p ~/.kube $ sudo cat /var/lib/microshift/resources/kubeadmin/kubeconfig > ~/.kube/config $ sudo chown $USER:$USER ~/.kube/config $ chmod 600 ~/.kube/config
7. プロジェクトの作成
-
oc
コマンドを用いてprojectを作成$ oc new-project sample-app Now using project "sample-app" on server "https://127.0.0.1:6443". You can add applications to this project with the 'new-app' command. For example, try: oc new-app rails-postgresql-example to build a new example application in Ruby. Or use kubectl to deploy a simple Kubernetes application: kubectl create deployment hello-node --image=registry.k8s.io/e2e-test-images/agnhost:2.43 -- /agnhost serve-hostname
- クリーンアップ
$ oc delete project sample-app project.project.openshift.io "sample-app" deleted
参考
- https://www.server-world.info/query?os=AlmaLinux_9&p=ssh&f=4
- https://docs.redhat.com/ja/documentation/openshift_container_platform/4.6/html/cli_tools/_openshift-cli-oc#cli-installing-cli_cli-developer-commands
- https://wiki.almalinux.org/documentation/installation-guide.html#iso-verification
- https://docs.redhat.com/en/documentation/red_hat_build_of_microshift/4.12/html/installing/microshift-install-rpm
- https://rheb.hatenablog.com/entry/2022/06/24/162156