はじめに
「Kubernetes 気になるけど難しそう」
正直、私も最初に公式ドキュメントを見たときは用語も多くてよく分からず、かなり身構えていました。
今回はそんな 超初心者の自分が、kind を使って Kubernetes 上で実際に エンジンエックスの サイトを起動するところまでやってみた ので、その手順を紹介します。
今回のゴール
- ローカル環境で Kubernetes を起動する
- nginx を使って Web サイトを立ち上げる
- ブラウザ(または curl)でアクセスできる状態にする
なぜ kind を選んだのか
学習用途で使う Kubernetes 環境としては、minikube と kind が有名です。
今回は次の理由から kind を選びました。
- Docker があればすぐ使える
- クラスター作成が高速
- 失敗しても作り直しが楽
とにかく「まず触って動かす」には最適だと感じました。
事前準備
- Docker Desktop が起動していること
- kubectl がインストールされていること
- kind がインストールされていること
確認コマンド:
kind -version
docker ps
kubectl version --client
nginx を使ってサイトを起動する
site.yaml を作成
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysite
spec:
replicas: 1
selector:
matchLabels:
app: mysite
template:
metadata:
labels:
app: mysite
spec:
containers:
- name: web
image: nginx
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: mysite
spec:
type: NodePort
selector:
app: mysite
ports:
- port: 80
targetPort: 80
nodePort: 30080
デプロイ
kubectl apply -f site.yaml
状態確認:
kubectl get pods
kubectl get svc
Pod が Running になれば OK です。
問題点1:NodePort につながらない
localhost:30080 にアクセスしても繋がらず、最初はかなり混乱しました。
調べてみると、kind では NodePort がそのまま localhost に出ないことがある ようです。
解決策:port-forward を使う
確実にアクセスできる方法として、kubectl port-forward を使いました。
kubectl port-forward svc/mysite 8080:80 --address 0.0.0.0
別ターミナルで、
curl http://localhost:8080
nginx の Welcome ページが表示され、無事サイトにアクセスできました
完成
Congratulations🎉
最後に
最初は「難しそう」と思っていた Kubernetes ですが、
実際に動かしてみると理解が一気に進む と感じました。
次回は、自分の Next.js アプリを載せてみたいと思います。