grasys blog

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

文● izumi/grasys 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

 コンテナオーケストレーションツールの標準ツールといえば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を作成してみてください!!!

■関連サイト

過去記事アーカイブ

2021年
03月
04月
05月
06月
07月
08月
09月
10月
2020年
04月
05月
08月
09月
10月
11月
12月
2018年
09月
2017年
06月
2014年
07月