GKEで簡単にnginxを立ち上げてみよう

Google Kubernetes Engine上でnginxを動かしてみよう。

コンテナオーケストレーションツールの標準ツールといえばKubernetesです。Google CloudではKubernetesのマネージドサービスとしてGoogle Kubernetes Engineを提供しています。今回はKubernetesは知っていて使ってみたいけど難しそうという人向けに難しいことを考えずまずはGKE上でnginxを動かしてみようと思います。

1.Kubernetesって?

コンテナオーケストレーションツールの標準ツールです。 このブログでは詳細は書きませんので公式サイトのKubernetesとは何か?を参照してください。

2. Google Kubernetes Engine(GKE)って?

Google Cloudが提供するKubernetesのマネージドサービスです。こちらも詳細は公式サイトを参照してください。

3.Let’s 構築

3.1 前提条件

今回はGKEクラスタの構築から、nginxの構築まで全てCLIで行います。 それぞれのコマンドのバージョンは次の通りです。

# gcloud version
Google Cloud SDK 349.0.0
alpha 2021.07.19
beta 2021.07.19
bq 2.0.70
core 2021.07.19
gsutil 4.65

3.2 GKEクラスタの作成

まずは、GKEクラスタを構築します。 GKEにはクラスタのノードインフラストラクチャを手動でプロビジョニングするStandardモードとそれらをGKEに任せるAutopilotモードがありますが、今回はGKE上で簡単にnginxを起動するのが目的なのでAutopilotモードでクラスタを作成します。

gcloud container clusters create-auto sample-cluster --region asia-northeast1 --project=sample-project
gcloud container clusters list
NAME            LOCATION         MASTER_VERSION  MASTER_IP      MACHINE_TYPE  NODE_VERSION    NUM_NODES  STATUS
sample-cluster  asia-northeast1  1.20.8-gke.900  35.200.108.48  e2-medium     1.20.8-gke.900  2          RUNNING

3.3 kubectlコマンドのセットアップ

GKEクラスタのバージョンに合わせてkubectlコマンドのセットアップを行います。

curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.20.8/bin/linux/amd64/kubectl
chmod 755 kubectl
mv kubectl /usr/local/bin/

kubectl version
Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.8", GitCommit:"5575935422cc1cf5169dfc8847cb587aa47bac5a", GitTreeState:"clean", BuildDate:"2021-06-16T13:0
0:45Z", GoVersion:"go1.15.13", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"20+", GitVersion:"v1.20.8-gke.900", GitCommit:"28ab8501be88ea42e897ca8514d7cd0b436253d9", GitTreeState:"clean", BuildDate:"2021-0
6-30T09:23:36Z", GoVersion:"go1.15.13b5", Compiler:"gc", Platform:"linux/amd64"}

3.4 nginx podのデプロイ

kubernetesはmanifestを作成することが手間で難しいと感じることが多いと思うので、今回はコマンドで全て作成してみます。


kubectl create deployment --image=nginx nginx

kubectl get pod
NAME                     READY   STATUS    RESTARTS   AGE
nginx-6758598c76-trpqt   1/1     Running   0          35m 

3.5 Serviceのデプロイ

Serviceのデプロイもpodと同様にmanifestを使用してデプロイすることが多いですが、今回はこちらもコマンドを使用して作成します。

kubectl expose deployment nginx --type=LoadBalancer --name=nginx-service --port=80 --target-port=80

# kubectl get service
NAME            TYPE           CLUSTER-IP    EXTERNAL-IP     PORT(S)        AGE
kubernetes      ClusterIP      10.89.0.1     <none>          443/TCP        58m
nginx-service   LoadBalancer   10.89.3.174   34.146.189.76   80:31596/TCP   2m10s

kubectl get service の結果で表示されるEXTERNAL-IPが公開されるIPです。 ブラウザなどでhttp://34.146.189.76へアクセスすることでnginxのwelcomeページへアクセスすることが可能です。

終わり

ここまでGKE上でnginxのpodを作成し、ブラウザからアクセスするまでを行ってみました。 単純に動くまでであれば結構簡単にできたと思いせんか? 今度は自分自身の環境に合わせたmanifestを作成してみてください!!!