Политика сети
apiVersion: networking.k8s.io/v1
import "k8s.io/api/networking/v1"
Политика сети
Политика сети описывает, какой сетевой трафик разрешен для набора Pods
-
apiVersion: networking.k8s.io/v1
-
kind: Политика сети
-
metadata (ObjectMeta)
Стандартные метаданные объекта. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-
spec (NetworkPolicySpec)
Описание желаемого поведения для этой политики сети.
-
status (NetworkPolicyStatus)
Статус — текущее состояние политики сети. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
NetworkPolicySpec
NetworkPolicySpec предоставляет описание политики сети
-
podSelector (LabelSelector), обязательный
Выбирает узлы, к которым относится этот объект NetworkPolicy. Массив правил ingress применяется ко всем узлам, выбранным этим полем. Несколько правил NetworkPolicy могут выбирать один и тот же набор узлов. В этом случае правила ingress для каждого из них объединяются аддитивно. Это поле НЕ является необязательным и следует семантике стандартного селектора меток. Пустой podSelector соответствует всем узлам в этом пространстве имён.
-
policyTypes ([]string)
Список типов правил, к которым относится NetworkPolicy. Допустимые варианты: ["Ingress"], ["Egress"], или ["Ingress", "Egress"]. Если это поле не указано, оно будет установлено по умолчанию в зависимости от наличия правил Ingress или Egress; политики, содержащие раздел Egress, предполагается, что влияют на Egress, и все политики (содержат ли они раздел Ingress или нет) предполагается, что влияют на Ingress. Если вы хотите написать политику только для egress, вы должны явно указать policyTypes [ "Egress" ]. Аналогично, если вы хотите написать политику, которая указывает, что egress запрещён, вы должны указать значение policyTypes, включающее "Egress" (поскольку такая политика не будет содержать раздела Egress и в противном случае будет установлено по умолчанию только [ "Ingress" ]). Это поле находится на стадии бета-тестирования в 1.8
-
ingress ([]NetworkPolicyIngressRule)
Список правил ingress, которые должны применяться к выбранным узлам. Трафик разрешается для узла, если нет NetworkPolicy, выбирающих узел (и политика кластера иначе разрешает трафик), ИЛИ если источник трафика — локальный узел узла, ИЛИ если трафик соответствует хотя бы одному правилу ingress во всех объектах NetworkPolicy, чей podSelector соответствует узлу. Если это поле пусто, то данная NetworkPolicy не разрешает никакой трафик (и служит только для обеспечения того, что узлы, которые она выбирает, изолированы по умолчанию)
NetworkPolicyIngressRule описывает конкретный набор трафика, который разрешён узлам, соответствующим podSelector NetworkPolicySpec. Трафик должен соответствовать как портам, так и источнику.
-
ingress.from ([]NetworkPolicyPeer)
Список источников, которые должны иметь доступ к узлам, выбранным для этого правила. Элементы в этом списке объединяются с помощью логического ИЛИ. Если это поле пусто или отсутствует, это правило соответствует всем источникам (трафик не ограничен источником). Если это поле присутствует и содержит по крайней мере один элемент, это правило разрешает трафик только в том случае, если трафик соответствует по крайней мере одному элементу в списке from.
NetworkPolicyPeer описывает peer для разрешения трафика к/от. Разрешены только определённые комбинации полей
-
ingress.from.ipBlock (IPBlock)
IPBlock определяет политику для определённого IPBlock. Если это поле задано, ни одно из других полей не может быть установлено.
IPBlock описывает определённый CIDR (например, "192.168.1.1/24", "2001:db9::/64"), который разрешён узлам, соответствующим podSelector NetworkPolicySpec. Элемент except описывает CIDR, которые не должны быть включены в это правило.
-
ingress.from.ipBlock.cidr (string), обязательный
CIDR — строка, представляющая IP-блок. Допустимые примеры: "192.168.1.1/24" или "2001:db9::/64"
-
ingress.from.ipBlock.except ([]string)
Except — массив CIDR, которые не должны быть включены в IP-блок. Допустимые примеры: "192.168.1.1/24" или "2001:db9::/64". Значения Except будут отклонены, если они находятся вне диапазона CIDR.
-
-
ingress.from.namespaceSelector (LabelSelector)
Выбирает пространства имён с помощью меток, охватывающих весь кластер. Это поле следует семантике стандартного селектора меток; если присутствует, но пусто, оно выбирает все пространства имён.
Если PodSelector также задан, то NetworkPolicyPeer в целом выбирает узлы, соответствующие PodSelector в пространствах имён, выбранных NamespaceSelector. В противном случае он выбирает все узлы в пространствах имён, выбранных NamespaceSelector.
-
ingress.from.podSelector (LabelSelector)
Это селектор меток, который выбирает узлы. Это поле следует семантике стандартного селектора меток; если присутствует, но пусто, оно выбирает все узлы.
Если NamespaceSelector также задан, то NetworkPolicyPeer в целом выбирает узлы, соответствующие PodSelector в пространствах имён, выбранных NamespaceSelector. В противном случае он выбирает узлы, соответствующие PodSelector в собственном пространстве имён политики.
-
-
ingress.ports ([]NetworkPolicyPort)
Список портов, которые должны быть доступны на выбранных узлах для этого правила. Каждый элемент в этом списке объединяется с помощью логического ИЛИ. Если это поле пусто или отсутствует, это правило соответствует всем портам (трафик не ограничен портом). Если это поле присутствует и содержит по крайней мере один элемент, то это правило разрешает трафик только в том случае, если трафик соответствует по крайней мере одному порту в списке.
NetworkPolicyPort описывает порт для разрешения трафика
-
ingress.ports.port (IntOrString)
Порт на заданном протоколе. Это может быть числовой или именованный порт на узле. Если это поле не указано, это соответствует всем именам и номерам портов. Если присутствует, только трафик на указанном протоколе И порте будет соответствовать.
IntOrString — тип, который может содержать int32 или строку. При использовании в JSON или YAML маршаллировании и расмаршаллировании он производит или потребляет внутренний тип. Это позволяет, например, иметь поле JSON, которое может принимать имя или число.
-
ingress.ports.endPort (int32)
Если установлено, указывает, что диапазон портов от port до endPort включительно должен быть разрешен политикой. Это поле нельзя определить, если поле port не определено или если поле port определено как именованный (строковый) порт. endPort должен быть равен или больше port. Эта функция находится на стадии бета-тестирования и включена по умолчанию. Можно отключить её, используя Feature Gate "NetworkPolicyEndPort".
-
ingress.ports.protocol (string)
Протокол (TCP, UDP или SCTP), которому должен соответствовать трафик. Если не указано, это поле по умолчанию равно TCP.
-
-
-
egress ([]NetworkPolicyEgressRule)
Список правил egress, которые должны применяться к выбранным узлам. Исходящий трафик разрешается, если нет NetworkPolicy, выбирающих узел (и политика кластера иначе разрешает трафик), ИЛИ если трафик соответствует по крайней мере одному правилу egress во всех объектах NetworkPolicy, чей podSelector соответствует узлу. Если это поле пусто, то данная NetworkPolicy ограничивает весь исходящий трафик (и служит только для обеспечения того, что узлы, которые она выбирает, изолированы по умолчанию). Это поле находится на стадии бета-тестирования в 1.8
NetworkPolicyEgressRule описывает конкретный набор трафика, который разрешён из узлов, соответствующих podSelector NetworkPolicySpec. Трафик должен соответствовать как портам, так и пункту назначения. Этот тип находится на стадии бета-тестирования в 1.8
-
egress.to ([]NetworkPolicyPeer)
Список пунктов назначения для исходящего трафика выбранных узлов для этого правила. Элементы в этом списке объединяются с помощью логического ИЛИ. Если это поле пусто или отсутствует, это правило соответствует всем пунктам назначения (трафик не ограничен пунктом назначения). Если это поле присутствует и содержит по крайней мере один элемент, это правило разрешает трафик только в том случае, если трафик соответствует по крайней мере одному элементу в списке to.
NetworkPolicyPeer описывает peer для разрешения трафика к/от. Разрешены только определённые комбинации полей
-
egress.to.ipBlock (IPBlock)
IPBlock определяет политику для определённого IPBlock. Если это поле задано, ни одно из других полей не может быть установлено.
IPBlock описывает определённый CIDR (например, "192.168.1.1/24", "2001:db9::/64"), который разрешён узлам, соответствующим podSelector NetworkPolicySpec. Элемент except описывает CIDR, которые не должны быть включены в это правило.
-
egress.to.ipBlock.cidr (string), обязательный
CIDR — строка, представляющая IP-блок. Допустимые примеры: "192.168.1.1/24" или "2001:db9::/64"
-
egress.to.ipBlock.except ([]string)
Except — массив CIDR, которые не должны быть включены в IP-блок. Допустимые примеры: "192.168.1.1/24" или "2001:db9::/64". Значения Except будут отклонены, если они находятся вне диапазона CIDR.
-
-
egress.to.namespaceSelector (LabelSelector)
Выбирает пространства имён с помощью меток, охватывающих весь кластер. Это поле следует семантике стандартного селектора меток; если присутствует, но пусто, оно выбирает все пространства имён.
Если PodSelector также задан, то NetworkPolicyPeer в целом выбирает узлы, соответствующие PodSelector в пространствах имён, выбранных NamespaceSelector. В противном случае он выбирает все узлы в пространствах имён, выбранных NamespaceSelector.
-
egress.to.podSelector (LabelSelector)
Это селектор меток, который выбирает узлы. Это поле следует семантике стандартного селектора меток; если присутствует, но пусто, оно выбирает все узлы.
Если NamespaceSelector также задан, то NetworkPolicyPeer в целом выбирает узлы, соответствующие PodSelector в пространствах имён, выбранных NamespaceSelector. В противном случае он выбирает узлы, соответствующие PodSelector в собственном пространстве имён политики.
-
-
egress.ports ([]NetworkPolicyPort)
Список портов назначения для исходящего трафика. Каждый элемент в этом списке объединяется с помощью логического ИЛИ. Если это поле пусто или отсутствует, это правило соответствует всем портам (трафик не ограничен портом). Если это поле присутствует и содержит по крайней мере один элемент, то это правило разрешает трафик только в том случае, если трафик соответствует по крайней мере одному порту в списке.
NetworkPolicyPort описывает порт для разрешения трафика
-
egress.ports.port (IntOrString)
Порт на заданном протоколе. Это может быть числовой или именованный порт на узле. Если это поле не указано, это соответствует всем именам и номерам портов. Если присутствует, только трафик на указанном протоколе И порте будет соответствовать.
IntOrString — тип, который может содержать int32 или строку. При использовании в JSON или YAML маршаллировании и расмаршаллировании он производит или потребляет внутренний тип. Это позволяет, например, иметь поле JSON, которое может принимать имя или число.
-
egress.ports.endPort (int32)
Если установлено, указывает, что диапазон портов от port до endPort включительно должен быть разрешен политикой. Это поле нельзя определить, если поле port не определено или если поле port определено как именованный (строковый) порт. endPort должен быть равен или больше port. Эта функция находится на стадии бета-тестирования и включена по умолчанию. Можно отключить её, используя Feature Gate "NetworkPolicyEndPort".
-
egress.ports.protocol (string)
Протокол (TCP, UDP или SCTP), которому должен соответствовать трафик. Если не указано, это поле по умолчанию равно TCP.
-
-
NetworkPolicyStatus
NetworkPolicyStatus описывает текущее состояние NetworkPolicy.
-
conditions ([]Condition)
Стратегия исправления: слияние по ключу
typeКарта: уникальные значения по ключу type будут сохранены при слиянии
Conditions содержит массив metav1.Condition, описывающий состояние NetworkPolicy. Текущее состояние сервиса
Condition содержит детали одного аспекта текущего состояния этого ресурса API.
-
conditions.lastTransitionTime (Time), обязательно
lastTransitionTime — это последний момент времени, когда условие перешло из одного состояния в другое. Это должно быть время, когда изменилось основное условие. Если это неизвестно, то можно использовать время изменения поля API.
Time — это оболочка вокруг time.Time, которая поддерживает правильную сериализацию в YAML и JSON. Оболочки предоставляются для многих фабричных методов, которые предлагает пакет time.
-
conditions.message (строка), обязательно
message — это читаемое человеком сообщение, указывающее детали о переходе. Оно может быть пустой строкой.
-
conditions.reason (строка), обязательно
reason содержит программный идентификатор, указывающий причину последнего перехода условия. Производители конкретных типов условий могут определять ожидаемые значения и их смысл для этого поля, а также то, считаются ли значения гарантированным API. Значение должно быть строкой в формате CamelCase. Это поле не должно быть пустым.
-
conditions.status (строка), обязательно
статус условия, один из True, False, Unknown.
-
conditions.type (строка), обязательно
тип условия в CamelCase или в foo.example.com/CamelCase.
-
conditions.observedGeneration (int64)
observedGeneration представляет .metadata.generation, на основе которого было установлено условие. Например, если .metadata.generation в настоящее время равно 12, а .status.conditions[x].observedGeneration равно 9, условие устарело по отношению к текущему состоянию экземпляра.
-
NetworkPolicyList
NetworkPolicyList — это список объектов NetworkPolicy.
-
apiVersion: networking.k8s.io/v1
-
kind: NetworkPolicyList
-
metadata (ListMeta)
Стандартные метаданные списка. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-
items ([]NetworkPolicy), обязательно
Items — это список объектов схемы.
© 2022 The Kubernetes Authors | Documentation Distributed under CC BY 4.0
Copyright © 2022 The Linux Foundation ®. All rights reserved.
https://v1-24.docs.kubernetes.io/docs/reference/kubernetes-api/policy-resources/network-policy-v1/