OK Google!「Google Kubernetes Engine」を教えて
こんにちは!ポケラボエンジニアの悦田です。
先日、Google Cloud カスタマーエンジニアの磯さまに、Google Kubernetes Engine(以下、GKE) に関する勉強会をポケラボエンジニア向けにオンラインにて開催いただきました。今回は、同じチームの宋さんと一緒に勉強会の様子をご紹介したいと思います!
※GKE 公式紹介サイト
はじめに
ポケラボでは、今年1月にリリースした「アサルトリリィ Last Bullet」でKubernetesを採用しており、今後の新規プロジェクトでGKEの採用を検討しています。
これまで、アマゾン ウェブ サービス(以下、AWS)の採用経験しかないため、なるべく多くのエンジニアメンバーが知っておいた方が良いということで、Googleさんに勉強会を開催いただくことになりました。
Day1ではGKEの詳細についてご紹介いただき、Day2ではGKEを用いた実践演習を行いました。
Day1
Day1では、大きく4つのパートについてご説明いただきました。
・コンテナの概要
・Kubernetesの概要
・Kubernetesの基本的なリソースについて
・GKEの特徴/機能紹介について
コンテナオーケストレーションシステムとしてKubernetesがありますが、Kubernetesは導入と運用が複雑になるという課題があります。
そこで、Google社ではKubernetesのマネージドサービスとしてGKEを提供されています。
GKEの特徴としては以下が挙げられます。
・マネージドなControlPlaneを提供しており、Nodeに対する自動復旧・自動アップグレードのオプションがついている
・Kubernetesクラスタを数分で立ち上げ可能
・GCPの各種サービスとのインテグレーションが優れている
Kubernetesは頻繁にバージョンアップが行われますが、GKEを用いることで、いち早く最新の機能を手軽に運用していくことができるということでした。とても便利ですね!
悦田:Day1では、GKEを用いたKubernetesの運用法を学ぶことができました。Kubernetesのマネージドサービスはいくつかありますが、Kubernetes・GKEともにGoogle社が提供しているため親和性が高く、ControlPlaneとWorkerNodeの自動アップグレードや自動修復が可能な点、デフォルトでNodeとPodのモニタリング機能が備わっている点など、他のマネージドサービスと比べると様々なメリットがあることがわかりました。新規アプリケーション立ち上げの際、クラウドサービスを選定するポイントは多くありますが、Kubernetesを用いるのであれば、Google Cloud Platform (以下、GCP)ではGKEが使えるという点も選定する理由のひとつになってくるのではないでしょうか。
宋:Day1では、Kubernetesの仕組み/GKEとの関係/アーキテクチャ/設定などを細かく分かりやすく説明していただきました。コンテナは確かに今の流行だと思いますが、コンテナをどう管理するか、うまく運用できるかも導入する時の課題です。現在は、マイクロサービスの流行で、数百から数万個のコンテナが常に運用され、それに対してKubernetesというソフトウェアが提供されていますが、Kubernetesの立ち上げは難しく、専門的なインフラエンジニアがいないと手軽には運用できないと思います。そこで、GKEというマネージドサービスがあって、数多くのコンテナでも手軽に運用できるようになりました。GKEには他のマネージドサービスにはない自動修復、自動アップグレードの機能があるので、GKEを活用することでメンテナンスのコストを減らすことができるかどうかを試していきたいと思います!
Day2
Day2では、GKEを用いて下記内容を実際に体験しました。
・Kubernetesクラスタの立ち上げ
・HelloWorldが出力されるアプリケーションの作成
・Dockerコンテナイメージの作成
・3つのデプロイ手法の実践
①RollingUpdate
同一のDeployment配下のPodを段階的に新バージョンに入れ替えることでサービスのライブアップデートを行う
②Blue-Green Deployment
Deploymentを2つ用意し、Serviceでルーティングする先のラベルを切り替える
③カナリアリリース
Deploymentを2つ用意し、Serviceでルーティングする先のラベルを同じにする
悦田:Day2では、GKEを用いてKubernetesクラスタの立ち上げとアプリケーションのデプロイを実体験させて頂きました。GoogleCloudShellにはGCPの操作に必要なコマンドがデフォルトでインストールされているため、即座にアプリケーション作成作業に入ることができる点が良かったです。また、Kubernetesクラスタの立ち上げも数分で完了したため待機時間が短く、スムーズに作業を進めることができました。本来、サービスのインスタンス立ち上げからデプロイ構成まで整えるとなると複雑で細かな設定が必要になるかと思いますが、最小限の構成とはいえ、初めて触る者が1時間程度でデプロイ環境まで整えられるという点にただただ驚かされました。
宋:Day2では、ハンズオンを通じて、GKEの使い方を学ぶことができました。
前回の勉強会で学んだ理論の部分も復習しながら、習得することができました。従来のサービスを立ち上げるには、サーバーの設定や環境構築など必要ですし、ロードバランスも様々な設定が必要です。その点GKEは複雑な設定は全てyamlに記述するだけでサービスが立ち上げられます。従来のサーバーの設定と違い、yamlファイルは管理しやすく、環境も複製しやすい点が特に便利だなと感じました。
最後に
Google社の数名の方にサポーターとして参加いただき、何か困ったことがあればすぐフォローいただける体制で、実践を通してGKEへの理解をしっかりと深めることができたと思います。
Google社の皆さま、お忙しい中、本当にありがとうございました!
ポケラボではコロナ禍においても、エンジニア全体での学習機会をできる限り得られるよう、月に一度を目安に、社内での技術共有会や、今回のように社外の方にご協力いただく形で勉強会を開催しています。
各個人での自己研鑽はもちろんですが、ポケラボエンジニア全体として、よりレベルアップしていけるよう、こういった取り組みを続けていきたいです。
今後また、レポートできる機会があれば発信していきますので是非フォローお願いします!
最後になりますが、引き続きポケラボでは一緒に働くエンジニアの方々を募集していますので、ご興味をお持ちいただけた方はぜひ求人票をチェックしてみてください!
基盤開発エンジニア
ゲームエンジニア(フロントエンド)
ゲームエンジニア(サーバーサイド)
===
最後までお読みいただきましてありがとうございます。
宜しければ、記事へスキをいただけますと大変励みになります。
また、ポケラボに関する情報は、弊社のマスコットキャラクターポケロボくんがTwitterで随時展開中!是非フォローしてあげてください。
https://twitter.com/pokerobokun