azure - Kubernetes 入口重写问题

标签 azure kubernetes kubernetes-ingress kubernetes-service

我在 Kubernetes 中有一个入口定义。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: dev
  annotations:
    kubernetes.io/ingress.class: nginx
    #nginx.ingress.kubernetes.io/use-regex: "true"

    nginx.ingress.kubernetes.io/rewrite-target: /


spec:
  tls:
  - hosts:
    - xyz.org
    secretName: ingress-tls
  rules:
  - host: xyz.org
    http:
      paths:
      - path: /configuration/*
        backend:
          serviceName: dummysvc
          servicePort: 80           

每当我点击网址时我都需要它:https://example.com/configuration/它应该转到服务作为响应发送的某个文件或某个实体,但这不会发生,它给我一个错误页面“找不到上述地址的网页” 这是入口的问题吗?

以下是我的服务规范:

apiVersion: v1
kind: Service
metadata:
  name: dummysvc
spec:
  #type: LoadBalancer
  type: NodePort
  ports:
  - port: 80
    targetPort: 80
    protocol: TCP
  selector:
    app: configurationservice

以下是我的部署规范:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: dummy-deployment
  labels:
    app: configurationservice
spec:
  replicas: 3
  selector:
    matchLabels:
      app: configurationservice
  template:
    metadata:
      labels:
        app: configurationservice
    spec:
      volumes:
        - name: appinsights
          secret:
            secretName: appinsightngm-secrets
        - name: cosmosdb
          secret:
            secretName: cosmosdbngm-secrets
        - name: blobstorage
          secret:
            secretName: blobstoragengm-secrets
        - name: azuresearch
          secret:
            secretName: azuresearchngm-secrets            
      containers:
      - name: configurationservice
        image: xyz.azurecr.io/xyz.configurationservice:develop
        imagePullPolicy: Always
        ports:
        - containerPort: 80
        volumeMounts:
          - name: appinsights
            mountPath: "/appinsights/"
            readOnly: true
          - name: cosmosdb
            mountPath: "/cosmosdb/"
            readOnly: true
          - name: blobstorage
            mountPath: "/blobstorage/"
            readOnly: true
          - name: azuresearch
            mountPath: "/azuresearch/"
            readOnly: true
---
apiVersion: v1
kind: Service
metadata:
  name: dummysvc
spec:
  #type: LoadBalancer
  type: NodePort
  ports:
  - port: 80
    targetPort: 80
    protocol: TCP
  selector:
    app: configurationservice

最佳答案

您可以在以下位置尝试此示例: https://github.com/kubernetes/ingress-nginx/blob/master/docs/examples/rewrite/README.md#rewrite-target

$ echo "
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$1
  name: rewrite
  namespace: default
spec:
  rules:
  - host: rewrite.bar.com
    http:
      paths:
      - backend:
          serviceName: http-svc
          servicePort: 80
        path: /something/?(.*)
" | kubectl create -f -

关于azure - Kubernetes 入口重写问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54824066/

相关文章:

azure - 在 python 中的 aks 中缩放 pod

azure - AzureResourceGroupDeployment 和 AzureResourceManagerTemplateDeployment 是否相同?

azure - 如何允许其他用户部署到我的 Azure 云服务?

docker - Kubernetes:在多容器 Pod/Job 中停止 CloudSQL-proxy sidecar 容器

docker - k8s 不下载 docker 容器

kubernetes - Kubernetes集群中服务端点的基于延迟的路由

nginx - K8S 裸机 nginx-ingress-controller

asp.net-mvc - 还有另一种方法可以添加 Azure Active Directory 作为授权方法

kubernetes - Kubernetes在所有集群上更改kubelet配置

kubernetes - Kubernetes AWS EKS无法加载资源:net::ERR_NAME_NOT_RESOLVED