「Kubernetes on Azure ハッカソン@名古屋」で二日間チームでAzure上にKubernetes環境を構築するハンズオンに参加しましたので、 そちらで学んだことについて投稿します。
名古屋における Kubernetes ハッカソン、今皆さまだけで、DevOps 環境を構築して頂いてます!#てらだよしおまつり pic.twitter.com/Pwdyy8VL23
— 寺田佳央@クラウド・アドボケイト (@yoshioterada) October 27, 2019
結論としては、何もかもが初心者の状態で参加したのですが、 寺田さんや他の参加者のおかげで、 DockerやKubernetesについて参加前よりもレベルアップできたと感じております。
その時の様子を少しでも共有できたらと思い、ブログを書かせていただきます。
参加する前の筆者の状態
- Docker初心者
- 用意されたコンテナイメージの利用はなんとかできる
- Kubernetes初心者
- ドキュメントは読んだことがある
- お試しで少しだけ触ったことがある
- Azure初心者
- データ分析系のサービス(Cognitive Services、Azure Machine Learning サービス)だけ触ったことがある程度
- Linux初心者
- 普段はWindows Serverを管理することが多い
やったこと
簡単にやったことを振り返ります。
- モブプロの形でAzure上でKubernetes環境を構築
- 一日目は寺田のさんの指導の下、Kubernetes環境を構築
- 二日目は、寺田さんの手助けをできるだけ借りず、チームの力で一日目と同じ環境を構築
作業したKubenetes環境の構築とは下記です。
- 踏み台Linux VMをMicrosoft Azureに作成
- 踏み台Linux VMでKubernetes上で動かすDockerイメージの作成
- Dockerfile作成
- Dockerイメージの作成
- Dockerイメージの動作確認
- Azure Container Registryの作成
- Azure Container RegistryはAzureの中で使うプライベートなDockerHubのようなサービス
- 2で作成したDockerイメージを3で作成したAzure Container RegistryにPush
- Azure Kubernetes Serviceの作成
- Azure Kubernetes ServiceAzureはAzureのマネージドKubernetesサービス
- Kubernetes環境の定義ファイルの作成と動作確認
- Deployment YAMLの作成と適用
- Kubernetesの基本操作(設定を変更したりして、回復機能などの確認))
- Service YAML作成と適用
- Ingress YAML作成と適用
自ら参加した作業としては、上記のような内容になりますが、
寺田さんから以下のようなことを教えていただいたり、
- Docker・コンテナについての基礎知識
- コンテナやKuberenetes利用
他の参加された方が挑戦したAzure DevOpsについての情報を聞くことができたり、 非常に内容の濃い二日間でした。
参加して成長できたこと
ハッカソンに参加して、下記の点で参加前よりも成長できたと感じております。
- Kubernetesの基本的なことを理解できた
- コンテナ作成時・Kubernetes構築・運用時の様々な注意事項を知った
- ペアプロにより、自分がLInuxコマンドやVimなどの自分知らない使い方を知った
- Azureでサーバを構築する方法も大体理解できた
- 流行りに流されるのではなく、ビジネスに適した技術を利用しているかということを考え直すきっかけとなった
印象に残ったコンテナ作成時・Kubernetes構築・運用時の注意事項
- latestタグを使うべきではない
- いつに作ったlatestかわからなくなる
- ビルド番号に紐づけたタグをつけたほうが良い
- ソース修正からコンテナイメージ作成までは繰り返し作業になるため、自動化(Shell化)などをした方が良い
- イメージはできるだけ小さいサイズにする
- 実行用イメージには、ビルドにしか必要ないものを含めない
- マルチステージビルドなどを活用する
- ビルド用のイメージと実行用のイメージを分けるときに一つのDockerファイルで実現する方法
- DBはクラウドのマネージドサービスを利用する
- 開発環境はコンテナでもOK
- 本番でDBをコンテナにするのはNG
- 自分は、参加するまでは「DBも含めて全部コンテナ化したほうがいい」と初心者丸出しのことを考えてました。。。。
- 一度構築したKubernetesの環境をずっと使おうという考えは持ってはいけない
- 再構築しやすいようにする
- 3か月か4か月に一回バージョンアップがあるため
- クラスタを1年半後には再構築するつもりで、複雑な構成にしない
- 再構築しやすいようにする
- 大規模Kubernetesクラスタを構築しない
- ノード数を多く作らない
- 大規模Kubernetesクラスタを構築するのは巨大モノリスを作るのと同じ
- これも初心者考えでは「大規模こそKubernetesでしょ」と参加前は考えてました。。。。。
Kubernetesの環境は社内で構築としないほうがいい
- 基本的にはクラウドサービスを利用した方がよい
- セキュリティを担保した環境を構築することが難しいため
- 基本的にはクラウドサービスを利用した方がよい
寺田さんから教えていただいた注意事項が気になる方は、下記のスライドを見てください
www.slideshare.net
まとめと感想
参加して以下のようなことを感じました
- Kubernetesについて、最低限の知識を身につけることができた
- 不安たっぷりで参加したが、参加して本当によかった
- レベルが高い参加者とモブプロすることを予想していたため不安だった
- 実際には優しい方ばかり非常に気持ちよく作業できた
- すごいエンジニアばかりで非常に学びが多かった
- 自分の技術力不足を感じることが多く、勉強がまだまだ足りないと感じた
- 特に自分の知識が弱いと感じたのは、Azureの知識
- 英語力が足りないと感じた
- コマンドを実行した後に出たメッセージがエラーなのか警告なのか完了なのか正しく判断できてないことが何度かあった
- 作業効率が下がるので、画面に表示されている内容ぐらいはきちんと理解したい
- コマンドを実行した後に出たメッセージがエラーなのか警告なのか完了なのか正しく判断できてないことが何度かあった