Политика сети
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 применяется ко всем выбранным под. Несколько сетевых политик могут выбирать один и тот же набор под. В этом случае правила 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)
Список источников, которые должны иметь возможность доступа к под, выбранным для данного правила. Элементы в этом списке объединяются с помощью логической операции OR. Если это поле пусто или отсутствует, это правило соответствует всем источникам (трафик не ограничен источником). Если это поле присутствует и содержит как минимум один элемент, это правило разрешает трафик только в том случае, если трафик соответствует как минимум одному элементу в списке 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)
Список портов, которые должны быть доступны на выбранных под для данного правила. Каждый элемент в этом списке объединяется с помощью логической операции OR. Если это поле пусто или отсутствует, это правило соответствует всем портам (трафик не ограничен портом). Если это поле присутствует и содержит как минимум один элемент, это правило разрешает трафик только в том случае, если трафик соответствует как минимум одному порту в списке.
NetworkPolicyPort описывает порт для разрешения трафика
-
ingress.ports.port (IntOrString)
Порт на данном протоколе. Это может быть либо числовой, либо именованный порт в под. Если это поле не указано, оно соответствует всем именам и номерам портов. Если указано, будет сопоставлен только трафик на указанном протоколе И порте.
IntOrString — это тип, который может содержать int32 или строку. При использовании в JSON или YAML, он генерирует или потребляет внутренний тип. Это позволяет, например, иметь поле JSON, которое может принимать имя или число.
-
ingress.ports.endPort (int32)
Если задано, указывает, что диапазон портов от port до endPort включительно должен быть разрешен политикой. Это поле не может быть определено, если поле port не определено или если поле port определено как именованный (строковый) порт. endPort должен быть равен или больше port.
-
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)
Список пунктов назначения для исходящего трафика под, выбранных для данного правила. Элементы в этом списке объединяются с помощью логической операции OR. Если это поле пусто или отсутствует, это правило соответствует всем получателям (трафик не ограничен получателем). Если это поле присутствует и содержит как минимум один элемент, это правило разрешает трафик только в том случае, если трафик соответствует как минимум одному элементу в списке 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)
Список портов назначения для исходящего трафика. Каждый элемент в этом списке объединяется с помощью логической операции OR. Если это поле пусто или отсутствует, это правило соответствует всем портам (трафик не ограничен портом). Если это поле присутствует и содержит как минимум один элемент, это правило разрешает трафик только в том случае, если трафик соответствует как минимум одному порту в списке.
NetworkPolicyPort описывает порт для разрешения трафика
-
egress.ports.port (IntOrString)
Порт на данном протоколе. Это может быть либо числовой, либо именованный порт в под. Если это поле не указано, оно соответствует всем именам и номерам портов. Если указано, будет сопоставлен только трафик на указанном протоколе И порте.
IntOrString — это тип, который может содержать int32 или строку. При использовании в JSON или YAML, он генерирует или потребляет внутренний тип. Это позволяет, например, иметь поле JSON, которое может принимать имя или число.
-
egress.ports.endPort (int32)
Если задано, указывает, что диапазон портов от port до endPort включительно должен быть разрешен политикой. Это поле не может быть определено, если поле port не определено или если поле port определено как именованный (строковый) порт. endPort должен быть равен или больше port.
-
egress.ports.protocol (string)
Протокол (TCP, UDP или SCTP), которому должен соответствовать трафик. Если не указано, это поле по умолчанию равно TCP.
-
-
NetworkPolicyStatus
NetworkPolicyStatus описывает текущее состояние NetworkPolicy.
-
Условия ([]Condition)
Стратегия патчинга: слияние по ключу
typeВ карте: уникальные значения по типу ключа будут сохранены при слиянии
Условия содержат массив metav1.Condition, описывающий состояние NetworkPolicy. Текущее состояние службы
Условие содержит детали одного аспекта текущего состояния этого API-ресурса.
-
conditions.lastTransitionTime (Time), обязательно
lastTransitionTime — это последнее время, когда условие переходило из одного состояния в другое. Это должно соответствовать моменту изменения базового условия. Если это неизвестно, то можно использовать время изменения поля API.
Time — оболочка вокруг time.Time, которая поддерживает правильное маршаллирование в YAML и JSON. Оболочки предоставляются для многих из фабричных методов пакета time.
-
conditions.message (string), обязательно
message — это читаемое человеком сообщение, указывающее детали перехода. Это может быть пустая строка.
-
conditions.reason (string), обязательно
reason содержит программно-ориентированный идентификатор, указывающий причину последнего перехода условия. Производители определённых типов условий могут определить ожидаемые значения и их смысл для этого поля, а также то, являются ли они гарантированным API. Значение должно быть строкой в CamelCase. Это поле не может быть пустым.
-
conditions.status (string), обязательно
состояние условия, одно из True, False, Unknown.
-
conditions.type (string), обязательно
тип условия в CamelCase или в foo.example.com/CamelCase.
-
conditions.observedGeneration (int64)
observedGeneration представляет .metadata.generation, на основе которой было установлено условие. Например, если .metadata.generation в настоящее время составляет 12, а .status.conditions[x].observedGeneration — 9, условие устарело по отношению к текущему состоянию экземпляра.
-
СписокNetworkPolicy
СписокNetworkPolicy — это список объектов 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), обязательно
Items — это список схемных объектов.
© 2022 The Kubernetes Authors | Documentation Distributed under CC BY 4.0
Copyright © 2022 The Linux Foundation ®. All rights reserved.
https://v1-25.docs.kubernetes.io/docs/reference/kubernetes-api/policy-resources/network-policy-v1/