我正在尝试按照本教程为我使用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 回答
要将nginx模板文件从入口控制器窗格复制到本地计算机,您可以先使用
kubectl get pods
获取窗格的名称,然后运行kubectl exec [POD_NAME] -it -- cat /etc/nginx/template/nginx.tmpl > nginx.tmpl
.这将为您留下
nginx.tmpl
文件,然后您可以编辑并将其作为配置图重新推送 . 我建议尽量将模板的自定义更改保持在最低限度,因为它可能会使您以后更新控制器变得困难 .希望这可以帮助!