zaki work log

作業ログやら生活ログやらなんやら

個人環境で無料で利用できるOpenShift 4.x環境4選

クラウドリソースの使用料やサブスクリプションの費用無しに利用することができる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」で開始できます。

learn.openshift.com

本来は、「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でインストールもできます。

シングルノードなのでノードをcordondrainしたり、ノード故障関連でのサービス持続性を確認することはできません。

f:id:zaki-hmkc:20200923200958p:plain

あと、KatacodaのOpenShiftシリーズでもほぼ同じものが利用できる。

www.katacoda.com

(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環境を一定時間無料で使用できる、というもの。

developer.ibm.com

Learn OpenShiftと同じようにブラウザ上でコンソール操作も可能ですが、特徴的なのはクラスターへアクセスするための各種クレデンシャル情報が揃っているので、自分のラップトップなどのocコマンドでもoc loginできます。
手元の環境にocが入っておらず、でもweb上でのコンソール作業はちょっとツライ場合でも、SSHVNC(デスクトップ)で操作用端末へログインすることも可能。
(VNCはnoVNCを使ったブラウザアクセスなので、専用クライアントアプリは不要)

ちなみにVNCでデスクトップへアクセスすると、VS Code(Kubernetes拡張やOpenShift拡張も入っている)もセットアップ済み。

f:id:zaki-hmkc:20200923191500p:plain

運が良ければproxyの深淵からでもアクs(ry

時間も最大7時間使用でき、スペックも検証には十分な4vCPUs・RAM16GBの2ノード構成なので、だいたい何でもできる。(何でもできるとは言っていない)
むしろクラスターが1営業日程度しか使えないのを逆手にとって、クラスター外部に構築したデプロイの自動化設定などの確認に使っても良いかもしれない。

使用するには"Launch Lab"をクリックしてIBM Cloudアカウントでサインインすれば環境が構築されます。

f:id:zaki-hmkc:20200923190900p:plain

再度"Launch Lab"をクリックするとwebのターミナル画面になります。
時間延長やクレデンシャル情報のアクセスは、画面右上の時計アイコンや鍵アイコンから。

f:id:zaki-hmkc:20200923191128p:plain

鍵アイコンをクリックすると、OpenShift・SSHVNCそれぞれの情報を確認できる。

f:id:zaki-hmkc:20200923200036p:plain

参考情報

具体的な利用方法については、戸倉彩さんのQiitaの記事を参考にすると良いです。
現在と画面は若干異なっているけど、流れは同じ。

qiita.com

qiita.com

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から実行します。

code-ready.github.io

時間制限のあるクラウドサービスのクラスターと異なり、使わない時間はシャットダウンしておいて続きは明日とかできるけど、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.0CentOS 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.testingcrc 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があるんだけど、なんかワクワクしますね、これ。

参考情報

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を使用します。

参考情報