2016-07-13 2 views
0

Я пытаюсь создать сервис, используя следующий yaml. Как вы можете видеть, я пытаюсь ограничить доступ к сервису из диапазона 10.0.0.0/8.Как ограничить доступ к сервису Kubernetes?

apiVersion: v1 
kind: Service 
metadata: 
    name: nginx-service 
spec: 
    ports: 
    # the port that this service should serve on 
    - port: 443 
     targetPort: 443 
    # label keys and values that must match in order to receive traffic for this service 
    selector: 
    name: nginx 
    type: LoadBalancer 
    loadBalancerSourceRanges: 
    - 10.0.0.0/8 

Есть несколько Kubernetes документов (перечислены ниже), которые обсуждают, как использовать loadBalancerSourceRanges аннотацию управления доступом к службам.

http://kubernetes.io/docs/user-guide/services-firewalls/

Однако, когда я пытаюсь создать эту услугу, я получаю ошибку следующим образом

ошибку проверяющих «SDP-cluster.yaml»: ошибка проверки данные: найден недопустимых поля loadBalancerSourceRanges для v1.ServiceSpec; если вы игнорировать эти ошибки, включите проверку прочь с --validate = ложь

Я смотрел на v1.ServiceSpec и не смогли найти его там.

Я что-то упустил? Как я могу ограничить трафик службы в Кубернете?

ответ

0

Обнаружена проблема и исправлена. Версия 1.2 не поддерживает поле «loadBalancerSourceRanges», однако оно поддерживает его как аннотацию. Поэтому я исправил свой ямль следующим образом, и он работал хорошо.

apiVersion: v1 
kind: Service 
metadata: 
    name: nginx-service 
    annotations: 
    service.beta.kubernetes.io/load-balancer-source-ranges: "a.b.c.d/8, x.y.0.0/24" 
spec: 
    ports: 
    # the port that this service should serve on 
    - port: 443 
     targetPort: 443 
    # label keys and values that must match in order to receive traffic for this service 
    selector: 
    name: nginx 
    type: LoadBalancer 
+0

На данный момент можно ограничиться 0.0.0.0/0. Пример не может работать. См. Код на странице https://github.com/kubernetes/kubernetes/blob/f4738ff575ae625914e8dfb93f5af04dea22b1d7/pkg/cloudprovider/providers/aws/aws.go#L73 – user2707671

1

loadBalancerSourceRanges распространяется только на поле в 1.3. Это всегда была аннотация, называемая https://github.com/kubernetes/kubernetes/blob/master/pkg/api/service/annotations.go#L27 (ну, поскольку функция существовала в 1.2), которая теперь устарела, поскольку мы продвинули ее в поле.

Обратите внимание, что поле аннотации/является временным списком, но оно работает только с поддерживаемыми облачными провайдерами. Если вы установите его на 10.0/8, вы можете получить доступ только к конечным точкам от в пределах вашего кластера кубов (т. Е. Loadbalancer ip ведет себя как clusterIP). Даже узел за пределами вашего кластера внутри одного и того же облачного провайдера будет иметь NAT для доступа к общедоступному ip, что означает, что ip-адрес источника в пакете не будет 10-точкой, поэтому он не пройдет через брандмауэр. Вы можете установить его в общедоступный IP-адрес, и только тот клиент сможет добраться до вашего Сервиса.

+0

Благодаря Prashanth B. Перед отправкой вопрос я прочитал о том, что вы выложили. Однако не было никаких конкретных инструкций или примеров кода, чтобы получить это право в версии 1.2. Так что это заставило меня угадывать какое-то время. Затем я нашел исправление. – Sanjeet

1

Просто небольшое дополнение, которое я нашел в случае, если кто-то столкнется с тем же вопросом. Кажется, что Google Container Engine был обновлен до Kubernetes 1.3, что означает, что он не может проверить новый синтаксис loadBalancerSourceRanges, но он, похоже, фактически не поддерживает новый синтаксис, то есть это поле игнорируется. На данный момент все еще необходимо установить аннотацию или балансировщик нагрузки в конечном итоге.

2

Это теперь поддерживается GCE, GKE и AWS. Если поставщик не поддерживает его, он будет проигнорирован. Kubernetes Doc

apiVersion: v1 
 
kind: Service 
 
metadata: 
 
    name: myapp 
 
spec: 
 
    ports: 
 
    - port: 8765 
 
     targetPort: 9376 
 
    selector: 
 
    app: example 
 
    type: LoadBalancer 
 
    loadBalancerSourceRanges: 
 
    - 10.0.0.0/8

Смежные вопросы