日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Sidecar CRD說明

Sidecar CRD描述被附加到工作負載上的Sidecar代理的配置,由Sidecar代理去調制工作負載的入站和出站通信。本文介紹Sidecar的功能、注意事項、配置示例和字段說明。

Sidecar介紹

Sidecar CRD定義Sidecar代理的配置,該代理中介了與其連接的工作負載實例的入站和出站通信。默認情況下,Istio將使用必要的配置對網格中的所有Sidecar代理進行編程,使其可以訪問到網格中的每個工作負載實例,并在與工作負載關聯的所有端口上接收流量。Sidecar配置提供了一種微調方式,去控制代理在從工作負載接收流量和將流量轉發到工作負載時支持的端口和協議。此外,Sidecar還可以限制代理在轉發來自工作負載的出站流量時可以訪問的服務集合。

服務網格使用命名空間來管理服務和配置。命名空間中的Sidecar配置將使用workloadSelector字段進行選擇,以應用到同一命名空間中的工作負載實例。如果沒有workloadSelector字段,Sidecar將應用到同一命名空間中的所有工作負載實例。在確定要應用于工作負載實例的Sidecar資源時,將優先選擇選中此工作負載的具有workloadSelector的Sidecar資源,而不是沒有workloadSelector的Sidecar資源(沒有workloadSelector字段的Sidecar中的配置將會被忽略而不會發生配置合并)。

注意事項

  • 每個命名空間只能存在一個沒有指定workloadSelector的Sidecar配置。該配置指定此命名空間中所有Pod的默認值。建議將命名空間范圍的Sidecar命名為default。

    • 如果在給定命名空間中存在兩個及以上不帶選擇器的Sidecar配置,則系統的行為未定義。

    • 如果兩個及以上具有工作負載選擇器的Sidecar配置選擇相同的工作負載實例,則系統的行為未定義。

  • MeshConfig根命名空間中的Sidecar配置將默認應用于所有沒有Sidecar配置的命名空間。此全局默認Sidecar配置不應具有任何工作負載選擇器。

  • Sidecar不適用于網關,即使網關是Istio代理。

配置示例

示例一:全局默認的Sidecar配置

以下示例在根名稱空間istio-config中聲明了一個全局默認的Sidecar配置。該配置將所有命名空間中的Sidecar配置為僅允許出口流量發往同一命名空間中的其他工作負載或者istio-system命名空間中的服務。

apiVersion: networking.istio.io/v1beta1
kind: Sidecar
metadata:
  name: default
  namespace: istio-config
spec:
  egress:
  - hosts:
    - "./*"
    - "istio-system/*"

示例二:prod-us1命名空間中聲明Sidecar配置,覆蓋全局默認配置

以下示例在prod-us1命名空間中聲明了一個Sidecar配置,覆蓋示例一定義的全局默認配置,并將所在命名空間中的Sidecar配置為允許出口流量發往prod-us1prod-apisistio-system命名空間中的服務。

apiVersion: networking.istio.io/v1beta1
kind: Sidecar
metadata:
  name: default
  namespace: prod-us1
spec:
  egress:
  - hosts:
    - "prod-us1/*"
    - "prod-apis/*"
    - "istio-system/*"

示例三:為標簽為app: ratings的所有Pod聲明Sidecar配置

以下示例在prod-us1命名空間中為標簽為app: ratings的所有Pod聲明了一個Sidecar配置,這些Pod屬于ratings.prod-us1服務。該工作負載在端口9080上接收入站HTTP流量,然后將流量轉發到偵聽Unix域套接字的工作負載實例。在出口方向上,除了istio-system命名空間外,Sidecar代理僅代理發往到prod-us1命名空間中端口9080的HTTP流量。

展開查看Sidecar YAML

apiVersion: networking.istio.io/v1beta1
kind: Sidecar
metadata:
  name: ratings
  namespace: prod-us1
spec:
  workloadSelector:
    labels:
      app: ratings
  ingress:
  - port:
      number: 9080
      protocol: HTTP
      name: somename
    defaultEndpoint: unix:///var/run/someuds.sock
  egress:
  - port:
      number: 9080
      protocol: HTTP
      name: egresshttp
    hosts:
    - "prod-us1/*"
  - hosts:
    - "istio-system/*"

示例四:為命名空間中包含app:productpage標簽的所有productpage.prod-us1服務的Pod聲明Sidecar配置

如果工作負載在部署時沒有使用基于IPTables的流量捕獲,則配置工作負載代理的端口的唯一方法是Sidecar配置。

以下示例為prod-us1命名空間中包含標簽app:productpage的所有productpage.prod-us1服務的Pod聲明了Sidecar配置。假設這些Pod沒有使用IPtables規則(即istio-init容器),并且代理元數據ISTIO_META_INTERCEPTION_MODE設置為NONE,則以下示例允許這些Pod在端口9080上接收HTTP流量(包裝在Istio雙向TLS中),并將其轉發到監聽127.0.0.1:8080的應用程序。以下示例還允許應用程序與127.0.0.1:3306上的后端MySQL數據庫通信,然后將其代理到托管在mysql.foo.com:3306上的外部MySQL服務。

展開查看Sidecar YAML

apiVersion: networking.istio.io/v1beta1
kind: Sidecar
metadata:
  name: no-ip-tables
  namespace: prod-us1
spec:
  workloadSelector:
    labels:
      app: productpage
  ingress:
  - port:
      number: 9080 # binds to proxy_instance_ip:9080 (0.0.0.0:9080, if no unicast IP is available for the instance)
      protocol: HTTP
      name: somename
    defaultEndpoint: 127.0.0.1:8080
    captureMode: NONE # not needed if metadata is set for entire proxy
  egress:
  - port:
      number: 3306
      protocol: MYSQL
      name: egressmysql
    captureMode: NONE # not needed if metadata is set for entire proxy
    bind: 127.0.0.1
    hosts:
    - "*/mysql.foo.com"

展開查看ServiceEntry YAML

該YAML用于路由到mysql.foo.com:3306。

apiVersion: networking.istio.io/v1beta1
kind: ServiceEntry
metadata:
  name: external-svc-mysql
  namespace: ns1
spec:
  hosts:
  - mysql.foo.com
  ports:
  - number: 3306
    name: mysql
    protocol: MYSQL
  location: MESH_EXTERNAL
  resolution: DNS

字段說明

Sidecar

Sidecar描述被附加到工作負載上的Sidecar代理的配置,由Sidecar代理去調制工作負載的入站和出站通信。

字段

類型

是否必選

說明

workloadSelector

WorkloadSelector

用于選擇哪些Pod適用于此Sidecar配置的條件。如果省略,Sidecar配置將應用于同一命名空間中的所有工作負載實例。

ingress

IstioIngressListener[]

用于指定代理處理其關聯的工作負載入站流量時的配置。

  • 如果省略,服務網格將根據從編排平臺獲取的有關工作負載的信息(例如暴露的端口、服務等)自動配置Sidecar。

  • 如果指定,當且僅當工作負載實例與服務關聯時才配置入站端口。

egress

IstioEgressListener[]

用于指定代理處理其關聯的工作負載出站流量時的配置。如果未指定,則繼承系統從命名空間范圍或全局范圍檢測到的默認Sidecar。

outboundTrafficPolicy

OutboundTrafficPolicy

外部流量策略配置。如果您的應用程序使用了一個或多個未注冊的外部服務,則將策略設置為ALLOW_ANY會導致Sidecar將應用程序發起的任何未知流量路由到其請求的目標。如果未指定,則繼承系統從命名空間范圍或全局范圍檢測到的默認Sidecar。

IstioIngressListener

IstioIngressListener指定附加到工作負載實例的Sidecar代理上的入站流量監聽器的屬性。

字段

類型

是否必選

說明

port

Port

與監聽器關聯的端口。

bind

string

監聽器應綁定的IP地址(IPv4或IPv6)。在入口監聽器的綁定字段中不允許使用Unix域套接字地址。如果省略,服務網格將根據導入的服務和應用此配置的工作負載自動配置默認值。

captureMode

CaptureMode

指定如何捕獲(或不捕獲)到監聽器的流量。

defaultEndpoint

string

流量應轉發到的IP端點或Unix域套接字。此配置可用于將到達Sidecar上IP:Port的流量重定向到localhost:Port或應用工作負載正在監聽的Unix域套接字。不支持任意IP。格式如下:

  • 127.0.0.1:PORT

  • [::1]:PORT(轉發到本地)

  • 0.0.0.0:PORT

  • [::]:PORT(轉發到實例IP)

  • unix:///path/to/socket(轉發到Unix域套接字)

tls

ServerTLSSettings

一組與TLS相關的選項。這些選項將啟用Sidecar對于來自網格外部的請求的TLS終止。僅支持SIMPLE和MUTUAL TLS模式。

IstioEgressListener

IstioEgressListener指定附加到工作負載實例的Sidecar代理上的出站流量監聽器的屬性。

字段

類型

是否必選

說明

port

Port

與監聽器關聯的端口。如果使用Unix域套接字,請使用0作為端口號,并使用有效協議。如果指定了端口,將使用該端口作為導入主機關聯的默認目標端口。如果省略端口,Istio將根據導入的主機推斷監聽器端口。

當指定多個出口監聽器,其中存在監聽器具有特定端口,而其他監聽器沒有端口時,暴露在監聽器端口上的主機將基于具有最具體端口的監聽器。

bind

string

監聽器應綁定的IP地址(IPv4或IPv6)。如果bind不為空,則必須指定port字段。格式如下:

  • IPv4或IPv6地址格式

  • unix:///path/to/uds

  • unix://@foobar(Linux抽象命名空間)。

如果省略,Istio將根據導入的服務、應用此配置的工作負載實例和captureMode自動配置默認值。如果captureModeNONE,則bind將默認為127.0.0.1。

captureMode

CaptureMode

當綁定地址是IP時,captureMode選項指定如何捕獲(或不捕獲)到監聽器的流量。對于Unix域套接字綁定,captureMode必須為DEFAULTNONE。

hosts

string[]

監聽器暴露的服務主機,格式為namespace/dnsName。指定命名空間中dnsName匹配的服務將被暴露。相應的服務可以是服務注冊表中的服務或使用ServiceEntry或VirtualService聲明的服務。您也可以使用同一命名空間中關聯到此Pod的DestinationRule。

  • namespace可以設置為*.~,分別代表任何、當前或無命名空間。

  • dnsName應使用FQDN格式指定,可在最左側的部分中包含通配符(例如prod/*.example.com)。將dnsName設置為*可以從指定的命名空間選擇所有服務(例如prod/*)。

示例如下:

  • */foo.example.com表示從任何可用的命名空間中選擇服務。

  • ./foo.example.com表示僅從Sidecar所在的命名空間中選擇服務。

  • 如果主機設置為*/*,則Istio將配置Sidecar以能夠到達網格中導出到Sidecar的命名空間的每個服務。

  • ~/*可用于僅接收流量并響應但不進行自己的出站連接的Sidecar的配置。

只能引用導出到Sidecar命名空間(例如exportTo值為*)的服務和配置文件。私有配置(例如exportTo設置為.)將不可用。關于exportTo字段的詳細說明,請參見Virtual Service、Destination RuleService Entry

WorkloadSelector

WorkloadSelector指定是否能將Gateway、Sidecar、EnvoyFilter、ServiceEntry或DestinationRule配置應用于代理的條件。匹配條件包括與代理相關的元數據、工作負載實例信息(例如附加到Pod的標簽)或代理在初始握手期間向Istio提供的任何其他信息。如果指定了多個條件,則所有條件都需要匹配才能選擇工作負載實例。僅支持基于標簽的選擇機制。

字段

類型

是否必選

說明

labels

map<string, string>

一個或多個標簽,指示應在其上應用配置的一組特定Pod。標簽搜索的范圍僅限于資源所在的命名空間。

OutboundTrafficPolicy

OutboundTrafficPolicy設置Sidecar代理處理應用程序的出站流量的默認行為。如果應用程序使用了未注冊的外部服務,則將策略設置為ALLOW_ANY會導致Sidecar將應用程序發起的任何未知流量路由到其請求的目標。建議您使用ServiceEntry配置顯式聲明任何外部依賴項,而不使用ALLOW_ANY,以便可以監控對這些服務的流量。

字段

類型

是否必選

說明

mode

string

對外部服務的訪問策略。取值說明如下:

  • REGISTRY_ONLY:出站流量只允許服務注冊表中定義的服務以及通過ServiceEntry配置定義的服務。

  • ALLOW_ANY:如果目標端口沒有服務或ServiceEntry配置,將允許到未知目標的出站流量。

CaptureMode

CaptureMode描述如何捕獲傳入監聽器的流量。僅當監聽器綁定到IP時適用。

字段

說明

DEFAULT

環境定義的默認捕獲模式。

IPTABLES

使用IPtables重定向捕獲流量。

NONE

不捕獲流量。在出口監聽器中使用時,應用程序必須明確與監聽器端口或Unix域套接字通信。在入口監聽器中使用時,需確保主機上沒有其他進程使用監聽器端口。