こんにちは、サイオステクノロジーの前田です。Kubernetesの超初心者入門として簡単に触る方法について話していきます。
Kubernetesを利用するときの初心者が諦めるポイントとして、下記のような状況が発生します。
- Kubernetes環境を作成するのが大変
- アプリケーションをデプロイしたいが、デプロイするときのYAMLが理解できない
- アプリケーションをデプロイしたが、成功しているかよくわからない
今回はその躓きポイントにひっかからないように超初心者向けにアプリケーションのデプロイ体験をしてみましょう。ブラウザ上で操作しますので、ブラウザにアクセスできれば問題なくできます。
- Kubernetes 超初心者入門
目的と目標
目的
全体の流れ確認するために、簡易な方法でアプリケーションをデプロイしてアプリケーションの動作を確認することを目的とします。
目標
- Kubernetesに触れる
- Kubernetesでアプリケーションをデプロイする
- アプリケーションの動作を確認する
すごく意識が高い人ならば、高い目標をたてます。自分で本を読んでサーバを構築してその上にKubernetesクラスタを作成して、yamlを全部理解して、コンテナを作成して、アプリケーションの動作確認のためロードバランサーを設定してデプロイするなんてことをするのも一つの方法でしょう。全員が全員、時間があり勉強の意欲がある人ではないでしょう。簡易な方法ということで、今回はKatacodaというものを利用した環境を使用していきます。Kubernetesの公式サイトのチュートリアルにあるKatacodaを利用して、詳細を理解することよりも、全体としてどんな流れなのかな~ぐらいの気持ちで操作していきます。
Kubernetes公式のハンズオンチュートリアルについて
Kubernetesの公式チュートリアルが存在します。こちらではKubernetesの基本が学べます。ハンズオンに入る前の内容は日本語でも記述しているので詳細を読んでいただければ理解が深まります。
- Kubernetesクラスターの作成
- アプリケーションのデプロイ
- デプロイしたアプリケーションの探索
- アプリケーションの公開
- アプリケーションのスケールアップ
- アプリケーションのアップデート
上記6つが存在します。実際の操作時は英語です。今回の目標を達成するには『アプリケーションのデプロイ』と『アプリケーションの公開』を実施します。それぞれの内容については連動していません。好きな時に好きな個所から始めることができます。
目標達成のための作業
ハンズオンの流れ
Kuberneteの公式チュートリアルにアクセスします。
各内容の画像を選択、その後画面下の、『対話型のチュートリアルを始める』を選択します。
Katacodaの画面が表示され、環境が構築されます。クリックしてください。
ハンズオン内容が表示されるのでStartを選択して開始してください。画面が代わり環境が構築されるのでしばらく待ちます。
進め方としては画面左の、黒で囲まれた内容をクリックしてください。右側で実行されます。ほぼクリックするだけでハンズオンは終了します。
アプリケーションのデプロイ編
minikubeの環境に、外部のコンテナを利用してアプリケーションをデプロイします。モジュール2のアプリケーション―のデプロイ編を実施します。章としては下記3つに分かれています。
- Step1 Kubernetes環境の確認
- Step2 アプリケーションのデプロイ
- Step3 デプロイ結果をAPIで確認(今回の目的ではあまり必要ない)
Step1 Kubernetes環境の確認
Kubernetesの環境を触ることができます。画面左側の黒文字をクリックするとその文字が右側に入力されます。
kubectl get node
今回の環境やノード(サーバ)の状態を表示します。minikubeと出ていたら問題なく動作しております。
目標1 『Kubernetesに触る』 達成!! おめでとうございます🎉
Step2 アプリケーションのデプロイ
イメージを外部から取得し、『deployment』という形でイメージをデプロイします。
★ポイント!! コマンドの意味 『詳細は覚える必要は特にない』
kubectl create deployment kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1
『kubectl』 で 『create』 作るよ 『deployment』 デプロイメントリソースを『kubernetes-bootcamp』という名前にする 『–image=gcr.io/google-samples/kubernetes-bootcamp:v1』コンテナイメージはgcr~を利用する
というような呪文を唱えてKuberneteにデプロイしています。ここで覚えておくのは『deployment』という形でデプロイしていることです。ほかにも『Pod』等いろいろなリソースがあり、他の多くの書籍ではこちらのデプロイする設定をYAML文で記載している場合が多いです。下記コマンドでほかの書籍で記載しているYAMLl内容を表示できます。
kubectl get deployment kubernetes-bootcamp -o yaml
最終的にはYAML文を理解しないといけない人はおります。最初から全部理解する必要はありません。この文章を最初から理解するということが一つの大きな壁『YAMLの壁』になっています。
目標2 『Kubernetesでアプリケーションをデプロイする』達成です。すごいぜ!!
Step3 デプロイ結果をAPIで確認(補足)
基本的には今回の目的とは違うので、あまり気にしないでください。クリックして動作確認するぐらいで利用してください。内容としてはKubernetes環境とローカル環境をproxyで接続してAPI情報を取得するように設定。その後KubernetesのAPIにアクセスして動作を確認している。実際のアプリケーションの動作確認はモジュール4のアプリケーションの公開で確認します。
アプリケーションの公開編
デプロイした内容を、外部環境からアクセスするために追加の設定を行います。モジュール4のアプリケーションの公開を選んでくださいハンズオンを実施してください。章としては下記3つに分かれています。
- Step1 外部アクセスするサービス(Service)の作成
- Step2 ラベルづけや環境情報の設定(あまり今回の目標と関係はない)
- Step3 サービスを削除しての動作確認
Step1 外部アクセスするサービス(Service)の作成
簡単なイメージとしては、先ほどデプロイしたアプリに対してロードバランサーみたいなもの『Service』リソースを作成して、アプリケーションを外部からアクセスできるようにする作業を行います。
最初はアプリケーションが自動的にデプロイされるのを待ちます。アプリケーションがデプロイされていることを『kubectl get pod』で確認したらサービスを作成していきます。
kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 8080
今回の呪文です。『kubectl 』を利用して、『expose』さらしていきます。 『deployment/kubernetes-bootcam』を対象アプリケーションとします。 『–type=”NodePort”』NodePortという機能を利用してさらします。 『–port 8080』対象アプリケーションを●●ポートで接続します。
設定がうまくいけば下記のような設定になります。こちらでサービス(service)リソースが作成されます。
こちらも色々な書籍ではYAMLで記載して適応するという書き方が主流です。YAMLの情報を下記コマンドで表示することができます。
kubectl get services kubernetes0bootcamp -o yaml
先ほどと内容が違います。もう読んでいるだけでYamlの壁にぶつかっているかもしれません。今は『deployment』と『service』では違うとだけ理解してください。
その後外部アクセスのテストがありますので、アクセスを試します。アクセスが成功すると下記の情報が表示されます。
目標3 『アプリケーションの動作を確認する』完了です。GOOD!!
step2 ラベルづけや環境情報の設定(補足)
使いやすいようにラベル付けを実施します、今回の目的は達成しているので軽く動きを確認してください。
Step3 サービスを削除しての動作確認
作成したサービスがない時の動作を確認していきます。削除したら外部からのアクセスはできなくなります。外部から直接接続したくない場合もあると思います、その時の方法としてコンテナ内部に入って操作する方法があります。
kubectl exec -ti $POD_NAME -- curl localhost:8080
こちらはコンテナの内部に入り、内部から自分自身にリクエストの動作確認をしています。
おわりに
小さな一歩であまりやりごたえがないと思った方もおられるでしょう。しかし、多くの人がKubernetesをインストールすることに挫折して、アプリケーションのデプロイ完了までに達成できずに難しいと終了する方も多いです。自分を誇ってください、アプリケーションをデプロイ完了したことは誇れることです。
Kubernetesはこんな小さな一歩を積み重ねてどんどん達成して行くことが大切です。もっと深掘りしたい方は、6つある他の内容をしてもいいですし、ご自身の環境にminikubeをインストールして2と4の内容を手動で再実行するということでもいいです。自分で小さな目標をたててどんどん達成していってください。
この記事がKubernetesに悩まれている方の問題解決の一つになれば幸いです。