hosts
和notHosts
ports
和notPorts
methods
和notMethods
paths
和notPath
paths:["/api/*","/admin"]
或特定的端口 ports: ["8080"]
,以此类推 。3.4 条件【九 Istio:istio安全之授权】为了指定条件,我们必须提供一个
key
字段 。key
字段是一个 Istio 属性的名称 。例如,request.headers
、source.ip
、destination.port
等等 。关于支持的属性的完整列表,请参考 授权政策条件 。条件的第二部分是
values
或 notValues
的字符串列表 。下面是一个 when
条件的片段: ...- when:- key: source.ipnotValues: ["10.0.1.1"]
四.实战:授权(访问控制)4.1 访问控制在这个实验中,我们将学习如何使用授权策略来控制工作负载之间的访问 。首先部署 Gateway:
apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata:name: gateway spec:selector:istio: ingressgatewayservers:- port:number: 80name: httpprotocol: HTTPhosts:- '*'
将上述 YAML 保存为 gateway.yaml
,并使用 kubectl apply -f gateway.yaml
部署网关 。接下来,我们将创建 Web 前端部署、服务账户、服务 和 VirtualService 。
apiVersion: v1 kind: ServiceAccount metadata:name: web-frontend --- apiVersion: apps/v1 kind: Deployment metadata:name: web-frontendlabels:app: web-frontend spec:replicas: 1selector:matchLabels:app: web-frontendtemplate:metadata:labels:app: web-frontendversion: v1spec:serviceAccountName: web-frontendcontainers:- image: gcr.io/tetratelabs/web-frontend:1.0.0imagePullPolicy: Alwaysname: webports:- containerPort: 8080env:- name: CUSTOMER_SERVICE_URLvalue: 'http://customers.default.svc.cluster.local' --- kind: Service apiVersion: v1 metadata:name: web-frontendlabels:app: web-frontend spec:selector:app: web-frontendports:- port: 80name: httptargetPort: 8080 --- apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata:name: web-frontend spec:hosts:- '*'gateways:- gatewayhttp:- route:- destination:host: web-frontend.default.svc.cluster.localport:number: 80
将上述 YAML 保存为 web-frontend.yaml
,并使用 kubectl apply -f web-frontend.yaml
创建资源 。最后,我们将部署 customers v1 服务 。
apiVersion: v1 kind: ServiceAccount metadata:name: customers-v1 --- apiVersion: apps/v1 kind: Deployment metadata:name: customers-v1labels:app: customersversion: v1 spec:replicas: 1selector:matchLabels:app: customersversion: v1template:metadata:labels:app: customersversion: v1spec:serviceAccountName: customers-v1containers:- image: gcr.io/tetratelabs/customers:1.0.0imagePullPolicy: Alwaysname: svcports:- containerPort: 3000 --- kind: Service apiVersion: v1 metadata:name: customerslabels:app: customers spec:selector:app: customersports:- port: 80name: httptargetPort: 3000 --- apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata:name: customers spec:hosts:- 'customers.default.svc.cluster.local'http:- route:- destination:host: customers.default.svc.cluster.localport:number: 80
将上述内容保存为 customers-v1.yaml
,并使用 kubectl apply -f customers-v1.yaml
创建部署和服务 。如果我们打开 GATEWAY_URL
,应该会显示带有 customers v1 服务数据的 web 前端页面 。让我们先创建一个授权策略,拒绝
default
命名空间的所有请求 。 apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata:name: deny-allnamespace: default spec:{}
经验总结扩展阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 五 Istio:使用服务网格Istio进行流量路由
- 2023年八月初十财神方位 九月二十四日财神方位
- 2023年七月十九出生叶姓男孩名字叫什么生辰八字五行查询
- 2024年七月廿九出生熊姓女孩名字生辰八字五行查询
- 不用去上班是什么梗
- 2023年农历八月十九是不是结婚吉日 今天可以迎亲吗
- 2023年农历八月二十九办婚礼好不好 这天宜结婚吗
- 2023年农历九月初一适不适合结婚
- 2023年农历九月初二结婚会幸福吗
- 2023年农历九月初三是不是结婚吉日 今天可以迎亲吗