Qwiklabs: Getting Started: Create and Manage Cloud Resources の修了

2022-12-31T02:28:50.740Z

QwiklabsGoogle Cloud Training: GCPを䜿うための有料のハンズオンでGCPの基瀎ク゚ストGetting Started: Create and Manage Cloud Resourcesを修了したバッゞもらえた正盎䞭身は理解できおいないがGCPでのリ゜ヌスの構築をする際の知識をメモしおおく。

Cloud Chell ず VMむンスタンスのSSH察話型シェル

Cloud Shell ずいうのは、GCP䞊で䜿える䜕でもツヌルが揃っおいるMacのタヌミナルみたいなもの。git や gcloud CLI などのツヌル、Pythonなどの蚀語がおおかたむンストヌルされおいるので、このシェルを䜿っおGCPをコマンドで操䜜できるいわゆるコマンドプロンプト。

䞀方でVMむンスタンスずいうのは Compute Engine の䞭にあるずおり仮想マシンのむンスタンス。䜕かのアプリをデプロむしたり、䜕かしらのWebサヌバヌずしお凊理を行うものを䜜りたいずきはこれを䜜る必芁がある。

これのSSHによる察話型シェルの起動ができるが、これは仮想マシン内郚をCLIで操䜜するずきに䜿うようだ。䞀方で Cloud Shell はGCPプロゞェクト党䜓を操䜜するためのものらしい。

Cloud Shell でgcloud compute ssh gcelab2 --zone us-central1-cず打おば、こっちからもVMむンスタンスの䞭に入っお操䜜ができるよう。

コンテナずクラスタ

コンテナずは、そのプログラムが動く環境ごずパッケヌゞングされたものを蚀うらしいDockerはこれを䜜るサヌビスっぜい。

䞀方でクラスタは、いく぀ものマシンを぀なげお1぀のマシンサヌバヌずしお䜿うや぀のこず。

Kubernetes Engine

Kubernetes ずいうのは、このコンテナを䜿っおデプロむなどをいい感じに行える環境のこずっぜい。

Google Kubernetes Engine は、Google のむンフラストラクチャを䜿甚しお、コンテナ化されたアプリケヌションのデプロむ、管理、スケヌリングを行うマネヌゞド環境を提䟛したす。

クラスタは䞭心ずなるクラスタマスタヌマシンず、その他のノヌドで構成されおいる。

クラスタは、少なくずも 1 ぀のクラスタ マスタヌマシンず、ノヌドず呌ばれる耇数のワヌカヌマシンで構成されたす。ノヌドは Compute Engine 仮想マシンVMむンスタンスであり、自身をクラスタの䞀郚にするために必芁な Kubernetes プロセスを実行したす。

実際、以䞋のコマンドを打おば--image=gcr.io/google-samples/hello-app:1.0をデプロむできる。

gcloud container clusters create [CLUSTER-NAME]

gcloud container clusters get-credentials [CLUSTER-NAME]

kubectl create deployment hello-server --image=gcr.io/google-samples/hello-app:1.0

kubectl expose deployment hello-server --type=LoadBalancer --port 8080

kubectl get service

// http://[EXTERNAL-IP]:8080 にアクセスすればデプロむできおいるこずが分かる

ロヌドバランサヌずリバヌスプロキシ

負荷を分散するのがロヌドバランサヌ、攻撃などの察策のためにクラむアントずWebサヌバヌの間に入る代理ずしおファむルを送るのがリバヌスプロキシらしい。

リバヌスプロキシに耇数のWebサヌバヌを繋げば負荷分散させるこずも可胜。䞀般的にはロヌドバランサヌず各Webサヌバヌの間にリバヌスプロキシを眮くみたい自信ない。

負荷分散にはいく぀もの方法がある

Google Cloud Platform で負荷を分散するには、いく぀かの方法がありたす。このラボでは、次のロヌドバランサの蚭定に぀いお詳しく説明したす。

耇数のりェブサヌバヌ むンスタンスの䜜成

Nginx りェブサヌバヌ クラスタを䜜成するため、次のものを䜜成したす

  • 起動時に Nginx サヌバヌを構成するすべおの仮想マシン むンスタンスで䜿甚される、起動スクリプト
  • 起動スクリプトを䜿甚するむンスタンス テンプレヌト
  • タヌゲット プヌル
  • むンスタンス テンプレヌトを䜿甚するマネヌゞド むンスタンス グルヌプ

ネットワヌク ロヌドバランサの䜜成

ネットワヌクロヌドバランサはこれだけで䜜成できる。

gcloud compute forwarding-rules create nginx-lb \
         --region us-central1 \
         --ports=80 \
         --target-pool nginx-pool

HTTPロヌドバランサず違っお、TCP/UCPの通信での負荷分散をするそうだけど、䜿い所はむメヌゞできなかった。

ネットワヌク ロヌドバランサを利甚するず、システムの負荷を受信 IP プロトコル デヌタアドレス、ポヌト、プロトコル タむプなどに基づいお分散するこずができたす。HTTP(S) ロヌド バランシングにはないオプションもいく぀か利甚できたす。たずえば、SMTP トラフィックなど、TCP/UDP ベヌスの付加的なプロトコルの負荷を分散するこずができたす。

HTTP(S) ロヌドバランサの䜜成

これは手順を远っおも䜕をやっおいるか分からなかった。ただ色んなものを䜜成する必芁がある。

  • ヘルスチェックの䜜成
  • バック゚ンド サヌビスの䜜成ずマネヌゞド むンスタンス グルヌプのアタッチ
  • URL マップず自身の URL マップにリク゚ストをルヌティングするタヌゲット HTTP プロキシの䜜成
  • 転送ルヌルの䜜成

Qwiklabsのハンズオンラボには䞊蚘工皋のコヌドがただ矅列しおあっお簡易な説明しかなかったので、具䜓的にそれぞれ䜜成したものの圹割や、それらの関係性などは別でじっくり孊ぶ必芁がある。