Rke2如何设置ingress external ip

环境信息:
RKE2 版本:

hts0000@rke2-node1:~$ rke2 -v
rke2 version v1.28.11+rke2r1 (6b12d7a783238b72da8450fa1b6ec587cebb79ed)
go version go1.21.11 X:boringcrypto

节点 CPU 架构,操作系统和版本:
2C4G 3节点的虚拟机架构。
操作系统:ubuntu server 24.04

集群配置:
总共3台服务器,采用3 server的架构

问题描述:
rke2中nginx-ingress通过/var/lib/rancher/rke2/server/manifests/rke2-ingress-nginx.yaml文件自动部署,我在文件中添加如下配置,希望能设置nginx-ingress对应service的external ip,但是不起作用。也不知道去哪里能看到为什么不起作用的日志。

set:
    controller.service.externalIPs[0]: 192.168.233.200

我使用如下命令查看HelmChartController状态和日志,但是没有任何发现

kubectl get HelmChart -n kube-system
NAME                               JOB                                             CHART   TARGETNAMESPACE   VERSION   REPO   HELMVERSION   BOOTSTRAP
rke2-ingress-nginx                 helm-install-rke2-ingress-nginx                                                                          false

所以我有两个问题:

  1. 如何正确的为ingress添加external ip
  2. 在哪里能看到为什么配置不生效的错误提示

我对Helm和HelmChartsController不是很熟悉,查看了官方文档也没找到有用的信息。烦请各位大佬指点

直接在 rke2 的 /var/lib/rancher/rke2/server/manifests/rke2-ingress-nginx.yaml 修改配置是不生效的,要修改 nginx ingress controller 的配置,可参考:Networking Services | RKE2

感谢大佬回复。

我在/var/lib/rancher/rke2/server/manifests/rke2-ingress-nginx.yaml文件里添加了如下配置,但是好像没有效果。

spec:
  valuesContent: |-
    controller:
      admissionWebhooks:
        admissionWebhooks:
          externalIPs:
            - 192.168.233.200

参考:https://github.com/kubernetes/ingress-nginx/tree/main/charts/ingress-nginx#configuration 查看下参数的格式或者配置是否正确,我根据你的产品配置并没有在文档里找到。

我也不清楚配置对不对,哪里能看到日志或报错吗

我现在完全看不到哪里不对,为什么不对。。。就像个黑盒一样

我把rke2自带的nginx-ingress disable了,然后自己安装了nginx-ingress,手动添加externalIPs配置,终于可以生效了。下面是我的步骤。

  1. 在所有server的/etc/rancher/rke2/config.yaml中加入如下配置,并重启。
disable: rke2-ingress-nginx
systemctl restart rke2-server
  1. 使用helm安装nginx-ingress
# 添加helm nginx-ingress repo
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update

# helm install时使用的都是默认配置
# 通过helm show values [charts]可以查看默认配置
# 获取nginx-ingress的配置
helm show values ingress-nginx/ingress-nginx > values.yaml

# 修改其中的
# controller.service.external.enabled: true
# controller.service.externalIPs: ["192.168.233.200"]
# 可以指定nginx-ingress暴露一个ExternalIp
controller:
  service:
    external:
      enabled: true
    externalIPs: ["192.168.233.200"]

# 指定nginx-ingress配置文件安装
helm install ingress-nginx ingress-nginx/ingress-nginx -n ingress-nginx --create-namespace -f values.yaml
  1. 查看nginx-ingress对应的svc
kubectl get svc -n ingress-nginx
NAME                                 TYPE           CLUSTER-IP      EXTERNAL-IP       PORT(S)                      AGE
ingress-nginx-controller             LoadBalancer   10.43.123.124   192.168.233.200   80:31780/TCP,443:31722/TCP   5h13m
ingress-nginx-controller-admission   ClusterIP      10.43.96.211    <none>            443/TCP                      5h13m