【问题标题】:How to Disable HTTPS in Nginx DaemonSet Installed via Helm?如何在通过 Helm 安装的 Nginx DaemonSet 中禁用 HTTPS?
【发布时间】:2020-11-17 03:57:25
【问题描述】:

我正在尝试使用 Helm 作为 DaemonSet 在 K8S 集群上使用 HostNetwork 安装 Ngnix Ingress。目标是将其用作 AWS ALB 后面的反向代理,将外部请求路由到集群中。我使用的是如下(它是 CDK,但应该没关系):

cluster.addChart('NginxIngress', {
  chart: 'nginx-ingress',
  repository: 'https://kubernetes-charts.storage.googleapis.com',
  namespace: 'ingress-nginx',
  wait: true,
  values: {
    controller: {
      kind: 'DaemonSet',
      hostNetwork: true,
      daemonset: {
        useHostPort: true,
      },
      service: {
        enabled: false,
      },
    }
  }
});

当我描述 DaemonSet 时,我仍然看到 HTTPS 端口:

  Containers:
   nginx-ingress-nginx-ingress:
    Image:       us.gcr.io/k8s-artifacts-prod/ingress-nginx/controller:v0.34.1
    Ports:       80/TCP, 443/TCP
    Host Ports:  80/TCP, 443/TCP

我无法验证它是否真的在监听节点上的端口,因为它是私有的(有没有办法像我们为服务所做的那样使用 kubectl 端口转发节点端口?请注意,没有我的配置中的 Nginx 服务。)
有什么我需要做的吗?同样,我的目标是让 Nginx 作为 HTTP(不是 HTTPS)反向代理。谢谢。

更新 #1
我已经尝试设置controller.service.enableHttps=false。它会在我完全禁用的服务上禁用 HTTPS。
同样将controller.daemonset.hostPorts.https留空也行不通,因为我认为,如果为空,它会选择默认值。

【问题讨论】:

  • 您是否尝试在用于安装 helm chart 的 config.yaml 中添加 controller.service.enableHttps: false
  • 是的,它是为服务而不是守护进程。我完全禁用了该服务。

标签: nginx kubernetes kubernetes-helm


【解决方案1】:

根据https://github.com/helm/charts/tree/master/stable/nginx-ingress

您可以使用下面的布尔标志来禁用 https

如果应该打开 443 端口进行服务 - 默认为 true

controller.service.enableHttps  

hostPort 还有其他选项

如果 controller.daemonset.useHostPort 为 true 且非空,则设置 hostPort

根据说明,您可以取消设置此值以禁用该端口

controller.daemonset.hostPorts.https    

【讨论】:

    【解决方案2】:

    查看 daemonset 模板,有这个值映射 controller.containerPort 默认包含两个端口; httphttps。您只需从地图中删除默认的https 值:controller.containerPort.https=null

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-03
      • 2023-04-04
      • 1970-01-01
      • 2021-04-12
      • 1970-01-01
      • 2021-11-05
      • 2018-05-30
      • 1970-01-01
      相关资源
      最近更新 更多