OpenShift the Easy Way からの
Hard? Way
ちょいと早い忘年会 OpenShift.Run Winter 2020 #11 @loftkun
whoami
• @loftkun
• 日本アイ・ビー・エム
• CNDF2020実行委員
• Contribute : Minikube
• Red Hat OpenShift Administration ラーニング受講中
Agenda
• 構築方法
• Red Hat CodeReady Containers ( CRC )
• UPI install on bare metal
構築方法
Environments
https://cloud.redhat.com/openshift/install
おうちOpenShift
the Hard?
Way
the Easy
Way
https://cloud.redhat.com/openshift/install
the Easy Way
Red Hat CodeReady Containers ( CRC )
https://cloud.redhat.com/openshift/install
About CRC
• minimalなOpenShift 4 クラスタを ローカルマシン上に構築できる
• Windows 10 Pro ( 1709+ )
• macOS ( 10.12+ )
• RHEL/CentOS 7.5+, Fefora ( , Ubuntu 18.04LTS, Debian 10 )
CRC vs Minikube
コマンド CRC Minikube
初期化 setup なし
クラスター起動 start 同左
クラスター停止 stop 同左
クラスター削除 delete 同左
WebUI表示 console dashboard
• コマンド体系は類似している
https://access.redhat.com/documentation/en-us/red_hat_codeready_containers/1.20/html/getting_started_guide/introducing-codeready-containers_gsg
Spec
https://access.redhat.com/documentation/en-us/red_hat_codeready_containers/1.20/html/getting_started_guide/installation_gsg#minimum-system-requirements_gsg
Requirements ( v1.20 ) my bare metal
vCPU 4 12 ( core i7-8700K)
RAM [GB] 9 64
Storage [GB] 35 512
• 今回は、ベアメタル上のRHEL8.0にCRCを導入して
OpenShiftクラスタを構築してみました
• リソースや仮想化機能などのチェックが入る
• メモリ容量とディスク容量は足りないと怒られる
• オーバーコミット的には起動できなそうなので、要件を
満たすマシンが必要なようだ
setup
$ crc setup
INFO Checking if oc binary is cached
INFO Checking if podman remote binary is cached
INFO Checking if goodhosts binary is cached
INFO Checking if CRC bundle is cached in '$HOME/.crc'
INFO Checking minimum RAM requirements
INFO Checking if running as non-root
INFO Checking if Virtualization is enabled
INFO Checking if KVM is enabled
INFO Checking if libvirt is installed
INFO Checking if user is part of libvirt group
INFO Checking if libvirt daemon is running
INFO Checking if a supported libvirt version is installed
INFO Checking if crc-driver-libvirt is installed
INFO Checking for obsolete crc-driver-libvirt
INFO Checking if libvirt 'crc' network is available
INFO Checking if libvirt 'crc' network is active
INFO Checking if NetworkManager is installed
INFO Checking if NetworkManager service is running
INFO Checking if /etc/NetworkManager/conf.d/crc-nm-dnsmasq.conf
exists
INFO Checking if /etc/NetworkManager/dnsmasq.d/crc.conf exists
Setup is complete, you can now run 'crc start' to start the OpenShift
cluster
$
• libvirtdを起動するように怒られた
• 起動するとstartに成功した
• ocコマンドによるアクセスが可能となる
• crc oc-env
• oc login
• WebUIをブラウザで開ける
• crc console
start
$ crc start
( 略 )
WARN No active (running) libvirtd systemd unit could be found
- make sure one of libvirt systemd units is enabled so that it's
autostarted at boot time.
found no active libvirtd systemd unit
$
$ sudo systemctl start libvirtd
$
$ crc start
( 略 )
Started the OpenShift cluster
To access the cluster, first set up your environment by following
'crc oc-env' instructions.
Then you can access it by running 'oc login -u developer -p
developer https://api.crc.testing:6443'.
To login as an admin, run 'oc login -u kubeadmin -p hxYtC-
KLeQC-kfNkm-ppi8i https://api.crc.testing:6443'.
You can now run 'crc console' and use these credentials to
access the OpenShift web console.
$
WebUI
$ crc console
• From Git
• ソースコードのリポジトリからデプロイ
• Container Image, From Dockerfile,
YAML
• From Catalog
• Databases、Operator Backed、Helm Chart
Quick Starts
• Quick Start ( チュートリアル )もついている
• CRCは、わずか数回のコマンド実行で
OpenShiftを使い始められるようになっている
[loft@rhel8 ~]$ oc login -u kubeadmin -p **********
https://api.crc.testing:6443
Login successful.
You have access to 59 projects, the list has been suppressed. You can list all projects with '
projects'
Using project "default".
[loft@rhel8 ~]$ oc get po
NAME READY STATUS RESTARTS AGE
nodejs-sample-1-build 0/1 Completed 0 15m
nodejs-sample-8578969d46-qhkzp 1/1 Running 0 14m
[loft@rhel8 ~]$
the Hard? Way
UPI install on bare metal
the Hard?
Way
• 今回は UPI install on bare metal を選択
• IPI install on bare metal は 4.6 で新規追加されているようです https://cloud.redhat.com/openshift/install/metal
Requirements ( v4.6 )
https://docs.openshift.com/container-platform/4.6/installing/installing_bare_metal/installing-bare-metal.html#minimum-resource-requirements_installing-bare-metal
ノード OS vCPU RAM [GB] STORAGE
[GB]
台数
ブートストラップ RHCOS 4 16 120 1
コントロール RHCOS 4 16 120 3
コンピュート RHCOS 2 8 120 2
合計 - 20 80 720 6
検証環境
https://access.redhat.com/documentation/ja-jp/openshift_container_platform/4.6/html/installing_on_bare_metal/installing-on-bare-metal#prerequisites
ノード OS vCPU RAM [GB] STORAGE
[GB]
台数
ブートストラップ RHCOS 4 16 120 1
コントロール RHCOS 4 16 120 3
コンピュート RHCOS 2 8 120 2
踏み台サーバー RHEL8.0 2 4 50 1
合計 - 22 84 770 7
My bare metal ESXi 12 64 2000 1
追加
DNS/DHCP/Loa
dBalancer用
オーバーコミット
core i7-8700K ( 6core/12thread ) / RAM 64GB / HDD 2TB
Goal
1. Prepare bare metal and ESXi
2. Prepare bastion VM
3. Prepare node VMs
4. Prepare DHCP, DNS, LoadBalancer, etc 参考:
OpenShift 4.1をベアメタルへUPIインストールする - 赤帽エンジニアブログ
https://rheb.hatenablog.com/entry/openshift41-baremetal-upi
DNSサーバ :
クラスタのドメイン
名解決
DHCPサーバ :
IPアドレスを各ノー
ドに付与
LoadBalancer :
APIへのアクセス
を各コントロール
ノードに分散
Webサーバ :
各ノードがブート時
に設定ファイルを
GET
# coreos-installer install
# ./openshift-install wait-for bootstrap-complete
( : 30分くらい待つ )
Bootstrap status: complete
5. Bootstarp cluster
リソース負荷
• 今回はオーバーコミットしていることもあり
• アイドル状態でもCPU60%以上で推移
• 搭載実メモリはほぼ使用されている
注意事項
• VM間の時刻ずれがないよう注意
• ESXiホストのNTP設定をしてなく、数日放置しておいたら、
踏み台VMと(ブートストラップ前の)ノードVMとの間に
数日の時刻差が生じていた
• 気づかずにそのままクラスタのブートストラップを進めると、証明書の検証で怒られた
• ESXiを使う場合はESXiホストにNTPの設定して時刻がずれないようにし
よう
まとめ
Red Hat CodeReady Containers ( CRC )
• わずか数コマンドでOpenShiftクラスタを構築したいあなたにおすすめ
UPI install on bare metal
• 手数と時間はかかるが、本格的なマルチノード構成のおうちOpenShiftを自
分の手で構築したい自作派のあなたにおすすめ
• 実行コマンドなどの詳細はkubernetesアドベントカレンダー2020に投稿予
定です。
• 4.6でのインストール手順の変更点など記載予定です。
EOP
ご清聴ありがとうございました。

OpenShift from Easy way to Hard ? Way

Editor's Notes

  • #2 OpenShift the Easy Way からのHard? Way というタイトルで発表いたします よろしくおねがいたします
  • #3 自己紹介させていただきます、ロフトくんという名前で活動しております。 日本IBMでエンジニアをしております。 Cloud Native Days Fukuoka 2020 の 実行委員をしておりました。 昨今の状況でそのイベントは流れてしまいましたが、オンラインのイベントもありますので、 引き続きイベントやコミュニティを盛り上げることに貢献していきたいと思っております。 OSS活動としてMinikubeにコントリビュートしています、 OpenShiftは、OpenShift Administration という Red Hatさん提供のラーニングがありまして、 そちらを受講していて、資格の方も受験したいと思っています。
  • #4 アジェンダです OpenShiftの構築方法がいくつかりましてそちらをご紹介しまして その中から、 比較的手数が少なく構築できる Easyな方法としまして、 Red Hat CodeReady Containas CRC を紹介します、 また、少し手数が多くて時間がかかるので少しHard? かもしれない方法として、UPI install on bare metal という方法をご紹介します。 10分間の少し駆け足でのご紹介となるかと思いますがよろしくお願いいたします。
  • #5 構築方法のご紹介をいたします
  • #6 こちらは公式ドキュメントのインストールのページです。 インストール可能な環境ごとにページが分かれています。 上から、public cloud 中段がベアメタルとかOpenStackとかVmwareなど そして、下段にラップトップとなっていて、 さまざまな環境で動かせるようになっています。
  • #7 今回はその中でも、おうちOpenShiftを構築できる方法としまして、 ラップトップ上に簡単に構築できる方法と、 少し手数はかかるんですが、ベアメタル上に構築する方法をご紹介しようと思います。
  • #8 まずは手軽に構築できる方法をご紹介します
  • #9 先ほどのインストールページでRun on Laptopを選びますと、 ここに、Red Hat CodeReady Continers と書かれていますように、 CRCのダウンロードやインストール手順のドキュメントを参照できるようになっています。
  • #10 CRCの概要です。 CRCはminimalなOpenShift 4 クラスタを ローカルマシン上に構築できるツールです。 対応OSは、Windows, Mac, LinuxではRHELとCentOS、Fedoraに対応しています。 UbuntuやDebianは公式サポート外ではありますが インストール自体はできそうとマニュアルに書いてあります。
  • #11 CRCと類似のツールとしまして、ミニクベというローカルにkuberneteクラスタを構築できるツールがあります、 ミニクベといえば先ほど発表されたバルゴさんという感じですけれども、 コマンド体系も似ていて、ミニキューブと同じように手軽に使えそうだと感じております。 crcを使い始めるのに必要なコマンドはsetup と start だけとなります。 ---------------------------- (Minikubeはマルチノード対応が進んでいる、CRCはシングルノードのようだ)
  • #12 CRC 動作環境の要求スペックと今回検証した環境のスペックです。 CRCは 4コア、RAMは9GB、ストレージは35GB必要としています、 検証環境はこんなスペックです。最近のラップトップマシンなら要求スペックを満たしているかなと思います。 ただ、空きメモリが9GB以上必要なのでそこは注意が必要です。 OSはRHEL8.0を使用しています。
  • #13 構築手順としましては、crc setupコマンド実行しますと、リソースや仮想化機能のチェックがはいります。 このとき、メモリとディスク容量は足りない場合は怒られるようですので、 要求スペックを満たすマシンの用意は必要なのかなというふうに見えています。
  • #14 つづいて、startコマンドでクラスタを構築・起動するという、お手軽に構築できる流れですね。 私が試したときは、Libvirtdが起動してないと怒られたので、別途手動で起動してあげるとうまくいきました。 起動に成功すると、このようなコマンド実行例が表示され、ocコマンドを使ってクラスタへのアクセスが可能となります。 さきほどzakiさんの発表でも紹介がありましたコマンドですね また、crc consoleコマンドでOpenShiftのWebUIをブラウザで表示できるようになります ------------------------------------------------- ccコマンドはkubectlコマンドに相当するツールで、Openshift や k8s を操作できるCLIツールです。
  • #15 crc console コマンドで、表示するとこのように見えます。 先ほど土井さんの発表にもありましたように、WebUIからもデプロイなどもできて From Git メニュー、ソースコードのリポジトリを指定すると、 コンテナイメージビルドからデプロイまでできるようになっています。 また、カタログから、DBとかミドルウェアなどのテンプレートを選択してデプロイできます。 ( Databases、Operator Backed、Helm Chart )
  • #16 WebUIにチュートリアルもついているので、簡単に使い始められます。 右上はチュートリアルにいわれがままに画面ポチポチしていてて GitHub上のnodejsのWebアプリのソースコードリポジトリを指定すると、 イメージをビルドしてくれて、podのデプロイまでできている画面です。 このように、ここまで、わずか数回のコマンド実行で OpenShiftを使い始められる、CRCをご紹介いたしました。
  • #17 つづいて、Hardかもしれない方法をご紹介します。 OpenShiftのイベントなのに勝手にHardとか言ってすみません
  • #18 インストール手順のページで、ベアメタルを選びますと、このように3種類の方法が選べるようになってます。 今回は一番右の User-provisioned infrastracgure 略して UPI インストールを実施しています。 こちらはユーザー自身がインフラを準備するというインストール方法になります。 ------------------------------ 左 : Assisted Bare Metal installer、これは構築したいクラスタの構成などをこのサイト上で入力すると それを構成できるISOを ダウンロードできる方法のようです。 真ん中 : Installer-provisioned infrastracute 、 インストーラによってインフラが作成されるインストール方法です これは頭文字をとって、IPI インストール呼ばれます。 ( 各ノードの管理コントローラーBMC(IPMI)のプロトコルをつかって構築するようです。) ベアメタルへのIPIインストールは、最新の4.6 で新規追加になりました。
  • #19 この手順での最小要件です。 ブートストラップが1台、コントロールプレーンが3台、コンピュートノードが2台、合計6台で、 cpuが20コア、RAM 80GB、STORAGE 720GB必要となっています。 これに加えて →
  • #20 さらに、ネットワークの要件を満たすために、1台サーバを追加してそのため必要リソースがその分増えています。 このリソース要求に対して、私が用意したbare metalのスペックはこの様になっています。 cpuコア数とメモリが足りていないという状態です。 今回、各ノードとサーバーはVMで構築するようにしておりまして、 cpuとメモリはオーバーコミットしている状態になっていますが、 無事にOpenshiftをインストールして動かすことはできています。 こちら自作派の方は、おうちkubernetesとかOpenShiftを構築する際の スペック選定の参考の1つになりましたら幸いです。
  • #21 ちょっと味気ない図となってしましましたが、構成図です。Draw.io力を磨きたいと思って使ってみました こちらのベアメタル上に、ハイパーバイザーとしてESXiをインストールしています。 踏み台サーバーVM1台と、 OpenShiftのノード用のVMを6台、合計7台のVMを構築していく流れになっています。 --------------------------------------------------------------------------------- このうち、ブートストラップノードはクラスタの構築時のみ必要で、構築が終わったら削除できるノードとなっています。 ちなみにDraw.ioで書いて見たんですがサクッとかけて仕様書用途には良いかなというかんじですね。
  • #22 順を追っていきますと、こちらが構築前の初期状態です。 家庭内のネットワークに1台ベアメタルがあり、ハイパーバイザとしてESXiが入っている状態です。
  • #23 その上に、必要なマシンをVMとして作成します。 踏み台サーバのVM1台構築しまして、OSはRHEL8にしています、
  • #24 そしてクラスタのノードとなるVMを6台追加で作成して、同じスイッチに接続するようにしています。 OSはRedHatCoreOSです、ここまでで必要なマシンが揃ったという状態です。
  • #25 続いて、ネットワークの要件を満たすために、踏み台サーバ上に、DNS、DHCP、ロードバランサーやWebサーバを立てていきます。 このあたりがまさに、User Provisionなところで、決まったツールや手順というものは定められてないのですが、 Red Hat エンジニアブログにSolutionArchitect田中さんが実践例を書いて下さっていますので、そちらが非常に参考になります。 私もその記事にあやかって最新の4.6のUPIインストールの手順例としてブログに残しておこうと思っています。 -------------------------------- クラスタのドメイン名解決をするDNSサーバを立てたり、 IPアドレスを各ノードに付与するDHCPサーバを立てたり、 APIへのアクセスを各コントロールノードに分散するロードバランサーを立てたり、 各ノードのブートストラップ時に設定ファイルをGETできるようにするWebサーバを立てたりする。
  • #26 ここまででマシンとネットワークの準備が整ったところで、 各ノード上のCoreOSのいんすーらのinstallコマンド実施して、 あとはクラスタ構築が完了するまで待ち状態になります。 だいたい、このinstallコマンドを発行してから、ブートストラップが完了して、 全てのOperatorの起動が完了するまで、1時間くらいかかるかなという感じでした。 ここまでで、VM7台構築してUPIインストール全体を手作業でやるには、 1日くらいは見ておいたほうがいいかなという印象です。 ここまで、UPIインストール on bare metalの構築手順をご紹介しました。
  • #27 こちらは、UPIインストール後のESXiホストのリソース表示です。 cpuコア数もメモリもオーバコミットしている環境ですので、 cpu使用率も常時高めで、メモリはほぼ使用されているという状態でした。 WebUI触って軽いWebアプリをデプロイした感じでは重たい感じはなかったですが、 今後いろいろとアプリケーションをデプロイして本格的に使おうとするとどうなっていくか見てみたいと思っています
  • #28 今回UPIインストールする中で気づいた注意事項をご紹介します VM間の時刻ずれに注意が必要です。 今回、ESXiホストのNTP設定をしてなくて、数日放置していたら、 踏み台VMと、ブートストラップ前のVMのとの間に数日の時刻差が生じていました それに気づかずにそのままストラップをすすめていくと、証明書の時刻の大小関係おかしいぞとエラーが出て、 もういちど、VMの時刻合わせて、ブートスラップをやりなおすということがありました。 なので、VM間の時刻ずれがないようにということに注意が必要かなと思います。 ESXiの場合はホストのNTPの設定があるのでそれをしていれば大丈夫かと思います。
  • #29 まとめです おうちOpenShiftクラスタを簡単に構築できる方法として、 Red Hat CodeReady Containers ( CRC ) をご紹介しました、 わずかなコマンドでOpenShiftクラスタを構築したい方におすすめです また、ちょっとHard?かもしれない方法として、UPI install on bare metalをご消化しました 手数と時間はかかるが、本格的なマルチノード構成のおうちOpenShiftを自分の手で構築したい自作派の方におすすめ 実行コマンドなどの詳細はkubernetesアドベントカレンダー2020に投稿予定です。 ぜひご覧いただきましたら幸いです。
  • #30 ということで発表は以上となります、ご清聴ありがとうございました。