事前準備
Googleのアカウント
クラスタ作成
kubectlのインストール
gcrに簡単なrailsアプリをpushしておく
作業ディレクトリの作成
早速始めよう
1.作ったクラスタ(コンテキスト)を指定する
gcloud container clusters get-credentials {cluster_name} --region asia-northeast1 --project {project_name}
これ結構大事、作業クラスタが間違ってると事案になる可能性があるので気をつけよう。
kube-ps1
等のツールを入れておくと現在のコンテキストが一瞬で可視化できるので便利。
2.namespaceを作成
kubectl create ns {namespace_name}
namespaceは簡単にいうとクラスタの中で独立した領域を作成できる
3.マニュフェストファイルの作成
kubectl --namespace={namespace_name} create deploy {app_name} -o yaml --dry-run=client --image={gcr_image} > deploy.yaml
マニュフェストファイルはpodを管理するファイル。上記のコマンドでdeploy.yamlが生成される
4.deploy.yamlの編集
spec:
containers:
- image: asia.gcr.io・・・
name: app_name
ports:
- containerPort: 3000
env:
ポートを指定する。今回は3000番ポートを使用。
envは今回はRailsなのでRAILS_ENVとSECRET_KEY_BASEとDATABASE_NAMEを設定してればいいと思う。
5.デプロイ(apply)
先程のdeploy.yamlをデプロイする
kubectl -n {namespace_name} apply -f deploy.yaml
デプロイ確認
kubectl -n {namespace_name} get deploy
kubectl -n {namespace_name} get po
podが出来てることを確認する
6.アプリを外部公開する
今回はService: LoadBalancerを使う
kubectl -n {namespace_name} expose deploy {app_name} --type=LoadBalancer
IPアドレスが割り当てられるのを待つ
kubectl -n {namespace_name} get svc
でEXTERNAL-IP、PORTを確認する。
https://{EXTERNAL-IP}:{PORT}でアクセス。