当ページのリンクには広告が含まれています。
✓目次
- OpenShiftを実機で動かすための環境構築方法は以下を参考にしてください。
- Dockerって何?ビルドって何?という方は以下の記事を参照いただければと思います。
1. Githubにソースコードをpushしておく
- 今回は簡単なデモなので、python on Flaskの簡単なコードをご自身のGithubリポジトリにおいておきましょう。この記事で使用するのは、以下のapp.pyファイルと、requirement.txtファイルの2つです。
app.py1 2 3 4 5 6 7 8 9 10 11 12 13 14
| import os from flask import Flask app = Flask(__name__)
@app.route("/") def main(): return "Welcome!"
@app.route('/how are you') def hello(): return 'I am good, how about you?'
if __name__ == "__main__": app.run(host="0.0.0.0", port=8080)
|
2. OpenShift Web Consoleでプロジェクト作成と設定を行う
OpenShiftのWebコンソールを開き、ログインします。
今回は、pythonのプログラムを動かすので、pythonというカタログを選択します。すると以下のような画面が現れるので、nextをクリックしましょう。
プロジェクト名等を入力しましょう。これらは任意の名称で問題ありません。そして、Git Repository欄に、GithubリポジトリのURLを入力し、Createをクリックしましょう。
以下のように表示されれば、プロジェクトの作成と設定は完了です。
3. 作成したプロジェクトを確認する
以下のように、Webコンソール画面の右側に作成したプロジェクトが表示されます。本記事の場合ですと、Python testというプロジェクトが、それにあたります。My Projectというのは、デフォルトで存在するプロジェクトであり、今回は使用しません。
作成したプロジェクトをクリックし、左側のメニューの「Builds」→「Builds」とクリックすると、自動的に作成されたビルド設定があることが確認できます。
「View Logs」をクリックしてログを確認してみましょう。以下のようになっています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| Cloning "https://github.com/xxxxxxxxxx/openshift-sample-app.git " ... Commit: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (update) Author: xxxx xxxx <xxxxxx@xxxx.com> Date: Thu Dec 10 12:45:37 2020 +0900 Using 172.30.1.1:5000/openshift/python@sha256:ac50754646f0d37616515fb30467d8743fb12954260ec36c9ecb5a94499447e0 as the s2i builder image ---> Installing application source ... ---> Upgrading pip to version 19.3.1 ... Collecting pip==19.3.1 Downloading https://files.pythonhosted.org/packages/00/b6/9cfa56b4081ad13874b0c6f96af8ce16cfbc1cb06bedf8e9164ce5551ec1/pip-19.3.1-py2.py3-none-any.whl (1.4MB) Installing collected packages: pip Found existing installation: pip 9.0.1 Uninstalling pip-9.0.1: Successfully uninstalled pip-9.0.1 Successfully installed pip-19.3.1 ---> Installing dependencies ... Collecting Flask Downloading https://files.pythonhosted.org/packages/f2/28/2a03252dfb9ebf377f40fba6a7841b47083260bf8bd8e737b0c6952df83f/Flask-1.1.2-py2.py3-none-any.whl (94kB) Collecting itsdangerous>=0.24 Downloading https://files.pythonhosted.org/packages/76/ae/44b03b253d6fade317f32c24d100b3b35c2239807046a4c953c7b89fa49e/itsdangerous-1.1.0-py2.py3-none-any.whl Collecting Jinja2>=2.10.1 Downloading https://files.pythonhosted.org/packages/30/9e/f663a2aa66a09d838042ae1a2c5659828bb9b41ea3a6efa20a20fd92b121/Jinja2-2.11.2-py2.py3-none-any.whl (125kB) Collecting click>=5.1 Downloading https://files.pythonhosted.org/packages/d2/3d/fa76db83bf75c4f8d338c2fd15c8d33fdd7ad23a9b5e57eb6c5de26b430e/click-7.1.2-py2.py3-none-any.whl (82kB) Collecting Werkzeug>=0.15 Downloading https://files.pythonhosted.org/packages/cc/94/5f7079a0e00bd6863ef8f1da638721e9da21e5bacee597595b318f71d62e/Werkzeug-1.0.1-py2.py3-none-any.whl (298kB) Collecting MarkupSafe>=0.23 Downloading https://files.pythonhosted.org/packages/b2/5f/23e0023be6bb885d00ffbefad2942bc51a620328ee910f64abe5a8d18dd1/MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl Installing collected packages: itsdangerous, MarkupSafe, Jinja2, click, Werkzeug, Flask Successfully installed Flask-1.1.2 Jinja2-2.11.2 MarkupSafe-1.1.1 Werkzeug-1.0.1 click-7.1.2 itsdangerous-1.1.0 WARNING: You are using pip version 19.3.1; however, version 20.3.1 is available. You should consider upgrading via the 'pip install --upgrade pip' command. Pushing image 172.30.1.1:5000/python-test/python-flask:latest ... Pushed 0/10 layers, 3% complete Pushed 1/10 layers, 16% complete Pushed 2/10 layers, 23% complete Pushed 3/10 layers, 38% complete Pushed 4/10 layers, 40% complete Push successful
|
ログからは以下が読み取れます。
- 最初にGithubリポジトリのクローンを実施。
- アプリケーションのソースと依存関係をインストール
- ビルドが完了すると、
172.30.1.1:5000
にある内部のDockerレジストリにイメージをプッシュ
プッシュが完了すると、自動的にkubernetesのリソースの一つであるDeploymentが作成され、アプリケーションイメージのインスタンスが生成されます。kubernetesのDeploymentとは、Podの集合であるReplicaSetの世代管理ができ、ロールバックやロールフォワードができるものです。余談ですが、Podの集合として、StatefulSetというリソースもあります。Deploymentとの違いは、StatefulSetはPodをスケールする際の名前が一定である点です。
Webコンソールの左側のメニューのOverviewをクリックし、作成されたアプリケーションメニューをみてみると、外部アクセス用に生成されたRouteがあります。
これをクリックすると、Flaskアプリケーションが確認できます。これが、エンドユーザに提供するリンクになるわけです。
まとめ
デモで見たように、OpenShiftは、Githubにあるソースコードをダウンロードし、Dockerイメージをビルドし、それをDockerレジストリにプッシュし、Deploymentを作成してアプリケーションをKubernetesクラスタにデプロイしてくれます。
Openshiftは、インフラ管理タスクを抽象化したツールを提供することで、開発者がKubernetesベースのインフラ上でアプリケーションを簡単にデプロイして管理できるようにしてくれる、ということが分かったと思います。
また、Openshiftは、Githubのようなソースコード管理ソフトウェアとの連携も可能であり、アプリ開発、ビルド、テスト、デプロイを一貫して担ってくれることも分かったと思います。
もっと詳しく学びたい方へ<[セール時は1,200円]
- 以下のUdemyの講座で、OpenShiftの基礎を学ぶことができます。ビルド、ビルドトリガー、イメージストリーム、デプロイメントの理解などをハンズオンで学ぶことができます。Udemyは30日間の返金保証が付いているため、「ちょっと違うな。」と思ったら返金も可能なので気軽に試してみてください。
OpenShift for the Absolute Beginners - Hands-on