【GCP】Kubernetes Engine でのゲストブックの作成

はじめに

Google Kubernetes Engine(GKE)を使用して

Redis と PHP を使用したゲストブックの作成する

ゲストブックは、訪問者がログにテキストを入力し、

最新のログエントリを数件見ることができる

 

プロジェクト設定

GCP はリソースをプロジェクト別に整理できる

これにより、1 つのアプリに関連するすべてのリソースを 1つにまとめることができる

新規でプロジェクトを作成する

 

Kubernetes Engine

コンソールの左上にあるナビゲーション メニューを開き、[Kubernetes Engine]

を選択する

 

Kubernetes クラスタの作成

・[クラスタを作成] ボタンをクリックする

・[Kubernetes クラスタの作成] ページで [標準クラスタ] テンプレートを選択する

・任意のクラスタの名前を入力する

クラスタのゾーン「東京」を選択する

・[作成] をクリックしてクラスタを作成する

 

サンプル アプリケーションのコードを取得

Cloud Shell はコンソールに組み込まれたコマンドライン ツールである

Cloud Shell を起動し、それを使ってサンプル アプリケーションのコードを取得する

・コンソールの右上にあるナビゲーション バーの「Cloud Shell をアクティブにする」ボタンをクリックして、Cloud Shell を開きます。

・サンプルコードを取得する
・サンプルコードのクローンを作成する

$ git clone https://github.com/kubernetes/examples

・サンプルコードがあるディレクトリに移動

$ cd examples/guestbook

 

Redis マスターの設定

・gcloud と kubectl の認証情報を設定する

$ gcloud container clusters \ get-credentials [cluster-name] \ --zone [cluster-zone]

 [cluster-name] と [cluster-zone] を、作成したインスタンスの名前とゾーンに置き換える

・コントローラの構成ファイルを確認する

cat redis-master-deployment.yaml

・Redis マスターをデプロイする

kubectl create -f redis-master-deployment.yaml

・実行中のポッドを表示する
Redis マスターポッドが実行されていることを確認する

kubectl get pods


Redis ワーカーの設定

Redis マスターは単一のポッドですが、いくつかの Redis ワーカー レプリカを追加することで、可用性を高めてトラフィックの需要を満たすことができる

 

Redis ワーカーの 2 つのレプリカを定義するマニフェスト ファイルを表示する
$ cat redis-slave-deployment.yaml
apiVersion: apps/v1 # for k8s versions before 1.9.0 use apps/v1beta2 and before 1.8.0 use extensions/v1beta1
kind: Deployment
metadata:
name: redis-slave
spec:
selector:
matchLabels:
app: redis
role: slave
tier: backend
spec:
containers:
- name: slave
image: gcr.io/google_samples/gb-redisslave:v1
resources:
requests:
cpu: 100m
memory: 100Mi
env:
- name: GET_HOSTS_FROM
value: dns
# If your cluster config does not include a dns service, then to
# instead access an environment variable to find the master
# service's host, comment out the 'value: dns' line above, and
# uncomment the line below:
# value: env
ports:
- containerPort: 6379

コンテナ クラスタで 2 つのレプリカを起動する
$ kubectl create -f redis-slave-deployment.yaml
deployment.apps/redis-slave created

ポッドのリストを照会して、2 つの Redis ワーカー レプリカが実行されていることを確認する
$kubectl get pods
NAME READY STATUS RESTARTS AGE
redis-slave-57f9f8db74-429fx 0/1 ContainerCreating 0 8s
redis-slave-57f9f8db74-kr666 0/1 ContainerCreating 0 8s