Azure Kubernetes Service の「学び方」

f:id:dombri:20200322212013j:plain

こんにちは。

全ての物事が自粛ムードで塞ぎがちな毎日ですが、桜が咲き始めたり日中はポカポカ陽気だったりで「春だなあ」と感じることが増えてきて少し嬉しいです。ただし花粉を除く。

今回の内容は以下です。

  • Azure Kubernetes Service の「学び方」
  • Azureを知ろう
    • 主要サービス
    • インフラ技術の基礎
  • Kubernetesを知ろう
    • コンセプト
    • 仕組み
  • AKSを楽しもう
    • とにかく動かす、観察する
    • Azureのサービスを組み合わせ、取り入れる
      • Azure DevOps(Azure Pipelines)
      • Azure Monitor for Containers
      • Application Insights
    • 「背伸び」することも大事(アンテナを高く)
    • 仲間を見つける、作る


この記事の目的

「どうやって Azure Kubernetes Service(AKS) の基本を身につけてきたか」を振り返って整理し、これから始めようとしている方の勇気づけになればと思っています。技術的な話は触れません。

到達目標は「AKS で運用を開始できるエンジニアになること」とし、そこに至るまでにぶち当たる壁とそれを乗り越える術を記していきます。


書くに至った経緯

この記事を書こうという気持ちになった経緯を記しておきます。

JAZUG で発表の機会を得た

3日後です。震えます。

jazug.connpass.com

肝心な「何を話すか」を決めずに引き受け、ずるずる時が経ってしまいました。

悩んだ結果、今自分にできることは「クラウドインフラに関わり始めた当初の心持ちや、予想される課題にぶち当たったときの対応方法」を伝えることでは無いか、と考えました。

クラウド、特に Kubernetes 関連のイベントに参加すると、実用的・応用的なお話が多いと感じるこの頃。技術が成熟してきた証拠で喜ばしい反面、初心者にとってどんどんとっつきにくい技術になっていかないか・・・という心配もあります(余計なお世話かしら)。

主流になりつつある技術でも、いつの時代も「初めて」の方がいるはずです。

Kubernetes」という単語に出会ったのは JapanContainerDays v18.12 でした。インフラに転向して2ヶ月目、コンテナとかオーケストレーションとか何にもわからなかったけど、ただ漠然と「なんか面白そう」「なんかかっこいい」みたいなミーハーな気持ちでセッションを聞いていたことを覚えています。

そのイベントから1年後、本番環境を AKS で構築し運用を始めることになるとは思ってもみませんでした。もっとずっと、遠い未来の話だと思っていたのです。当時耳にする実運用の話は名だたる企業で、登壇しているのは優秀なエンジニアばかりだったから。

近頃は規模感の近い企業の事例もあり、身近な技術になってきた感覚はあります。ただし「初心者がどうやって AKSKubernetes)にまつわる力をつけていくか」について体形だった情報は中々見当たりません。

力の付け方なんて人それぞれと言われればそこまでだし、どれだけ需要があるかわかりませんが、AKS に関して「何から始めればいいかわからない」「始めたはいいがよくわからない」みたいな方に向けて、何かヒントになればと思い JAZUG で伝えてみることにしました。その思考の整理のために書いています。


後輩が出来た

別の業界で活躍されてた方が弊チームに配属されました。待ちに待った新メンバー。嬉しい。

今後彼は AKS に携わるわけですが、IT未経験でいきなり Kubernetes って正直、大変だと思うのです。

手取り足取り教える必要はない(し、私もその力量はない)けれど「AKS 面白そう!もっと知りたい!」と思ってもらえるような導入や、その後のフォローをしたいと考えています。初心にかえり、必要になりそうな知識や技術を並べて、本人が困っているときに何かヒントを渡せるように準備をしようと思いました。


次のステップを踏み出したい

いつまでも初心者気分じゃダメだなと。業務内容的にも「応用」を求められつつあります。気持ちの切り替えのために。


どう AKS を学び理解を深めていくかについて、順を追って書いていきます。


1. Azure を知ろう

AKS は言わずもがな、Microsoft Azure のサービスの一つです。Azure の理解が、AKS の理解につながります。

主要サービスを動かしてみよう

後にAKSに関連してくるサービスに絞って記載しています。

  • Azure VM
  • Azure Vnet
  • Azure Load Balancer
  • Azure Storage Account
  • Azure AD

Azure 自体初めて!の場合は、いきなり AKS をさわり始める前に上記のような主要サービスに触れておくことをおすすめします。

まずはAzureポータル(GUI) から起動してみるだけでも「こんな設定があるんだ」「他のこのサービスと関連してるのかな」のような発見がありますし、Azure VM(Linux) のドキュメントチュートリアルも良いです。

時間に余裕のある方は、上記リンクから飛べる Azure Learn をやってみるのも良いと思います。体型立ったストーリーで進められ、Azureの概要を知ることができます。モチベーションの上がる仕組みもあって(ポイントが貯まる・レベルが上がる)、楽しく続けられます。

一番のおすすめは「今どこかで動いているプロダクトを、Azure上で動かす構成を考えてみる」です。

実際に Azure 使い続けてみよう!となった際には以下の基本を抑えておくと、後々のリソース管理が楽に行えるようになります。 ※特に注意したいのが「何にお金がかかっているか」を把握すること。あっという間に万札飛びます・・・


インフラ技術の基礎

すでにインフラエンジニアリングの経験がある方は読み飛ばしてください。

AKSから少し話が逸れますが、私自身がAzureを使いはじめた頃は「インフラ技術の基礎力・知識も0」スタートで非常に苦労した経験がありました。 手始めに、と上司がサラサラっと描いた簡単な構成図(WEB-AP-DB)も理解できなかった時は本当に落ち込みました。

Linux OS を扱うことも初めてで、CUIへの抵抗感もしばらく拭えませんでした。あの頃が一番苦しかったかもしれない。


少しずつ知識を取り入れ、手を動かし続けることを並行して行うことで、ある日視界が開ける感覚を得たら、インフラ楽しい!という気持ちが湧いてきました。

以下は(今振り返ると)大事だなぁと感じている知識たちです。実際に読んで良かった書籍など記載します。

全てを一気に学ぶ必要はなくて、手を動かしながら疑問に思ったことを学んでいけばいいと思います。その意味でも、AKSに取り組む前に Linux VM で何か環境を構築してみることをおすすめします。



2. Kubernetes を知ろう

Azureやインフラの最初の壁を越えた次に立ちはだかるのは、Kubernetes の壁です。

「壁」なんて表現したら怒られるかもしれないですが、Kubernetesはそのコンセプトや仕組みの面で「とっつきづらさ」を持つ技術だと感じています。

Kubernetes に関わりはじめてから数ヶ月は「何となく」で手を動かすのが精一杯でした。何となく、Deployment を書く。何となく、Pod や Service を関連づけてみる等。でも最初はそれでいいのだと(今振り返ると)思います。

繰り返しになりますが、いきなり全てを理解する必要はない。何度もKubernetesクラスタを構築してみて、手が止まったところを深掘りしてみたり、基本に立ち返ってみたりしていると、それまでぼやけていた情報の全てが繋がって見える日が必ずきます。

ムスカの「読める、読めるぞ〜!」みたいな気持ち。

そこに至るまでに必要な条件として、コンセプトや仕組みの理解を深めること を挙げます。これをすることで何が嬉しいのかというと「自分の作りたいプロダクトにあった構成を考えられるようになる」ことだと思います。

コンセプトを理解することで「Kubernetes は私たちの要望に合った技術なのか、本当に Kubernetes を使う意味があるか」をより深く考え、Kubernetes を使って何を目指すのかを明確にすることができます。加えて、各コンポーネントやリソースの挙動の理解がしやすくなる・予想を立てやすくなります。リソースの意味や効果を理解することで、より効率の良い構成を考えられるようになります。

では、どうやってそれらの理解を深めていけば良いのでしょうか。いろんなアプローチ方法があると思いますが、以下は一例としてご一読いただければ幸いです。

普段は Kubernetes クラスタを構築したり改良したりしながら、思い出したときに時々以下ドキュメントなどに目を通すだけでも効果があると思います。


コンセプト


仕組み



3. AKS を楽しもう

1.2 がある程度できるようになったら(完璧にじゃなくてOK、都度立ち返ればいいので)、どんどん AKS を動かしましょう。


とにかく動かす、観察する

パブリッククラウドの利点である物理サーバを気にしないで構築・削除できることを生かして、どんどんaz aks create したり、Pod をはじめ各リソースを載せてみたり、壊したりしてみると楽しいです!

実際に動かしてみるうちに色々疑問が湧いてくると思います。例えばPodなら「Container の中はどうなっているんだろう」「ログはどうやって見るのかな」「エラーで落ちたらどうなる?」「リソースどのくらい使ってるの?」など。疑問に出会うために動かす、そして観察することで知識が定着していきます。必要に応じて、ワーカーノードにSSH接続して中を覗いて見るのも面白いと思います。


Azure の他サービスを組み合わせ、取り入れる

実際にAKSで運用を始めよう!と考えた時に、使い始めたいサービスは以下かなと思います。

  • Azure Container Registory
    コンテナイメージを管理するサービス。AKSクラスタに登録したサービスプリンシパルを通じて接続制御を行える。
  • Azure Pipelines(Azure DevOps)
    スムーズなビルド・デプロイ(CI/CD)を実現したい場合に便利。GUIyamlで定義できる。
  • Azure Monitor for Containers
    AKS全体のモニタリングを簡単に始められる。クラスター、ノード、コンテナなどのレイヤーで状態を管理できる。
  • Application Insights
    AKS上で動かしたいアプリケーションを監視できる。エラー数や正常性の管理、アクセス数からレイテンシ、レスポンスの遅いモジュール把握などユーザ寄りの情報を集めることも可能。

これらを取り入れることによって弊社では、AKS がインフラエンジニアだけでなくアプリケーション開発者にとっても身近なものに変化してきました。DevOpsへの一歩。


「背伸び」することも大事

Kubernetes ではコンセプトや仕組み(=基本)が大切とお伝えしてきましたが、新しい機能や応用事例を知るなど、少し難しい(ストレッチを効かせた)情報を得ることも大事だと思います。

始めに Kubernetes クラスタを最低限構築して終わりではなく、先を行く企業の事例や新機能などからヒントを得て、もっとエンジニアが心地よく開発・運用できる環境を目指していけるのが Kubernetes の醍醐味でもあります。目線は高く広く。気になる機能を見つけたら使ってみる(自分に言い聞かせています)。

また、取り巻くエコシステムを含め、Kubernetes は改良を積み重ねてバージョンアップしています。AKSがサポートする Kubernetes バージョンも定期的に上がるので、ユーザはそれに追従する必要があることも「背伸び」の意義の一つです。

ただ、イヤイヤ従うのはエネルギーを要するので、新機能にワクワクしながらキャッチアップしていけるのが理想的です。そのためにも以下の仲間を見つけることが有効だと考えます。


仲間を見つける、作る

コミュニティに参加しよう

Kubernetes 関連のコミュニティ活動は盛んに行われています。Connpass などで興味のあるコミュニティをフォローしたりイベントに参加したりすることで、Kubernetes の最新情報をキャッチアップできます。他にも目標になる企業や人が見つかったり、同じように頑張っている仲間に出会うことでモチベーションアップにもつながります。


SNSで発信してみよう

「有益な情報を発信しなきゃ」と考える必要はなくて、わからないことを Twitter で呟くだけでもすぐ玄人 Kubernetes エンジニアがアドバイスをくれたりします(この現象を「くばねてすホイホイ」と密かに呼んでいます)。

基本的なことであっても、ブログで文章化・図式化してみたりすると思考の整理になりますし、フィードバックをいただくこともあります。

他のコミュニティと比較したわけではないですが、Kubernetes 界隈の方は互いの努力を認めたり、応援したりする気持ちを持っていると思います。得られることが大きいので、「見る専」の方は思い切って発信してみるのはいかがでしょうか。



まとめ

  • Azure を知る
    • インフラ技術を学ぶ
  • Kubernetes を知る
    • コンセプト
    • 仕組み
  • AKS を楽しむ

インフラ、Azure 初心者からでも大丈夫。AKSKubernetes)楽しいですよ!

この記事が、誰かの勇気づけになったら嬉しいです。