首页 > 解决方案 > 如何将 nginx 配置转换为入口 kubernetes yaml 配置?

问题描述

我在 Kubernetes 上部署了 Vue JS。我需要在这个页面上配置 nginx 路由:

https://router.vuejs.org/guide/essentials/history-mode.html#example-server-configurations

配置是这样的:

location / {
  try_files $uri $uri/ /index.html;
} 

如何将该配置转换为入口 kubernetes yaml 配置?

我试过这个但不起作用

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /index.html
  name: backoffice
  namespace: default
  selfLink: /apis/extensions/v1beta1/namespaces/default/ingresses/backoffice
spec:
  rules:
    - host: dev.abc.com
      http:
        paths:
          - backend:
              serviceName: backoffice-svc
              servicePort: 443
            path: /

我尝试使用此注释但仍然无法正常工作:

nginx.ingress.kubernetes.io/app-root: /app1

标签: nginxurl-rewritingkubernetes-ingressnginx-ingress

解决方案


Ingress可能如下所示:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: some-nice-server
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  rules:
  - host: "some.nice.server.com"
    http:
      paths:
      - path: /something1/?(.*)
        backend:
          serviceName: something-1
          servicePort: 8080

这在Kubernetes Ingress-Nginx dosc 中有很好的解释。

或者,您也可以在注释中使用配置片段:

...
nginx.ingress.kubernetes.io/configuration-snippet: |
      try_files $uri $uri/ /index.html; 
...

推荐阅读