安装 nginx ingress controller

这边假设我们已经有了Kubernetes的环境,(windows下面我们可以通过 docker desktop来安装kubernetes)。 国内的腾讯云,阿里云,Azure, Google 都有 Kubernetes 服务。 (Azure Google 有一年内的免费额度。)

使用 Helm 安装

helm 本身也是需要安装到我们的机器里面可以通过 https://github.com/helm/helm/releases 来直接下载 (解压后扔到kubectl.exe同一个目录下)

使用这个安装的方便的地方是安装的时候我们可以通过命令行把参数直接传进去。

添加Repo

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update

默认参数安装

helm upgrade --install ingress-nginx ingress-nginx \ --repo https://kubernetes.github.io/ingress-nginx \ --namespace ingress-nginx --create-namespace 

指定 LoadBalancerIP

helm install ingress-nginx ingress-nginx/ingress-nginx  \
--namespace ingress-nginx \
--create-namespace \
--set controller.service.loadBalancerIP=ip地址 \
--set controller.service.annotations."service\.beta\.kubernetes\.io/azure-load-balancer-resource-group"=malema-test

在azure平台 如果 这个IP不是不是kubernetesr所在的resource group创建的。我们需要用 annotations来指定 resourceGrup

指定 ExternalIPs

(腾讯云如果不想用LoadBlancer可以用这个方式 省钱, 腾讯的IP是内网的那个IP。)

helm install ingress-nginx ingress-nginx/ingress-nginx  \
--namespace ingress-nginx \
--create-namespace \
--set controller.service.type=ClusterIP \
--set controller.service.externalIPs={"ip","ip2"} \

查看IP

上面的安装好后我们可以看到一个ingress class 要记起来。 默认的情况下是nginx。

然后用 下面的命令

kubectl get service -A

可以看到类似下面的输出。81.68.82.142 这个IP就是 ingress service的IP。 NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE ingress-nginx ingress-nginx LoadBlancer 172.16.252.119 81.68.82.142

删除

helm uninstall ingress-nginx

当第二次安装有出错的时候可以尝试用下面的命令删除它们

kubectl delete ClusterRole ingress-nginx
kubectl get validatingwebhookconfigurations -A

# failed calling webhook "validate.nginx.ingress.kubernetes.io":
kubectl delete -A ValidatingWebhookConfiguration ingress-nginx-admission

安装多个 Nginx ingress controller

安装第一个 Nginx

helm install ingress-nginx-1 ingress-nginx/ingress-nginx  \
--namespace ingress-nginx-1 \
--create-namespace \
--set controller.ingressClassResource.name=nginx-one \
--set controller.ingressClassResource.controllerValue="malema.net/ingress-nginx-1" \
--set controller.ingressClassResource.enabled=true \
--set controller.ingressClassByName=true

安装第二个 Nginx

helm install ingress-nginx-2 ingress-nginx/ingress-nginx  \
--namespace ingress-nginx-2 \
--create-namespace \
--set controller.ingressClassResource.name=nginx-two \
--set controller.ingressClassResource.controllerValue="malema.net/ingress-nginx-2" \
--set controller.ingressClassResource.enabled=true \
--set controller.ingressClassByName=true

controllerValue 这个东西开头必须是域名的形式。

最近更新的
...