「Cloud Native Dojo 2021」 を開催しました
クラウド・分散システム研究室の小山です. 2021年8月25日と26日の2日間で学内の学部2年生を対象にイベント「Cloud Native Dojo 2021」 を開催しました.
はじめに
Cloud Nativeは,クラウド技術を使用したモダンなアプリケーションの開発を促進する技術の総称です*.特徴的な技術には,クラウドやコンテナ,サービスメッシュやマイクロサービスがあります.すばやい変化が求められている現代のビジネスにおいて,柔軟かつ高速な開発を実現するためにCloud Nativeが注目されています.
* https://github.com/cncf/foundation/blob/master/charter.md
Cloud Native Dojoは,クラウド技術への理解と習得を目的としたワークショップです.対象とする参加者は,学部2年生に設定しました.これは2年生が基礎的な知識がある一方,研究室との接点がなく学ぶ機会が少ないためです.
スケジュール
2日間のイベントは,次のスケジュールで行いました. 講師はクラウド・分散システム研究室に所属する大学院生の小山,髙木です.
日程 | プログラム |
---|---|
Day 1 AM | 環境構築 |
Day 1 PM | PythonによるWebアプリケーション開発 |
Day 2 AM | Dockerによるコンテナ操作 |
Day 2 PM | Kubernetesによるコンテナ管理 |
プログラムの内容
Day2 AMのDockerを高木が担当し,他を小山が担当しました.
[Day1] 環境構築とWebアプリ作成
環境構築では,必要なソフトウェアを参加者のマシンへインストールしました.全体の環境を揃えるため,WSL2 + Docker for Desktop + Python3.8 on WSLの組み合わせを採用しました.
Webアプリ作成では,Webアプリケーションフレームワークである Flask を使い簡単なWebアプリケーションを作りました.以下は実際に作成したフォームです.名前を入力し「送信」を押すと,次のページに入力した名前が表示されます.
[Day2] DockerとKubernetes
AMはDockerコンテナの基礎について説明を行いました. Dockerコンテナのメリットを物流で使用されるコンテナの歴史を交えながら理解を深めました. ソフトウェアの開発では,開発環境の土台が安定しなければなりません.私たちが日頃使用しているOSSライブラリは日々更新され,これらの管理を人力で行うのは実質不可能です.この問題を解決したのがDockerコンテナであり,Dockerfileと呼ばれるコンテナ仕様書を使用します.OSカーネルライブラリ・SWパッケージ・ミドルウェア・アプリケーションを一纏めにすることで,前述のような更新の影響を受けることがなくなります.
実際にflaskのコンテナ仕様書からイメージをビルドし,コンテナを作成しました.
EXPOSE 5000 COPY flask-study/ /work WORKDIR /work RUN pip install --no-cache-dir Flask ENV FLASK_APP=form
CMD ["flask", "run", "--host=0.0.0.0"]
また,dockerに関するコマンドを学習し,作成したイメージをdocker hubへpushしました. PMではAMに覚えたdockerコマンドを駆使して1日目の続きを行いました.
作成したDockerイメージを学部のサーバ上に構築したKubernetes上にデプロイしました.以下の図はKubernetesクラスタに配備されたコンテナ(Pod)の一覧をkubectlコマンドで表示しています.
KubernetesではPodとServiceを作成し,外部へコンテナを公開しました.設定は,以下のYAMLファイルとよばれる形式で記述します.使用した設定ファイルは,GitHubに公開してあります.
kind: Pod
metadata:
name: demo-pod
labels:
app: MySample
spec:
containers:
- name: demo-container
image: nginxdemos/hello
おわりに
参加者の皆さんは,二日間を通じて授業だけでは学べないより実践的な知識を得られたのではないかと思います.実際の感想やアンケートでも「授業の内容が実際にどう使われているか理解が深まった」や「丁寧に対応してもらえ楽しく理解できた」といったフィードバックがあり開催の目的を満たせたと思います.また,講師として教える事は,参加者の理解度にあわせて適切な情報量や説明が必要であると改めて学べました.今後もこうした取り組みを通じて,やる気のある学部生の皆さんをサポートしていきます.
2021年9月11日 (土)