12
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Rancher 2.3 を使って GKE を構築してみた

Last updated at Posted at 2019-11-11

image.png

トップゲートのインフラエンジニア兼プロジェクトマネージャをやっています堤です。

私はDockerやKubernetesなどのコンテナ技術が好きで、2年ぐらい前から触っています。

昨今、Kubernetesがとても注目されていますが、結構扱うにはハードルが高いプロダクトではないかと思います。特に自前でKubernetesクラスタを構築/管理するとなると、かなり大変で骨が折れる。まあ、そこでGKEなどのマネージドなKubernetesサービスがクラウド各社からリリースされているものの、それでもkubectlなどのコマンドを使ったオペレーションが必要になってきます。

そこで、Rancherの登場です。Rancherは、GUIでクラスタ構築から、アプリケーションのデプロイまでやってくれるプロダクトです。日本国内でも熱くなっているプロダクトですが、実は中国ではバリバリ使われている製品です。

さて、ここでは、Rancherを使ってGKEクラスタを作成するところまでガイドしたいと思います。

1. 下準備

1-1. GCEを構築する

  • OS: Ubuntu 18.04
  • インスタンス: n1-standard-1(vCPU x 1、メモリ 3.75 GB)
  • ストレージ: 100GB

1-2. Dockerをインストールする

Rancherを構築するには、Dockerが必要です。ここでは Docker のインストール方法の詳細は書きませんので、以下のドキュメントを参考に構築してください。

あと、GCEでDockerをインストールしてdocker infoを実行すると、なぜか以下のNo Swap Limit Supportが表示される。

$ docker info
Client:
 Debug Mode: false

Server:
 Containers: 0

<中略>

 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

WARNING: No swap limit support

この警告を回避するには、「/etc/default/grub.d/50-cloudimg-settings.cfg」を以下のように変更する。

/etc/default/grub.d/50-cloudimg-settings.cfg
GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=0.1
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=0.1
# GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0"
GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0 cgroup_enable=memory swapaccount=1"
GRUB_CMDLINE_LINUX="scsi_mod.use_blk_mq=Y"
GRUB_RECORDFAIL_TIMEOUT=0
GRUB_TERMINAL=console

編集が完了したら、update-grubを実行してサーバを再起動する。

sudo update-grub
sudo reboot

2. Rancherのインストール

Rancherのインストールはとても簡単です。今回はLet's EncrpytでSSL証明書を自動取得します。予めCloud DNSでRancherサーバのAレコードを登録しておきます。

$ sudo docker run -d --restart=unless-stopped \
  -p 80:80 -p 443:443 \
  rancher/rancher:latest \
  --acme-domain RANCHER.YOURDOMAIN.ORG

しばらくするとコンテナが立ち上がり、https://RANCHER.YOURDOMAN.ORG で接続できるようになります。接続するとadminのパスワードを設定して、ログインすると以下の画面が立ち上がります。

Rancher Console

3. GKE クラスタ登録

3-1. サービスアカウントの作成

まず、RancherからGKEクラスタを操作させるためのサービスアカウントを作成します。

$ gcloud iam service-accounts create rancher \
 --description "Rancher server" \
 --display-name "rancher"
Created service account [rancher].

次に作成したサービスアカウントに対してロールを割り当てます。割り当てるロールは下記4つです。gcloud projects add-iam-policy-bindingコマンドでは、一つずつしかroleが割り当てられないので、4回コマンドを実行する必要があります。

  • roles/compute.viewer
  • roles/viewer
  • roles/container.admin
  • roles/iam.serviceAccountUser
$ gcloud projects add-iam-policy-binding <PROJECT-NAME> \
 --member serviceAccount:rancher@<PROJECT-NAME>.iam.gserviceaccount.com \
 --role roles/compute.viewer

$ gcloud projects add-iam-policy-binding <PROJECT-NAME> \
 --member serviceAccount:rancher@<PROJECT-NAME>.iam.gserviceaccount.com \
 --role roles/viewer

$ gcloud projects add-iam-policy-binding <PROJECT-NAME> \
 --member serviceAccount:rancher@<PROJECT-NAME>.iam.gserviceaccount.com \
 --role roles/container.admin
 
$ gcloud projects add-iam-policy-binding <PROJECT-NAME> \
 --member serviceAccount:rancher@<PROJECT-NAME>.iam.gserviceaccount.com \
 --role roles/iam.serviceAccountUser

そして、サービスアカウントキーを生成します。

gcloud iam service-accounts keys create ~/rancher-key.json \
 --iam-account rancher@<PROJECT-NAME>.iam.gserviceaccount.com

3-2. GKEクラスタの作成

次に、RancherでGKEクラスタを構成したいと思います。まずは、Clusters→Add Clusterを選択します。

ScreenShot 2019-11-08 15.38.17.png

次に、Google GKEを選びます。

ScreenShot 2019-11-08 15.39.30.png

先程生成したサービスアカウントの鍵rancher-key.jsonを読み込みます。認証にパスしますと、ノードの設定画面が自動的にロードされます。

ScreenShot 2019-11-11 18.44.49.png

以下のようにクラスタを構成したいと思います。

  • ノードの数:3つ
  • ゾーン: asia-northeast1-a, asia-northeast1-b, asia-northeast1-c
  • OS: Container-Optimized OS

各ゾーンに1つずつノードを配置するパターンです。まず、Zoneのところにasia-northeast1-aを選択して、Additional Zoneにasia-northeast1-basia-northeast1-cのチェックを入れます。

ScreenShot 2019-11-11 14.45.25.png

そして、Node Countのところに「1」を選択します。こうすることで、上で選択したZoneに対して一つずつ配備する形になります。そして一番下にあるCreateを押して、しばらく待ちます。

ScreenShot 2019-11-11 14.45.55.png

最終的には、クラスタができて、以下のようになります。

ScreenShot 2019-11-11 18.49.50.png

GCPのGKEコンソール画面の「ノードゾーン」を参照すると、asia-northeast1-a〜cにノードができていることがわかります。

ScreenShot 2019-11-11 14.54.05.png

次は、Rancherを使ってアプリケーションのデプロイをやってみたいと思います。

12
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?