🐙
GitHub CodespacesでKubernetesを動かす(kindでingress-nginx)
最近、コーディング中のラップトップのパフォーマンスが気になるので、GitHub Codespaces を触ってみます。
今回は、ローカルで Kubernetes クラスタを実行できる kind で ingress-nginx を動かしてみます。
devcontainer の設定
Docker と kubectl は下記 feature で導入します
前述の feature で minikube が導入できたのですが、今回使いたいのは kind です。
自分で feature を作ろうかとも思ったのですが、先人が用意してくれていたのでありがたく使わせていただきます 😻
devcontainer.json
{
"name": "Kubernetes with kind",
"image": "mcr.microsoft.com/devcontainers/base:bullseye",
"features": {
"ghcr.io/devcontainers/features/docker-in-docker:2": {
"enableNonRootDocker": "true",
"moby": "true"
},
// For kubectl
"ghcr.io/devcontainers/features/kubectl-helm-minikube:1": {
"version": "latest",
"helm": "latest",
"minikube": "latest"
},
"ghcr.io/mpriscella/features/kind:1": {
"version": "latest"
}
}
}
Codespaces を立ち上げます!
kind で ingress-nginx を動かしてみる
kind のチュートリアルに沿って進めます。
# クラスタを作成
cat <<EOF | kind create cluster --config=-
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
kubeadmConfigPatches:
- |
kind: InitConfiguration
nodeRegistration:
kubeletExtraArgs:
node-labels: "ingress-ready=true"
extraPortMappings:
- containerPort: 80
hostPort: 80
protocol: TCP
- containerPort: 443
hostPort: 443
protocol: TCP
EOF
# ingress-nginxを導入
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml
# ingress-nginxがreadyになるまで待機
kubectl wait --namespace ingress-nginx \
--for=condition=ready pod \
--selector=app.kubernetes.io/component=controller \
--timeout=90s
# サンプルコンテンツを作成
kubectl apply -f https://kind.sigs.k8s.io/examples/ingress/usage.yaml
ingress-nginx が動作していることを確かめます
curl localhost/foo/hostname
curl localhost/bar/hostname
無事動いているようです 🎉
ポートパネルからポート番号 80 のローカルアドレスを選択し、ブラウザでも開いてみます。
ルートは 404 ですが、
/foo/hostname
には無事アクセスできました!
Discussion