Kubernetes Ingress network deny some paths

后端 未结 2 1618
梦谈多话
梦谈多话 2020-12-04 01:59

I\'ve a simple kubernetes ingress network.

I need deny the access some critical paths like /admin or etc.

My ingress network file shown as below.

<         


        
2条回答
  •  南方客
    南方客 (楼主)
    2020-12-04 02:10

    I’ve faced the same issue and found the solution on github. To achieve your goal, you need to create two Ingresses first by default without any restriction:

    apiVersion: extensions/v1beta1
     kind: Ingress
     metadata:
     name: ingress-test
     spec:
       rules:
       - host: host.host.com
       http:
          paths:
            - path: /service-mapping
          backend:
             serviceName: /service-mapping
             servicePort: 9042
    

    Then, create a secret for auth as described in the doc:

    Creating the htpasswd

    $ htpasswd -c auth foo
    New password: 
    New password:
    Re-type new password:
    Adding password for user foo
    

    Creating the secret:

    $ kubectl create secret generic basic-auth --from-file=auth
    secret "basic-auth" created
    

    Second Ingress with auth for paths which you need to restrict:

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: ingress-with-auth
      annotations:
        # type of authentication
        nginx.ingress.kubernetes.io/auth-type: basic
        # name of the secret that contains the user/password definitions
        nginx.ingress.kubernetes.io/auth-secret: basic-auth
        # message to display with an appropiate context why the authentication is required
        nginx.ingress.kubernetes.io/auth-realm: "Authentication Required - foo"
    spec:
      rules:
      - host: host.host.com
        http:
          paths:
          - path: /admin
            backend:
              serviceName: service_name
              servicePort: 80
    

    According to sedooe answer, his solution may have some issues.

提交回复
热议问题