見出し画像

ローカルOpenShift環境 - CodeReady Containers 導入について

こんにちは。RGA(リアルグローブ・オートメーティッド)でインフラエンジニアをしている川合です。

先日(2022/2/16)弊社のエンジニアも執筆に加わった技術書「OpenShift徹底入門」の発売記念イベントがあり、私も「OpenShiftの良いところ、導入ポイント」というお題でスピーチさせていただきました。

その中で、OpenShiftの基本を知るための手軽に試せる環境はないか、とのコメントもありましたので、今回はローカルマシン上で利用できるOpenShiftであるCRC (CodeReady Containers)を紹介したいと思います。多少導入までに時間がかかりますがとても手軽に試せますので、ご興味がある方は是非試していただければと思います。

※Windows環境にもインストール可能ですが、安定性悪いようですのでご注意ください。

OpenShiftとCRCの違い

CRCには、OpenShiftと異なる点がいくつかあるのですが、主なものは以下の4点です。

  • シングルノード(controle planeとworkerが同居)

  • machine-config, monitoring Operatorが無効化されている

  • ドメインは *.crc.testing固定

  • 内部IPアドレスは変更不可

ということで、CRCはあくまで勉強用としての利用にとどまります。

以下は関連リンクになります。

事前準備

CRCのインストールには、以下のアカウントとハードウェアが必要になります。

  • Red Hat開発者プログラムアカウント

  • 以下のハードウェア要件が満たせる環境

    • 4コア

    • 9GB RAM

    • 34GB空き容量

ダウンロード

CRCのダウンロードはこちらからできます。
https://console.redhat.com/openshift/downloads

RedHatのアカウントが必要なので先に(https://access.redhat.com/から)アカウントの登録をしてサイトにログインします。

サイトにログイン後、crc (CodeReady Containers) のダウンロードをします。

VMイメージくらいのデータサイズがあるのでストレージの空き容量に気をつけましょう。ダウンロード完了までしばらくかかります。

併せて、最下部にある「Pull secret」(後でインストール時に使用します)もダウンロードしておきます。

インストール

crcのダンロードが完了したら、インストーラーを実行しガイドに従いインストール処理を進めます。
※解凍が必要な場合は解凍します
参考情報:https://access.redhat.com/documentation/ja-jp/red_hat_codeready_containers/1.35/html/getting_started_guide/installation_gsg

インストールが完了したら、ターミナルから「crc」コマンドが使えることを確認します。

❯ crc version
CodeReady Containers version: 1.37.0+3876d27d
OpenShift version: 4.9.10 (bundle installed at /Applications/CodeReady Containers.app/Contents/Resources/crc_hyperkit_4.9.10.crcbundle)

CRCのセットアップ(OpenShift環境構築)

crcコマンドを使って環境の構築をします。

crcダウンロード時に併せてダウンロードした「Pull secret」ファイルの準備をしておきます。

参考情報:https://access.redhat.com/documentation/ja-jp/red_hat_codeready_containers/1.35/html/getting_started_guide/using-codeready-containers_gsg

まず次のコマンドでOpenShift環境のセットアップをします。VMの構築などを行っているためそれなりに時間を要します。

❯ crc setup

上記コマンドの実行が正常に終了したら、次のコマンドを実行してOpenShiftが使用できるようにします。

実行時にダウンロードした「Pull secret」ファイルの設置場所を指定します。
※少し時間かかります。

参考情報:https://access.redhat.com/documentation/ja-jp/red_hat_codeready_containers/1.35/html/getting_started_guide/starting-the-virtual-machine_gsg

❯ crc start -p /path/to/pull-secret.txt
INFO Checking if running as non-root
INFO Checking if crc-admin-helper executable is cached
INFO Checking for obsolete admin-helper executable
...
Started the OpenShift cluster.

The server is accessible via web console at:
  https://console-openshift-console.apps-crc.testing

Log in as administrator:
  Username: kubeadmin
  Password: XXXXX-XXXXX-XXXXX-XXXXX

Log in as user:
  Username: developer
  Password: developer

Use the 'oc' command line interface:
  $ eval $(crc oc-env)
  $ oc login -u developer https://api.crc.testing:6443

無事実行が完了すれば「oc」コマンドから各種操作ができるようになります。

正常に動作しているかは次のコマンドで確認できます。

❯ crc status
CRC VM:          Running
OpenShift:       Running (v4.9.10)
Disk Usage:      18.2GB of 32.74GB (Inside the CRC VM)
Cache Usage:     12.64GB
Cache Directory: /Users/kawairyo/.crc/cache

次の記述を「.bash_profile」などに書き込んでおくと、以降「oc」コマンドが実行できるようになります。

eval $(crc oc-env)
#podmanも使用する場合
#eval $(crc podman-env)

OpenShiftの操作

Podが上手く起動できるかなど確認するため、簡単なOpenShiftの操作を行ってみます。

まずはOpenShiftにアクセスできるようにログインします。

eval $(crc oc-env) # .bash_profile 側で処理している場合はこの実行は不要
#非特権アカウントでログイン
❯ oc login -u developer https://api.crc.testing:6443
#接続先クラスターの確認
❯ oc version
Client Version: 4.9.10
Kubernetes Version: v1.22.3+ffbb954

参考情報:https://access.redhat.com/documentation/ja-jp/red_hat_codeready_containers/1.35/html/getting_started_guide/accessing-the-openshift-cluster_gsg

まず、作業環境としてプロジェクトを作成します。

❯ oc new-project demo

次に、アプリケーションのデプロイをします。

❯ oc new-app rails-postgresql-example

コンテナのデプロイ状況は次のコマンドで確かめます。

❯ oc status
#詳細な状況の確認
❯ oc logs -f buildconfig/rails-postgresql-example

デプロイしたPodやリソースの確認は次のコマンドで確認できます。

#全リソースを確認
❯ oc get all
#Podだけ一覧したい場合
❯ oc get pods

ブラウザでも確認できます。FQDNを確認する場合は次のコマンドで確認できます。

「HOST/PORT」の内容が外部からアクセス可能なFQDNです。この場合はこのURLとなります。http://rails-postgresql-example-demo.apps-crc.testing

❯ oc get routes
NAME                       HOST/PORT                                        PATH   SERVICES                   PORT    TERMINATION   WILDCARD
rails-postgresql-example   rails-postgresql-example-demo.apps-crc.testing          rails-postgresql-example   <all>                 None

確認が完了したのでデプロイしたものを削除します。
※自動でラベルが設定されているため同じラベルのリソースを一括削除します

❯ oc delete all -l app=rails-postgresql-example

プロジェクトを削除します。

❯ oc delete project demo

CRC その他の操作

CRCの停止

❯ crc stop

CRCの環境削除・クリーンアップ

#削除
❯ crc delete
#全削除
❯ crc cleanup

CRCのデバッグ

crc status --log-level debug

以上でCodeReady Containersの導入手順の説明は終わりです。手軽に楽しめるので色々遊んでみてください。
__________________________________

執筆者プロフィール:川合 亮
ホスティングサービス用サーバーの設計・構築および運用サポートに10年間携わっており、Ansibleを使ったサーバー構築の自動化やコンテナ技術を用いたデプロイの簡易化を企画からリリースまでを担当。
現在はその経験を活かしつつOpenShiftの導入支援に関する業務に従事している。

【ご案内】
ITシステム開発やITインフラ運用の効率化、高速化、品質向上、その他、情シス部門の働き方改革など、IT自動化導入がもたらすメリットは様々ございます。

IT業務の自動化にご興味・ご関心ございましたら、まずは一度、IT自動化の専門家リアルグローブ・オートメーティッド(RGA)にご相談ください!

お問合せは以下の窓口までお願いいたします。

【お問い合わせ窓口】
代表窓口:info@rg-automated.jp
URL: https://rg-automated.jp