Docker, Kubernetesの学び方について(基礎編)
基礎編では、Avintonにおいて、インフラ/プラットフォーム技術の学習希望者に推奨しているDockerとKubernetesの学び方を紹介します。紹介する推奨リソースには内容が重複する部分があるため、理解度に応じて適宜飛ばして学習するなどしてください。皆さまが学習をする際に、参考にしていただければ幸いです。
DockerやKubernetesなどのクラウドネイティブ技術においては、残念ながら日本語の資料はとても少ないです。公式ドキュメントや一次ソース、学習教材は英語がメインです。英語が苦手な方は、Google翻訳やGoogle Chromeの自動字幕起こし機能などを駆使してみてください。日本語のドキュメントや翻訳記事もありますが、古かったり間違った情報が書いてある場合があるのでご注意ください。
Docker, Kubernetesについての基本的な説明は、本ページでは省略します。Avinton Academyの他のページに任せることにします。
Linux, ネットワーク基礎
Docker、Kuberntesは主にLinux上で運用するため、Linuxの基本的な知識が必要となります。
LPIC1の内容は必須、LPIC2まで学習することが望ましいです。Avintonでは、LPIC1を習得後、Dockerの学習と並行してLPIC2の学習をする人が多いように感じます。LPICに関してはAvinton Academyでも紹介されております。
Docker, Kubernetesでのコンテナ間のネットワークを理解する上で、ネットワークの基礎知識も必要です。
具体的には、TCP/IPプロトコル、サブネット、スイッチング、ルーティングなどが必要です。迅速に基礎的なネットワークの知識を得たい人には、以下書籍を推奨します。Linuxを使ってTCP/IPについて学ぶことができます。
Docker、コンテナを学ぶための推奨リソース
Kuberntesはコンテナのオーケストレーションツールなので、先にDockerとコンテナ技術について学習する必要があります。
はじめに、Udemyの動画(または他の書籍等)で学習をし、その後、Docker公式ドキュメントのTutorial labsやSample Applicationsにおいて、アプリケーションをコンテナ化するような少し実践的な内容や、セキュリティ、ベストプラクティスについて学習することを推奨します。
- Udemy: Docker: A Beginner’s Guide From Container To Swarm
- Udemy: ゼロからはじめる Dockerによるアプリケーション実行環境構築
- Docker公式ドキュメント
Kuberntesを学ぶための推奨リソース
Kuberntes公式ドキュメントのKubernetes Basics Modulesを学習後、オライリー出版のKuberntes Up and Runningという書籍に取り組むことを推奨します。この書籍では、Kuberntesの基本をハンズオンを通して網羅的に学ぶことができます。18章全てを学習するに越したことはありませんが、最低限14章まで学習することを推奨します。日本語版は2018年の第1版であり、やや情報が古いことに注意してください。
書籍を終えたら、Kubernetes公式ドキュメントのTutorialsで、実際にアプリケーションをKuberntesクラスターにデプロイしながら学ぶことを推奨します。Tasksに関しては、書籍と重複する部分があるので、理解が浅い部分を中心に復習という意味で利用するのが良いでしょう。
またVMwareによる無料のKubernetesのオンライン学習コースであるKubeAcademyでは、ハンズオンや解説などを通じて、より実践的な内容を学ぶことができます。こちらも書籍と重複する部分があるので、進捗や理解度に合わせて視聴するコースを選択してください。
- Kubernetes公式ドキュメント: Kubernetes Basics Modules
- 書籍:
- 英語版: Kubernetes Up and Running 3rd Edition)
- 日本語版: 入門 Kubernetes
- Kubernetes公式ドキュメント(Tasks,Tutorials)
- KubeAcademy by VMware
学習用Kubernetes環境の構築
ローカルのPC上でKubernetes学習環境を構築することができます。いずれも少ないリソース使用量でKubernetes環境をシミュレートすることができます。初心者の方におすすめはMinikubeとkindです。使っている人が多いので、Web上に情報がたくさんあると思います。
Docker, Kubernetesの学び方について(応用編)
ここからは、DockerやKubernetesを本番環境で使用するために必要な知識や技術を学ぶための学習リソースを紹介します。
Docker応用編
Dockerを本番環境で使用するために、いくつか知っておくべきベストプラクティスがあります。以下のページには安全で軽量かつ堅牢なコンテナを構築するために知っておくべき内容が記載されています。コンテナを構築した際には本番環境にデプロイする前に、以下を参考にして最適化、脆弱性スキャンなどを行ってください。
- Best practices for writing Dockerfiles – Docker公式チュートリアル
- Image-building best practices – Docker公式チュートリアル
- Docker development best practices – Docker公式チュートリアル
- コンテナ構築のおすすめの方法 – Google
また、The Twelve-Factor Appでは、モダンなアプリケーションを構築する際に重要なポイントを列挙しているので、こちらも熟読するといいと思います。
Kubernetesの学習リソース (応用編)
より詳細なKubernetesの仕組みを学ぶにはProduction Kubernetesという書籍をお勧めします。内容は、Kubernetes Up and Runningよりもさらに詳細で、本番環境で実際に運用する際に必要な知識や技術を網羅的に学習できます。
Kubernetesの資格試験はCKA, CKAD, CKSの3種類があります。Kubernetesの管理者を目指している方は、CKAの取得の検討おススメします。Kubernetes上にアプリケーションをデプロイしたいアプリケーションエンジニアの方は、CKADをおススメします。受験料が非常に高額ですので、よく勉強してから受験することをおすすめします。
勉強方法としては、前述の基礎編を実施後、以下のUdemyコースでの学習がおススメです。(頻繁にセールで安くなっています。)模擬試験も含めて試験対策を十分に行うことができます。勉強の際には常にKubernetesの公式ドキュメントを参照してください。公式ドキュメントは非常によく整備されていますし、試験の本番中も公式ドキュメントの参照が許可されています。
また、CKAの模擬試験にはkiller.shがおススメです。ほとんど同じ形式の問題がでます。こちらはCKAの受験申し込みをした際に、無料で利用できます。模擬試験を2回実施して間違えた問題や分からなかった知識を復習することで本番の準備が十分にできると思います。
Avintonの社員がCKAを受験した際のブログ記事もぜひ読んでみてください。
最新技術のキャッチアップ
一通りの技術を学習したとはいえ、KubernetesやDockerなどのクラウドネイティブ技術では技術の変化が非常に速いです。また、使用しているOSSの脆弱性、セキュリティパッチなどの情報は、なるべく早く入手して対処する必要があります。今日、クラウドネイティブにおいてベストプラクティスだった技術が、数か月後には非推奨になるような場合もあります。RSS Feed購読のアプリケーション等を使用して、技術ブログページやリリースノートのページなどをフォローしておきましょう。
まとめ
DockerやKubernetesなどのクラウドネイティブ技術はここ数年で非常に注目されている技術です。一方で概念や仕組みは複雑で、学習コストも高く、技術トレンドの変化のスピードも非常に速いです。しかしながら、Kubernetesやクラウドネイティブ技術のエンジニアへの需要は非常に高く、Linuxの基礎からしっかりと着実に学んでいくことで、プラットフォームエンジニア、インフラエンジニアとしてのキャリアは非常に安定します。紹介した学習リソースをもとに、ぜひともインフラエンジニア、プラットフォームエンジニアとしてのキャリアが実ることを祈っています。
あなたも、Avintonでこのような最先端技術を習得し活用してみませんか?
社員の成長を導きながら、AIやビッグデータなどの最先端技術をプロジェクトに活用していくことが私たちのビジョンです。Avintonの充実した技術研修でスキルアップを図り、あなたのキャリア目標を一緒に達成しませんか?