首页 文章

找到nginx-ingress-controller的有效NGINX模板? (Kubernetes)

提问于
浏览
2

我正在尝试按照本教程为我使用kops部署到AWS的Kubernetes集群配置nginx-ingress-controller .

https://daemonza.github.io/2017/02/13/kubernetes-nginx-ingress-controller/

当我运行 kubectl create -f ./nginx-ingress-controller.yml 时,会创建pod但出错 . 据我所知,问题在于nginx-ingress-controller.yml的以下部分:

volumes:
        - name: tls-dhparam-vol
          secret:
            secretName: tls-dhparam
        - name: nginx-template-volume
          configMap:
            name: nginx-template
            items:
            - key: nginx.tmpl
              path: nginx.tmpl

pod上显示错误:

卷“nginx-template-volume”的MountVolume.SetUp失败:找不到configmaps“nginx-template”

这是有道理的,因为教程没有读者在创建控制器之前创建此配置图 . 我知道我需要使用以下命令创建configmap:

kubectl create configmap nginx-template --from-file=nginx.tmpl=nginx.tmpl

我使用从源like this找到的 nginx.tmpl 文件来完成此操作,但它们似乎不起作用(总是因NGINX模板错误无效而失败) . 日志示例:

I1117 16:29:49.344882       1 main.go:94] Using build: https://github.com/bprashanth/contrib.git - git-92b2bac
I1117 16:29:49.402732       1 main.go:123] Validated default/default-http-backend as the default backend
I1117 16:29:49.402901       1 main.go:80] mkdir /etc/nginx-ssl: file exists already exists
I1117 16:29:49.402951       1 ssl.go:127] using file '/etc/nginx-ssl/dhparam/dhparam.pem' for parameter ssl_dhparam
F1117 16:29:49.403962       1 main.go:71] invalid NGINX template: template: nginx.tmpl:1: function "where" not defined

使用的图像版本相当陈旧,但我尝试过没有运气的新版本 .

containers:
        - name: nginx-ingress-controller
          image: gcr.io/google_containers/nginx-ingress-controller:0.8.3

This thread与我的问题类似,但是我使用的语言/语法与Docker不兼容......?

1 回答

  • 2

    要将nginx模板文件从入口控制器窗格复制到本地计算机,您可以先使用 kubectl get pods 获取窗格的名称,然后运行 kubectl exec [POD_NAME] -it -- cat /etc/nginx/template/nginx.tmpl > nginx.tmpl .

    这将为您留下 nginx.tmpl 文件,然后您可以编辑并将其作为配置图重新推送 . 我建议尽量将模板的自定义更改保持在最低限度,因为它可能会使您以后更新控制器变得困难 .

    希望这可以帮助!

相关问题