クラウドリソースの使用料やサブスクリプションの費用無しに利用することができるOpenShiftを4つ紹介します。
他にもあるかもしれませんが、私が個人環境で触ったことがあるのがこの4つという話です。
用途に応じてお試ししてみてね。
(独断と偏見で難易度(手軽さ):易→難の順に並べています)
バージョンその他諸々は、2020.09.23時点のものです。
(1) Learn OpenShift
- OpenShiftバージョン: 3.11 ~ 4.5
- ユーザー登録: 不要
- 必要なもの: ブラウザのみ
- 連続利用可能時間: 60分
マウス数クリックで最も簡単に使用できます。
OpenShift: Interactive Learning Portalから、最後(2020年9月時点)にある「OpenShift Playgrounds」を選択し、その先のOpenShiftバージョン毎の「START SCENARIO」で開始できます。
本来は、「OpenShiftを使って〇〇をしてみよう!」というオンラインハンズオンのコースのための環境の一つ(その中でも「OpenShift Playgrounds」は特に課題は設けておらず、自由に使ってみよう、みたいなコース)なので、スペックはそれなり…と思い込んでいたんだけど、ちゃんと見たら結構ありますね。
Capacity: cpu: 8 ephemeral-storage: 125275840Ki hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 24094172Ki pods: 250 Allocatable: cpu: 7500m ephemeral-storage: 114380472129 hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 22943196Ki pods: 250
RAM24GB…マジか。
(前からこんなにあったっけ?)
OpenShiftに手軽に触れるにはユーザー登録なども何も必要ないので最もお手軽。
場合によってはproxyでガチガチで固められている職b(うわなにをするやめろ
Docker Hub + GitHub のようにパブリックに公開しているアプリケーションのビルド&デプロイをゆるーく試してみるには非常に相性が良いです。
ちなみに中身は(おそらく)CodeReady Containerで、ホストOSはCentOS 8で動いています。
プロンプトは$
になってるけど、実はrootで動いてるので、作業に必要な追加パッケージがあればyum
でインストールもできます。
シングルノードなのでノードをcordon
やdrain
したり、ノード故障関連でのサービス持続性を確認することはできません。
あと、KatacodaのOpenShiftシリーズでもほぼ同じものが利用できる。
(2) IBM Open Labs
- OpenShiftバージョン: 4.3 (K8s version: v1.16.x)
- ユーザー登録: IBM Cloudのライトアカウントが必要(クレジットカード情報の登録不要)
- 必要なもの: ブラウザと若干の個人情報(IBM Cloudアカウント登録用)
- 連続利用可能時間: 7時間 (デフォルトで4時間使用可能・1時間延長を3回できる)
IBM Cloudのアカウント作成後は、これも数クリックでクラスター作成して利用できます。
というか、IBM Cloudのライトアカウント権限で、マネージドOpenShift環境を一定時間無料で使用できる、というもの。
Learn OpenShiftと同じようにブラウザ上でコンソール操作も可能ですが、特徴的なのはクラスターへアクセスするための各種クレデンシャル情報が揃っているので、自分のラップトップなどのoc
コマンドでもoc login
できます。
手元の環境にoc
が入っておらず、でもweb上でのコンソール作業はちょっとツライ場合でも、SSHやVNC(デスクトップ)で操作用端末へログインすることも可能。
(VNCはnoVNCを使ったブラウザアクセスなので、専用クライアントアプリは不要)
ちなみにVNCでデスクトップへアクセスすると、VS Code(Kubernetes拡張やOpenShift拡張も入っている)もセットアップ済み。
運が良ければproxyの深淵からでもアクs(ry
時間も最大7時間使用でき、スペックも検証には十分な4vCPUs・RAM16GBの2ノード構成なので、だいたい何でもできる。(何でもできるとは言っていない)
むしろクラスターが1営業日程度しか使えないのを逆手にとって、クラスター外部に構築したデプロイの自動化設定などの確認に使っても良いかもしれない。
使用するには"Launch Lab"をクリックしてIBM Cloudアカウントでサインインすれば環境が構築されます。
再度"Launch Lab"をクリックするとwebのターミナル画面になります。
時間延長やクレデンシャル情報のアクセスは、画面右上の時計アイコンや鍵アイコンから。
鍵アイコンをクリックすると、OpenShift・SSH・VNCそれぞれの情報を確認できる。
参考情報
具体的な利用方法については、戸倉彩さんのQiitaの記事を参考にすると良いです。
現在と画面は若干異なっているけど、流れは同じ。
Learn OpenShiftのPlaygroundsと違ってマルチノードなので、片方のノードをdrain
して方肺運転を確認したりもできます。
(3) CodeReady Containers
- OpenShiftバージョン: 新規インストールは基本的に最新安定板のみ (crc自体のバージョニングはOpenShiftとは独立)
- ユーザー登録: Red Hat開発者アカウントが必要(pull secret用)
- 必要なもの: 4vCPUs / RAM9GB / 35GB storageのVM を動かせる程度の人権スペックのPC (OS等詳細はMinimum system requirements)
構成としては、Hyper-V / HyperKit / KVMといった対象OSで使用できる仮想化機能を使って上記スペックのオールインワンのノードVMを作成してそこでOpenShiftを動かすというもの。
oc
コマンドはホストOSから実行します。
時間制限のあるクラウドサービスのクラスターと異なり、使わない時間はシャットダウンしておいて続きは明日とかできるけど、30日間で証明書の期限が切れるため、その直前あたりの自動更新する処理が行われる期間に実行されていないと、起動できなくなる (現在は起動時に証明書期限切れだった場合は自動更新されるようになっています)ので注意。
また、アップグレードと言いつつ、既存バージョンを消して新バージョンのインストールなので、時間制限が無いとは言え、長期運用を想定したものではないです。
Minikubeを使ったことある人は、あれのOpenShift版だと思ってもらえればOKです。
Minishiftを使ったことある人は、あれのver4だと思ってもらえればOKです。
必要スペック、去年は確かRAM8GBだったんだけど、要求スペックがいつの間にか上がってるなぁ…
導入例 (on CentOS 7)
$ crc version CodeReady Containers version: 1.16.0+bf72d3a OpenShift version: 4.5.9 (embedded in binary) $ crc setup $ crc start --pull-secret-file pull-secret.txt
これで起動する。(初回はcrc start
でイメージのDLで時間かかる)
具合が悪い場合は--log-level debug
で実行すれば何かわかるかもしれない。
デプロイが成功すると、kubeadm
などと同じように最後にoc login -u kubeadmin -p ...
というクラスターログインのためのコマンドが表示されるので、それを実行します。
ちなみにパスワードが書かれたファイルは~/.crc/cache/crc_(hypervisor)_*.*.*/kubeadmin-password
にあるのでいざという時はチェック。
oc
コマンドはcrc oc-env
を実行すれば「現在使用中のシェルに合わせたexport設定」が表示されるので、その通り実行すればOK。
$ eval $(crc oc-env)
2020.09.23にcrc 1.16.0をCentOS Linux release 7.8.2003 (Core)で試した限りでは、「OSをISOイメージからインストールしてyum update
で最新状態にアップデートしておけば」crc setup
, crc start
でデプロイできました。
[zaki@codeready-ocp4 ~]$ oc version Client Version: 4.5.9 Server Version: 4.5.9 Kubernetes Version: v1.18.3+6c42de8 [zaki@codeready-ocp4 ~]$ oc get node -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME crc-zqfk6-master-0 Ready master,worker 9d v1.18.3+6c42de8 192.168.126.11 <none> Red Hat Enterprise Linux CoreOS 45.82.202009040230-0 (Ootpa) 4.18.0-193.14.3.el8_2.x86_64 cri-o://1.18.3-12.rhaos4.5.git99f5d4a.el8
導入例 (on Windows 10 pro)
PS C:\Users\zaki> crc setup PS C:\Users\zaki> crc start --pull-secret-file .\Downloads\pull-secret.txt
やることはLinuxと一緒。
ver 1.2の頃はちょっと工夫が必要だったけど、普通に動くようになっていた。
PS C:\Users\zaki> crc oc-env $Env:PATH = "C:\Users\zaki\.crc\bin\oc;$Env:PATH" # Run this command to configure your shell: # & crc oc-env | Invoke-Expression PS C:\Users\zaki> & crc oc-env | Invoke-Expression
PS C:\Users\zaki> oc version Client Version: 4.5.9 Server Version: 4.5.9 Kubernetes Version: v1.18.3+6c42de8 PS C:\Users\zaki> PS C:\Users\zaki> PS C:\Users\zaki> oc get node -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME crc-zqfk6-master-0 Ready master,worker 9d v1.18.3+6c42de8 192.168.126.11 <none> Red Hat Enterprise Linux CoreOS 45.82.202009040230-0 (Ootpa) 4.18.0-193.14.3.el8_2.x86_64 cri-o://1.18.3-12.rhaos4.5.git99f5d4a.el8
※ 手元の環境で試してみるとoc login
するためのapi.crc.testing
はcrc start
だけで名前解決されたけど、処理中にアクセスが必要なoauth-openshift.apps-crc.testing
の名前解決がなぜか127.0.0.1
になってうまくいかなかったので、hosts
に記述して回避した。
172.17.200.210 oauth-openshift.apps-crc.testing
--enable-experimental-features
今気づいたんだけど、なんかオプション追加されてました。
$ crc setup --help Flags: --enable-experimental-features Allow the use of experimental features -h, --help help for setup
以前あった--vm-driver string
(hyperv
とかのハイパーバイザを指定する)が無くなってかわりにexperimental featuresがあるんだけど、なんかワクワクしますね、これ。
参考情報
- Red Hat CodeReady Containers(1.0.0-rc)を入れてOpenShift 4をローカルで動かしてみた(成功編) - zaki work log
- 【OpenShift 4】CodeReady Containers 1.2.0をWindowsで動かそうとしたら大変だった話 - Qiita
- CodeReady Containersに関する情報のまとめ - 赤帽エンジニアブログ
ver1.0前後で試したときの情報だけど、手順は変わってないみたい。
Hyper-Vの場合だとあらかじめ"crc"という名前で仮想スイッチを作っておくバッドノウハウが不要になったみたい。
(4) OKD on ベアメタル他
- OpenShiftバージョン: 制限なし
- ユーザー登録: 不要 (pull secretは使用しない…らしい。構築時にセットしてたので未確認)
- 必要なもの: 構成によっていろいろ…例としてベアメタルであればMinimum resource requirementsの通り。(storageは120GBとなっているが用途次第なので節約したければ半分以下でも良い)
- bootstrap: 4vCPUs / RAM16GB (x1)
- control plane: 4vCPUs / RAM16GB (x3)
- compute: 2vCPUs / RAM8GB (x2)
これは「OpenShiftがどんなモノなのかチョットダケ試してみたい」という人にはお勧めしない笑
OpenShiftを業務環境で触っており、学習・検証用に自宅などのプライベート環境にも構築したい人にはお勧め。
また、構築手順もOpenShiftと同様のため、特に「構築そのものの素振り」にもかなりお勧め。
使い方としては、IBM Open Labsのように1日で環境が無くなると困るような場合やアプリやデータの機密性が高くてクラウドには載せられないという事情があるような場合は有用。
スペックについても最も自由度が高いので、OpenShiftのサブスクリプションだけが無い逸般の誤家庭での利用であれば何でもできる。(何でもできるとは言っていない)
証明書の期限切れについてはCodeReady Containersと同様なので注意。
(そもそもOpenShiftも同様)
それと、OKDは厳密にはOpenShiftとは異なります。
2年くらい前までは「OpenShift Origin」という名前で、OpenShiftのコミュニティ版・アップストリーム版という位置づけでリリースされていましたが、OKD4のGAリリースのタイミングで関連性が変更され兄弟関係となりました。
OpenShiftがRed Hat Enterprise Linux CoreOSをノードOSに使用するのに対して、OKD4はFedora CoreOSを使用します。
OpenShift Container PlatformのupstreamであるOKDさん、v4.5がGAしました!と思ったら、OCPとOKDはupstream-downstreamの関係じゃなく、sibling(兄弟) distributionな関係に変わったらしい https://t.co/JrNsuAlG0S https://t.co/ZsKDtKaf7y
— Manabu Ori (@orimanabu) 2020年7月16日