Loading Search...
Crater
依赖项目

Ingress-NGINX 部署指南

Crater 使用 Ingress-NGINX 控制器来管理服务的外部访问,作为 HTTP 和 HTTPS 流量的主要入口点。

部署

选项 1:不使用 LoadBalancer(例如裸金属或开发集群)

在不支持 LoadBalancer 服务类型的集群中,我们建议启用 hostNetwork 模式。

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 \
  --version 4.11.3 \
  --set controller.image.registry="crater-harbor.act.buaa.edu.cn/registry.k8s.io" \
  --set controller.admissionWebhooks.patch.image.registry="crater-harbor.act.buaa.edu.cn/registry.k8s.io" \
  --set controller.hostNetwork=true \
  --set controller.dnsPolicy=ClusterFirstWithHostNet \
  --set controller.healthCheckHost="10.109.80.4" \
  --set 'controller.nodeSelector.kubernetes\.io/hostname=cnode1' \
  --set "controller.tolerations="

🔧 根据你的集群节点配置调整节点选择器、容忍度和 healthCheckHost。

选项 2:使用 MetalLB(Crater 推荐) 在我们的生产集群中,Crater 使用 MetalLB 在 Layer 2 模式下分配内部 IP。Ingress 控制器作为 LoadBalancer 服务部署,获得一个内部 IP。

helm upgrade --install ingress-nginx ingress-nginx/ingress-nginx \
  --namespace ingress-nginx \
  --create-namespace \
  --version 4.11.3 \
  --set controller.image.registry="crater-harbor.act.buaa.edu.cn/registry.k8s.io" \
  --set controller.admissionWebhooks.patch.image.registry="crater-harbor.act.buaa.edu.cn/registry.k8s.io" \
  --set controller.allowSnippetAnnotations=true

📌 此配置使用 MetalLB 池中的一个内部 IP,并支持在受信任网络(例如大学内网)中的服务发现。

你可以通过以下命令验证外部 IP 的分配:

kubectl get svc -n ingress-nginx

示例:

NAME                       TYPE           EXTERNAL-IP       PORT(S)
ingress-nginx-controller   LoadBalancer   192.168.100.243   80:31234/TCP,443:31235/TCP

版本兼容性说明

我们目前 将 Ingress-NGINX 版本固定为 4.11.3,因为 Crater 的 Ingress 注解尚未与版本 ≥ 4.12.0 兼容。尝试使用新版本将导致路由重写错误。

卸载

要移除 Ingress 控制器:

helm uninstall ingress-nginx -n ingress-nginx

参考资料

Edit on GitHub