はじめに
naritomoと申します。
本職はインフラエンジニアを行っています。
最近色々活用し始めているgcloudコマンドからのK8Sインフラ構築を実施してみました。
いろいろアドバイスいただけると嬉しいです。
立ち上げ概要
mac M1を使用し、gcloudコマンドででGKE(GCP上のK8S)を立ち上げるものになります。
前提
以下のコマンドを利用できている状態になっていること。
brew
gcpコンソールからサービスアカウントも作成すること。
gcloudインストール(初回)
curl https://sdk.cloud.google.com | bash
brew cask install google-cloud-sdk
gcloud初期設定(初回)
gcloud init
gcloudログイン設定(初回)
gcloud auth login
gcloud設定(初回)
gcloud config set project プロジェクト名
gcloud config set compute/zone asia-northeast1-a
gcloud config set compute/region asia-northeast1
gcloud config configurations list
API有効化(初回)
gcloud services enable container.googleapis.com
GKEコンポーネント導入(初回)
gcloud components install gke-gcloud-auth-plugin
~/.zshrc追記(初回)
export USE_GKE_GCLOUD_AUTH_PLUGIN=True
反映(初回)
source .zshrc
kubectlインストール(初回)
brew install kubectl
kubectl version --client
gcloudアップデート
gcloud components update
デフォルトネットワーク作成
gcloud compute networks create default --subnet-mode=auto
GKEクラスタ立ち上げ
gcloud container clusters create gke-cluster --machine-type=e2-micro --num-nodes=2 --service-account=<サービスアカウント>
GKE認証情報取得
gcloud container clusters get-credentials gke-cluster
コンテキスト確認
kubectl config get-contexts
クラスタ確認
kubectl get all
サンプルデプロイ実施。
以下のファイルを作成する。
deploy.yml
## デプロイメント
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-deploy
spec:
replicas: 3
selector: # これは deployment - pod 対応用
matchLabels:
app: web
template: # ここからポッド・テンプレート
metadata:
labels:
app: web # ポッドのラベル
spec:
containers:
- name: nginx
image: nginx:latest
svc-lb.yml
apiVersion: v1
kind: Service
metadata:
name: web-service-lb
spec:
selector:
app: web
ports:
- name: webserver
protocol: TCP
port: 80
type: LoadBalancer
以下のコマンドを入力し、デプロイする。
kubectl apply -f deploy.yml
kubectl apply -f svc-lb.yml
デプロイ確認
kubectl get svc
→External-IPの値を確認する。(数分待つ。)
以下のサイトへアクセスしてnginx画面が出てくること。
http://<External-IP>
サンプルデプロイ削除
kubectl delete -f .
削除方法
クラスタ削除
gcloud container clusters delete gke-cluster
デフォルトネットワーク削除
gcloud compute networks delete default
おわりに
この記事がgcloud/GKEを扱う方の助けになればと思います。