はじめに
前回、MkDocsを動かすためのコンテナイメージを作成しました。今回はこのイメージを使い、OpenShift上でMkDocsのコンテナを動かしてみます。
事前準備
コンテナイメージの準備
今回はMkDocsのコンテナイメージを使って、OpenShift上にコンテナをデプロイします。イメージをビルドする際に使ったDockerfileなどについては、前回の記事を御覧ください。
面倒なときのために、Docker Hubにイメージをアップロード済みなので、こちらをPullして使うこともできます。
OpenShiftクラスタの用意
OpenShiftは、Red Hatが提供するKubernetesディストリビューションです。宗教上の理由で、今回はKubernetesではなくOpenShiftを利用します。OpenShiftとKubernetesの違うところは、以前ふんわりまとめたので、興味があれば御覧ください。
みなさんは一家に一台、OpenShiftクラスタがありますか?ある場合は、それを使ってください!
もし(私のように)ない場合、Red Hat CodeReady Containers(CRC)を使うという手もあります。CRCでは、minikubeのような1ノードクラスタでOpenShift4の機能を触ってみることができます。利用方法は、以前まとめましたのでご参考。
やってみる
では、実際にコンテナをデプロイしてみましょう。ここに書く手順は、例のごとくGitHubにまとめていていますので、御覧ください。
今回はシンプルに、コマンドを1つずつ実行してデプロイしてみます。以下のようなコマンドを実行していきます。
1 2 3 4 5 |
$ oc new-project mkdocs-dev $ oc run mkdocs --image=nishipy/mkdocs:sha-512b185 $ oc expose deploymentconfigs.apps.openshift.io mkdocs --port 8000 $ oc expose service mkdocs $ oc get route mkdocs |
各コマンドで、以下のような操作をしています。
- プロジェクトの作成
- コンテナイメージから、DeploymentConfigの作成
- ClusterIPの作成
- Routeの作成
- Routeの確認
ここで、Kubernetesを使っていると目にしないリソースが出てきました。DeploymentConfig
とRoute
です。この2つはOpenShift独自のリソースです。詳しい説明は別の機会に行う予定ですが、ここでも軽く説明します。
DeploymentConfig
は、ここではDeployment
とだいたい同じだと思って差し支えないです1。一方、Route
はKubernetesにおけるIngressと同様の働きをするリソースで、主にHTTPやHTTPSでアクセスするPodを、クラスタ外部に公開する場合に使います。Routeを作成するとホスト名が払い出され、ユーザーはこれを介して、Podアクセスすることができます。Podへの通信は、OpenShift内部で動いているRouter(HAProxyのPod)によって負荷分散されます。
長くなりましたが、OpenShiftでは、Routeを作成することで、簡単にPodをクラスター外部に公開できます。今回の例ではoc get route mkdocs
としてホスト名を確認した後、ブラウザやcurl
コマンドを利用すれば、以下のようにMkDocsのPodにアクセスできます。
コメント