概要
前回は Nginx 社が開発している nginx-ingress-controller を試してみました
今回は kubernetes 公式が開発している ingress-nginx を試してみました
ほぼ同じですがデプロイ方法や機能が実感異なります
環境
- Ubuntu 18.04
- k8s v1.20.4
- nginx 1.19.6
普通にデプロイ
helm を使います
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
helm install ingress-nginx ingress-nginx/ingress-nginx
動作確認
NodePort で Service が Expose されているのでそこにアクセスすれば nginx の 404 画面にアクセスできます
Service へのアクセスは前回同様 Host と Path ベースの Ingress を定義する感じになります
削除
helm を使って削除します
helm delete ingress-nginx -n ingress-nginx
hostNetwork を使う
NodePort を使った場合は 30000 番ポート以上のハイポートで LISTEN することになります
ingress-nginx を使うとホストネットワークを使ってポートバインドすることもできます
290 行目あたりにある Deployment の設定を手動で変更します
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.44.0/deploy/static/provider/baremetal/deploy.yaml
vim deploy.yaml
# Source: ingress-nginx/templates/controller-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
helm.sh/chart: ingress-nginx-3.23.0
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/version: 0.44.0
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: controller
name: ingress-nginx-controller
namespace: ingress-nginx
spec:
selector:
matchLabels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/component: controller
revisionHistoryLimit: 10
minReadySeconds: 0
template:
metadata:
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/component: controller
spec:
hostNetwork: true # <- ここを追記
あとはデプロイするだけです
kubectl apply -f deploy.yaml
削除
helm を使っていないので namespace ごと削除しましょう
kubectl delete ns ingress-nginx
トラブルシューティング
Nginx 版の nginx-ingress-controller がすでにデプロイされている環境にデプロイしようとすると以下のエラーが発生しました
kubernetes 版と Nginx 版は共存しないほうが良さそうです
The IngressClass "nginx" is invalid: spec.controller: Invalid value: "k8s.io/ingress-nginx": field is immutable
最後に
helm を使って簡単にインストールできるのでこちらのほうが良いかもしれません
0 件のコメント:
コメントを投稿