🐥
nginx ingress controller導入@OCI
概要
以下をやった自分用備忘録です
- OCIのコンピュートに3node立てて、そこでkubeadm使ってクラスタ作成
- nginx ingress controller導入(Nodeportです)
やったこと
クラスタ作成
基本的に以下を参考にさせていただきました。
ただ、注意点として以下がありました。
- Block Volumeの無料枠が100GBっぽくて、3node立てるとBoot Volumeで150GB持っていかれて2円くらいかかります
- kubeadm joinする前にセキュリティルールのイングレスに諸々追加が必要でした(iptablesで追加したやつら)
Nginx Ingress Controllerの導入
以下の公式ドキュメント参考にしました
実際に打ったコマンドは上にリンクのある以下のドキュメントにあります
デプロイは大体以下の感じです
## ingress controller作る
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.4.0/deploy/static/provider/baremetal/deploy.yaml
## テスト用のDeployment/Service/Ingress作成
cat << 'EOF' > deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
labels:
app: myapp
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: web-container
image: nginx
ports:
- containerPort: 80
EOF
cat << 'EOF' > service.yaml
apiVersion: v1
kind: Service
metadata:
name: myapp-service
labels:
app: myapp-service
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: myapp
type: ClusterIP
EOF
cat << 'EOF' > ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: myapp
spec:
ingressClassName: "nginx"
rules:
- host: "myapp.com"
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: myapp-service
port:
number: 80
EOF
## デプロイ
kubectl apply -f deployment.yaml -f service.yaml -f ingress.yaml
## 確認
kubectl get po,svc,ingress
その上で以下で確認します
## ingress-nginx-controllerの80側に対応するPORT確認
kubectl get svc -n ingress-nginx
## ingress-nginx-controllerのpodが動いているnodeのIPを確認
kubectl get po -n ingress-nginx
kubectl get pod/ingress-nginx-controller-***-*** \
-n ingress-nginx \
-o=jsonpath='{.status.hostIP}'
## curlしてみる(nginxのいつものが出て来ればOK)
curl -v http://<IP>:<PORT> -H "Host: myapp.com"
まとめ
- ingress周りの挙動の理解につながってよかった(LBの方はOKEでやってみようかなと思ってます)
- OCIの価格設定安い
Discussion