OpenShift4.2がリリースされたので、家で使ってみようと、 CodeReady Containers(crc)
をインストールしてみた。
CodeReady Containersは、これまで minishift
という名前のプロダクトだったものが、OpenShift 4.xになって名前が変わったもので、
テストとか開発とかに使えるものである。
10/17にgithub上では1.0.0のタグが切られていたが、まだpre-releaseのようだ。 Red Hat Developers Programに登録していれば、Developer Preview版が利用できるようだ。
導入した環境
- Windows 10 Professional
- メモリ 64 GB (メモリはわりと食うので少ないとつらいと思う)
ダウンロード
ここからリンクを辿っていくとダウンロードできる。
https://developers.redhat.com/products/codeready-containers
OSごとのバイナリと、インストール時に入力が必要なpull secretをダウンロードしておく。 2GBぐらいあり、わりと重たい。
起動
基本ドキュメント通りにやればよいはず。
ダウンロードしたファイルを展開し、
crc
バイナリをパスの通った場所に配置する仮想マシンを作成する
たぶん場合によってはHyper-Vのネットワークが作成されたりするはず。
λ crc setup INFO Checking if running as normal user INFO Caching oc binary INFO Unpacking bundle from the CRC binary INFO Check Windows 10 release INFO Hyper-V installed INFO Is user a member of the Hyper-V Administrators group INFO Does the Hyper-V virtual switch exist Setup is complete, you can now run 'crc start' to start a CodeReady Containers instance
起動する
起動時にデフォルトではメモリを8GBで起動するが、何かやるには到底足りないので、16GBぐらいは指定しておきたい。 また、DNSサーバを指定しておかないと、他の仮想マシンを動かしてたり仮想ネットワークが複数あったりした場合に、 うまく名前解決できないケースがあったので指定しておくのが吉。
λ crc start -m 16384 -n 8.8.8.8 INFO Checking if running as normal user INFO Checking if oc binary is cached INFO Check Windows 10 release INFO Hyper-V installed and operational INFO Is user a member of the Hyper-V Administrators group INFO Does the Hyper-V virtual switch exist
pull secretを入力する
初回起動時には、pull secretの入力を求められるのでバイナリと一緒にダウンロードしておいたjsonから情報を貼り付ける。
? Image pull secret [? for help] ********************************** INFO Loading bundle: crc_hyperv_4.2.0-0.nightly-2019-09-26-192831.crcbundle ... INFO Creating CodeReady Containers VM for OpenShift 4.2.0-0.nightly-2019-09-26-192831... INFO Verifying validity of the cluster certificates ... INFO Adding 8.8.8.8 as nameserver to Instance ... INFO Will run as admin: add dns server address to interface vEthernet (Default Switch) INFO Check internal and public dns query ... INFO Copying kubeconfig file to instance dir ... INFO Adding user's pull secret and cluster ID ... INFO Starting OpenShift cluster ... [waiting 3m] INFO INFO To access the cluster, first set up your environment by following 'crc oc-env' instructions INFO Then you can access it by running 'oc login -u developer -p developer https://api.crc.testing:6443' INFO To login as an admin, username is 'kubeadmin' and password is XXXXX-XXXXX-XXXXX-XXXXX INFO INFO You can now run 'crc console' and use these credentials to access the OpenShift web console CodeReady Containers instance is running
インストール直後は、一般ユーザである
developer
ユーザ(パスワードはdeveloper)と、 管理者ユーザであるkubeadmin
ユーザの2種類のユーザが存在する。kubeadminユーザのパスワードは起動時に表示されるのでそれを見ておく。
ログイン
ログインは、CLIとWebコンソールのふたつがある。
CLI ログイン
OpenShiftでは、kubernetesでいうところの kubectl
に相当する、 oc
コマンドが存在する。
crcにもocコマンドは同梱されているので、以下のコマンドでパスの通しかたがわかる。
λ crc oc-env
SET PATH=C:\Users\grugrut\.crc\bin;%PATH%
REM Run this command to configure your shell:
REM @FOR /f "tokens=*" %i IN ('crc oc-env') DO @call %i %i
ocコマンドの場所にパスを通したら、あとはログインするだけである。
λ oc login
Authentication required for https://api.crc.testing:6443 (openshift)
Username: kubeadmin
Password:
Login successful.
You have access to 51 projects, the list has been suppressed. You can list all projects with 'oc projects'
Using project "default".
Webコンソールログイン
OpenShiftには、はじめからブラウザ経由でアクセスできるWebコンソールが用意されているので、
そちらを使うことも多いだろう。
crc console
コマンドを実行することで、ブラウザが起動し、Webコンソールにアクセスできる。
オレオレ証明書なので、そこは目をつぶってそのまま接続するとログイン画面が出てくる。
kubeadminユーザでログインするときは、 kube:admin
を、developerユーザでログインするときは、 htpasswd_provider
を選択する。
ログインに成功すると、ダッシュボードが表示されるはずだ。
初期設定
ここまでですぐにOpenShiftが使える状態ではあるが、ベータ版でさわってみてた感じ、以下の設定はやっておいたほうがよさそう。
- 監視機能の有効化
- ユーザの作成
監視機能の有効化
ダッシュボードでクラスタのリソース状況が見れたり、Podの状況が見れる枠はあるものの、 デフォルトでは監視機能が無効化されているため、まったく意味をなしていない。
そこで、監視を有効化して、情報を収集できるようにしておく。
方法はドキュメントに書いてあるとおりで、以下のコマンドを順にCLIで実行すればよい。 ドキュメントだと、セミコロン区切りでまとめて書いてあるが、windowsの場合はセミコロンで複数コマンドを順番に実行する ことができないので、ひとつずつ分割して実行する。
λ oc scale --replicas=1 statefulset --all -n openshift-monitoring
statefulset.apps/alertmanager-main scaled
statefulset.apps/prometheus-k8s scaled
λ oc scale --replicas=1 deployment --all -n openshift-monitoring
deployment.extensions/cluster-monitoring-operator scaled
deployment.extensions/grafana scaled
deployment.extensions/kube-state-metrics scaled
deployment.extensions/openshift-state-metrics scaled
deployment.extensions/prometheus-adapter scaled
deployment.extensions/prometheus-operator scaled
deployment.extensions/telemeter-client scaled
しばらくすると、ダッシュボードに収集した値が表示されるようになるだろう。 ちなみに監視機能は結構メモリを消費するので、デフォルトの8GBだとメモリが足りなくて必要なPodを起動できず動かない問題が確認できている。
ユーザの追加
kubeadminユーザでWebコンソールにログインすると上の方で警告画面がでているところからもわかるとおり、 kubeadminユーザは一時的なユーザらしく、あまりこれを使うのは好ましくないらしい。 まあパスワードも覚えにくいし、適当に自分で作ったほうがよいだろう。
ログイン手段の作成方法もいくつかあるが、デフォルトで用意されているdeveloperユーザ用の htpasswdに自分用のユーザを作成するのが楽だろう。
https://console-openshift-console.apps-crc.testing/k8s/ns/openshift-config/secrets/htpass-secret
にアクセスすると(もしくは左のメニューの Workloads
の中の Secrets
から、 htpass-secret
を探すのもよい)、
ログイン用のhtpasswdが書かれたsecretの設定を見ることができる。
ここから、右上の Actions
から Edit Secret
を選択する。
htpasswdの設定を作成する方法はいくつかあるが、たとえば WSL
等のLinux環境がある場合は、
htpasswdコマンドを使えば簡単に作成できる。
今回は、私用に、grugrutユーザを作っている。
$ sudo apt install apache2-utils
$ htpasswd -n grugrut
New password:
Re-type new password:
grugrut:XXXXXXXXXXXXXXXXXXXXXXXXXX
これで oc login
してみると、作成したユーザでログインできるはず。
だが、これだけだと何もできないただログインできるだけのユーザなので、
クラスタ管理者の権限である cluster-admin
ロールをバインドする。
kubeadminユーザで
https://console-openshift-console.apps-crc.testing/k8s/all-namespaces/rolebindings
にアクセスし、 Create Binding
ボタンをクリック。
Binding Type
は、Cluster-wide Role Binding
を選択Name
は、名前がかぶると怒られるので、cluster-admin-(作成するユーザ名)
とでもすればよいRole Name
は、cluster-admin
を選択Subject
は、User
を選び、先程作成したユーザ名を入れる
これで作成すれば、晴れてクラスタ管理者となれる。
ちなみにコマンドだと、
oc adm policy add-cluster-role-to-user cluster-admin (ユーザ名)
であり、もしかしたらこっちのほうが楽かもしれない。
kubeadminユーザの削除
自分自身をクラスタ管理者にしたら、もはやkubeadminユーザは不要なので消してしまってもよいはず。 ドキュメントにも消しかた書いてあるし。
https://docs.openshift.com/container-platform/4.2/authentication/remove-kubeadmin.html
kubeadminユーザを削除することによって、Webコンソールへのログイン時に、「kube:admin」か「htpasswd」なのか 選ばなくてよくなるので、ユーザを作ったあとは消してしまってよいかもしれない。
まとめ
これで家の環境でOpenShiftが使えるようになったので、今後コンテナ動かすところなども見ていきたい。
注意点
今のところバグで、30日で証明書が期限切れになり、起動できなくなってしまうらしい。 解決策はなく、一度削除して(当然作成したものも消える)、作りなおす必要があるとか。 おそろしい話である。
Share