备考ICA----Istio实验16---HTTP流量授权

备考ICA----Istio实验16---HTTP流量授权

1. 环境准备

bash 复制代码
kubectl apply -f istio/samples/bookinfo/platform/kube/bookinfo.yaml
kubectl apply -f istio/samples/bookinfo/networking/bookinfo-gateway.yaml

访问测试

bash 复制代码
curl -I http://192.168.126.220/productpage

2. 开启mtls

mtls/mtls-default.yaml

yaml 复制代码
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
  name: default
  namespace: default
spec:
  mtls:
    mode: STRICT

部署生效

bash 复制代码
kubectl apply -f mtls/mtls-default.yaml

3. 拒绝请求

default名称空间,拒绝所有请求

yaml 复制代码
apiVersion: security.istio.io/v1
kind: AuthorizationPolicy
metadata:
  name: deny-all
  namespace: default

配置生效

bash 复制代码
kubectl apply -f mtls/allow-nothing.yaml

访问测试

bash 复制代码
curl -I http://192.168.126.220/productpage

此时访问被拒绝.返回码403

4. 允许请求

4.1 productpage允许请求

允许以get方式访问productpage

auth/productpage-viewer.yaml

yaml 复制代码
apiVersion: security.istio.io/v1
kind: AuthorizationPolicy
metadata:
  name: productpage-viewer
  namespace: default
spec:
  selector:
    matchLabels:
      app: productpage
  action: ALLOW
  rules:
  - to:
    - operation:
        methods: ["GET"]

部署生效

bash 复制代码
kubectl apply -f auth/productpage-viewer.yaml 

访问测试

4.2 details允许请求

创建details-viewer允许从productpage访问到details

bash 复制代码
kubectl get pods productpage-v1-675fc69cf-xlg4x -o yaml|grep -i serviceaccount

cluster.local 本地集群

ns/default 命名空间

sa/bookinfo-productpage sa账号

auth/details-viewer.yaml

yaml 复制代码
apiVersion: security.istio.io/v1
kind: AuthorizationPolicy
metadata:
  name: details-viewer
  namespace: default
spec:
  selector:
    matchLabels:
      app: details
  action: ALLOW
  rules:
  - from:
    - source:
        principals: ["cluster.local/ns/default/sa/bookinfo-productpage"]
    to:
    - operation:
        methods: ["GET"]

部署生效

bash 复制代码
kubectl apply  -f auth/details-viewer.yaml

浏览器再次访问

4.3 reviews允许请求

创建reviews-viewer允许从productpage访问到reviews

auth/reviews-viewer.yaml

yaml 复制代码
apiVersion: security.istio.io/v1
kind: AuthorizationPolicy
metadata:
  name: reviews-viewer
  namespace: default
spec:
  selector:
    matchLabels:
      app: reviews
  action: ALLOW
  rules:
  - from:
    - source:
        principals: ["cluster.local/ns/default/sa/bookinfo-productpage"]
    to:
    - operation:
        methods: ["GET"]

部署生效

bash 复制代码
kubectl apply -f auth/reviews-viewer.yaml

此时reviews已经可以正常显示,但ratings还是有问题.

4.4 ratings允许请求

创建ratings-viewer允许从productpage访问到ratings

auth/ratings-viewer.yaml

yaml 复制代码
apiVersion: security.istio.io/v1
kind: AuthorizationPolicy
metadata:
  name: ratings-viewer
  namespace: default
spec:
  selector:
    matchLabels:
      app: ratings
  action: ALLOW
  rules:
  - from:
    - source:
        principals: ["cluster.local/ns/default/sa/bookinfo-reviews"]
    to:
    - operation:
        methods: ["GET"]

部署生效

bash 复制代码
kubectl apply -f auth/ratings-viewer.yaml

再次访问,现在所有页面都能正常展示了

至此备考ICA----Istio实验16---HTTP流量授权实验完成

相关推荐
Zfox_2 小时前
CANN Catlass 算子模板库深度解析:高性能 GEMM 融合计算、Cube Unit Tiling 机制与编程范式实践
docker·云原生·容器·eureka
农民工老王2 小时前
K8s 1.31 私有化部署实战:从 Calico 崩溃到 NFS 挂载失败的排坑全记录
云原生·kubernetes
灰子学技术2 小时前
istio从0到1:如何解决分布式配置同步问题
分布式·云原生·istio
小马爱打代码3 小时前
ZooKeeper:入门实战
分布式·zookeeper·云原生
logocode_li4 小时前
OCI/CRI 双标准下:从 dockerd 到 containerd 的 K8s 运行时迭代史
docker·云原生·容器·k8s
天才奇男子13 小时前
HAProxy高级功能全解析
linux·运维·服务器·微服务·云原生
人间打气筒(Ada)19 小时前
k8s:CNI网络插件flannel与calico
linux·云原生·容器·kubernetes·云计算·k8s
老百姓懂点AI19 小时前
[微服务] Istio流量治理:智能体来了(西南总部)AI调度官的熔断策略与AI agent指挥官的混沌工程
人工智能·微服务·istio
江畔何人初20 小时前
pod的内部结构
linux·运维·云原生·容器·kubernetes
腾讯云开发者1 天前
言出法随 -- Chaterm如何通过ASR精准操作K8S
云原生·容器·kubernetes