NetworkPolicy
apiVersion: networking.k8s.io/v1
import "k8s.io/api/networking/v1"
NetworkPolicy
NetworkPolicy описывает, какой сетевой трафик разрешен для набора Pods
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
-
metadata (ObjectMeta)
Стандартные метаданные объекта. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-
spec (NetworkPolicySpec)
spec представляет собой описание желаемого поведения для данного NetworkPolicy.
NetworkPolicySpec
NetworkPolicySpec предоставляет описание NetworkPolicy
-
podSelector (LabelSelector), обязательное поле
podSelector выбирает Pods, к которым применяется этот NetworkPolicy. Массив правил ingress применяется к любому Pod, выбранному этим полем. Несколько NetworkPolicy могут выбирать один и тот же набор Pods. В этом случае правила ingress для каждого из них объединяются аддитивно. Это поле НЕ является необязательным и следует стандартной семантике выбора меток. Пустой podSelector соответствует всем Pods в этом namespace.
-
policyTypes ([]string)
Атомарно: будет заменено при слиянии
policyTypes — список типов правил, к которым относится NetworkPolicy. Допустимые варианты: ["Ingress"], ["Egress"], или ["Ingress", "Egress"]. Если это поле не указано, оно будет установлено по умолчанию на основе наличия правил ingress или egress; политики, содержащие раздел egress, предполагается, что влияют на egress, а все политики (включая или не включая раздел ingress) предполагается, что влияют на ingress. Если вы хотите написать политику только для egress, вы должны явно указать policyTypes [ "Egress" ]. Аналогично, если вы хотите написать политику, которая указывает, что egress запрещен, вы должны указать значение policyTypes, включающее "Egress" (поскольку такая политика не будет содержать раздела egress и в противном случае будет установлено значение по умолчанию только [ "Ingress" ]). Это поле находится на стадии бета-тестирования в версии 1.8
-
ingress ([]NetworkPolicyIngressRule)
Атомарно: будет заменено при слиянии
ingress — список правил ingress, которые должны применяться к выбранным Pods. Трафик разрешен для Pod, если нет NetworkPolicy, выбирающих Pod (и политика кластера иначе разрешает трафик), ИЛИ если источник трафика — локальный узел Pod, ИЛИ если трафик соответствует, по крайней мере, одному правилу ingress во всех объектах NetworkPolicy, чьи podSelector соответствуют Pod. Если это поле пустое, этот NetworkPolicy не разрешает никакого трафика (и служит исключительно для обеспечения того, что Pods, которые он выбирает, изолированы по умолчанию)
NetworkPolicyIngressRule описывает конкретный набор трафика, который разрешен для Pods, соответствующих podSelector в NetworkPolicySpec. Трафик должен соответствовать как портам, так и источнику.
-
ingress.from ([]NetworkPolicyPeer)
Атомарно: будет заменено при слиянии
from — список источников, которые должны иметь возможность доступа к Pods, выбранным для этого правила. Элементы в этом списке объединяются с помощью логической операции OR. Если это поле пустое или отсутствует, это правило соответствует всем источникам (трафик не ограничен по источнику). Если это поле присутствует и содержит по крайней мере один элемент, это правило разрешает трафик только в том случае, если трафик соответствует по крайней мере одному элементу в списке from.
NetworkPolicyPeer описывает peer для разрешения трафика к/от. Разрешены только определенные комбинации полей
-
ingress.from.ipBlock (IPBlock)
ipBlock определяет политику для определенного IPBlock. Если это поле установлено, ни одно из других полей быть не может.
IPBlock описывает конкретный CIDR (например, "192.168.1.0/24","2001:db8::/64"), который разрешен для Pods, соответствующих podSelector в NetworkPolicySpec. Запись except описывает CIDR, которые не должны включаться в это правило.
-
ingress.from.ipBlock.cidr (string), обязательное поле
cidr — строка, представляющая IPBlock. Допустимые примеры: "192.168.1.0/24" или "2001:db8::/64"
-
ingress.from.ipBlock.except ([]string)
Атомарно: будет заменено при слиянии
except — срез CIDR, которые не должны включаться в IPBlock. Допустимые примеры: "192.168.1.0/24" или "2001:db8::/64". Значения Except будут отклонены, если они выходят за пределы диапазона cidr
-
-
ingress.from.namespaceSelector (LabelSelector)
namespaceSelector выбирает namespaces с помощью меток, имеющих кластерный масштаб. Это поле следует стандартной семантике выбора меток; если присутствует, но пустое, оно выбирает все namespaces.
Если также задан podSelector, то NetworkPolicyPeer в целом выбирает Pods, соответствующие podSelector в namespaces, выбранных namespaceSelector. В противном случае он выбирает все Pods в namespaces, выбранных namespaceSelector.
-
ingress.from.podSelector (LabelSelector)
podSelector — селектор меток, который выбирает Pods. Это поле следует стандартной семантике выбора меток; если присутствует, но пустое, оно выбирает все Pods.
Если также задан namespaceSelector, то NetworkPolicyPeer в целом выбирает Pods, соответствующие podSelector в Namespaces, выбранных NamespaceSelector. В противном случае он выбирает Pods, соответствующие podSelector в собственном namespace политики.
-
-
ingress.ports ([]NetworkPolicyPort)
Атомарно: будет заменено при слиянии
ports — список портов, которые должны быть доступны на выбранных Pods для этого правила. Каждый элемент в этом списке объединяется с помощью логической операции OR. Если это поле пустое или отсутствует, это правило соответствует всем портам (трафик не ограничен по порту). Если это поле присутствует и содержит по крайней мере один элемент, тогда это правило разрешает трафик только в том случае, если трафик соответствует хотя бы одному порту в списке.
NetworkPolicyPort описывает порт для разрешения трафика
-
ingress.ports.port (IntOrString)
port представляет собой порт на заданном протоколе. Это может быть либо числовой, либо именованный порт на Pod. Если это поле не указано, это соответствует всем именам и номерам портов. При наличии, будет сопоставляться только трафик на указанном протоколе И порту.
IntOrString — тип, который может содержать int32 или строку. При использовании в JSON или YAML маршалинге и унмаршалинге он генерирует или потребляет внутренний тип. Это позволяет, например, иметь поле JSON, которое может принимать имя или число.
-
ingress.ports.endPort (int32)
endPort указывает, что диапазон портов от port до endPort (при задании), включая оба, должен быть разрешен политикой. Это поле не может быть определено, если поле port не определено или если поле port определено как именованный (строковый) порт. endPort должен быть равен или больше port.
-
ingress.ports.protocol (string)
protocol представляет собой протокол (TCP, UDP или SCTP), которому должен соответствовать трафик. Если не указано, это поле по умолчанию равно TCP.
-
-
-
egress ([]NetworkPolicyEgressRule)
Атомарно: будет заменено при слиянии
egress — список правил egress, которые должны применяться к выбранным под. Исходящий трафик разрешен, если нет NetworkPolicies, выбирающих этот под (и политика кластера в противном случае разрешает трафик), ИЛИ если трафик соответствует по крайней мере одному правилу egress во всех объектах NetworkPolicy, чьи podSelector соответствуют под. Если это поле пусто, то эта NetworkPolicy ограничивает весь исходящий трафик (и служит только для обеспечения того, чтобы под, которые она выбирает, были изолированы по умолчанию). Это поле находится на уровне бета-версии в 1.8
NetworkPolicyEgressRule описывает конкретный набор трафика, который разрешен из под, соответствующих подSelector в NetworkPolicySpec. Трафик должен соответствовать как портам, так и to. Этот тип находится на уровне бета-версии в 1.8
-
egress.to ([]NetworkPolicyPeer)
Атомарно: будет заменено при слиянии
to — список пунктов назначения для исходящего трафика под, выбранных для этого правила. Элементы в этом списке объединяются с помощью логической операции ИЛИ. Если это поле пустое или отсутствует, это правило соответствует всем пунктам назначения (трафик не ограничен по пункту назначения). Если это поле присутствует и содержит по крайней мере один элемент, это правило разрешает трафик только в том случае, если трафик соответствует по крайней мере одному элементу в списке to.
NetworkPolicyPeer описывает peer для разрешения трафика к/из. Разрешены только определённые комбинации полей
-
egress.to.ipBlock (IPBlock)
ipBlock определяет политику по конкретному IPBlock. Если это поле задано, ни одно из других полей быть не может.
IPBlock описывает конкретный CIDR (например, "192.168.1.0/24", "2001:db8::/64"), который разрешен под, соответствующим podSelector в NetworkPolicySpec. Запись except описывает CIDR, которые не должны быть включены в это правило.
-
egress.to.ipBlock.cidr (string), required
cidr — строка, представляющая IPBlock. Действительными примерами являются "192.168.1.0/24" или "2001:db8::/64"
-
egress.to.ipBlock.except ([]string)
Атомарно: будет заменено при слиянии
except — срез CIDR, которые не должны быть включены в IPBlock. Действительными примерами являются "192.168.1.0/24" или "2001:db8::/64". Значения Except будут отклонены, если они находятся вне диапазона cidr.
-
-
egress.to.namespaceSelector (LabelSelector)
namespaceSelector выбирает пространства имён с помощью меток, имеющих кластер-уровень. Это поле следует стандартной семантике селектора меток; если оно присутствует, но пусто, оно выбирает все пространства имён.
Если podSelector также задан, то NetworkPolicyPeer в целом выбирает под, соответствующие podSelector в пространствах имён, выбранных namespaceSelector. В противном случае он выбирает все под в пространствах имён, выбранных namespaceSelector.
-
egress.to.podSelector (LabelSelector)
podSelector — селектор меток, который выбирает под. Это поле следует стандартной семантике селектора меток; если оно присутствует, но пусто, оно выбирает все под.
Если namespaceSelector также задан, то NetworkPolicyPeer в целом выбирает под, соответствующие podSelector в пространствах имён, выбранных namespaceSelector. В противном случае он выбирает под, соответствующие podSelector, в собственном пространстве имён политики.
-
-
egress.ports ([]NetworkPolicyPort)
Атомарно: будет заменено при слиянии
ports — список портов пунктов назначения для исходящего трафика. Каждый элемент в этом списке объединяется с помощью логической операции ИЛИ. Если это поле пустое или отсутствует, это правило соответствует всем портам (трафик не ограничен по порту). Если это поле присутствует и содержит по крайней мере один элемент, то это правило разрешает трафик только в том случае, если трафик соответствует по крайней мере одному порту в списке.
NetworkPolicyPort описывает порт для разрешения трафика
-
egress.ports.port (IntOrString)
port представляет порт на заданном протоколе. Это может быть числовой или именованный порт на pod. Если это поле не задано, это соответствует всем именованным и числовым портам. Если присутствует, будет соответствовать только трафику на указанный протокол и порт.
IntOrString — тип, который может содержать int32 или строку. При использовании в JSON или YAML маршалинге и унмаршалинге он генерирует или потребляет внутренний тип. Это позволяет, например, иметь поле JSON, которое может принимать имя или число.
-
egress.ports.endPort (int32)
endPort указывает, что диапазон портов от port до endPort (включительно), если задан, должен быть разрешен политикой. Это поле не может быть определено, если поле port не определено или если поле port определено как именованный (строковый) порт. endPort должен быть равен или больше port.
-
egress.ports.protocol (string)
protocol представляет протокол (TCP, UDP или SCTP), которому должен соответствовать трафик. Если не указано, это поле по умолчанию TCP.
-
-
СписокNetworkPolicy
NetworkPolicyList — это список объектов NetworkPolicy.
apiVersion: networking.k8s.io/v1
kind: СписокNetworkPolicy
-
metadata (ListMeta)
Стандартные метаданные списка. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-
items ([]NetworkPolicy), required
items — список схемных объектов.
© 2024 The Kubernetes Authors | Documentation Distributed under CC BY 4.0
Copyright © 2024 The Linux Foundation ®. All rights reserved.
https://kubernetes.io/docs/reference/kubernetes-api/policy-resources/network-policy-v1/