自定义授权服务 修改自定义授权服务 1. 从控制台 选择 网格安全中心 > 自定义授权服务菜单,默认会展示当前定义的所有外部授权服务。 2. 选择要编辑的服务编辑即可。 删除自定义授权服务 1. 从控制台 选择 网格安全中心 > 自定义授权服务菜单,默认会展示当前定义的所有外部授权服务。 2. 选择要编辑的服务删除即可。 自定义授权服务使用示例 创建测试命名空间 kubectl create ns foo 打开sidecar自动注入: kubectl label ns foo istioinjectionenabled 部署sleep和httpbin应用 apiVersion: v1 kind: ServiceAccount metadata: name: sleep apiVersion: v1 kind: Service metadata: name: sleep labels: app: sleep service: sleep spec: ports: port: 80 name: http selector: app: sleep apiVersion: apps/v1 kind: Deployment metadata: name: sleep spec: replicas: 1 selector: matchLabels: app: sleep template: metadata: labels: app: sleep spec: terminationGracePeriodSeconds: 0 serviceAccountName: sleep containers: name: sleep image: registryvpccrshuadong1.cnspinternal.ctyun.cn/library/curl command: ["/bin/sleep", "infinity"] imagePullPolicy: IfNotPresent volumeMounts: mountPath: /etc/sleep/tls name: secretvolume volumes: name: secretvolume secret: secretName: sleepsecret optional: true 部署外部授权服务 apiVersion: v1 kind: Service metadata: name: extauthz labels: app: extauthz spec: ports: name: http port: 8000 targetPort: 8000 name: grpc port: 9000 targetPort: 9000 selector: app: extauthz apiVersion: apps/v1 kind: Deployment metadata: name: extauthz spec: replicas: 1 selector: matchLabels: app: extauthz template: metadata: labels: app: extauthz spec: containers: image: registryvpccrshuadong1.cnspinternal.ctyun.cn/library/extauthz:1.16.2 imagePullPolicy: IfNotPresent name: extauthz ports: containerPort: 8000 containerPort: 9000 apiVersion: v1 kind: ServiceAccount metadata: name: httpbin apiVersion: v1 kind: Service metadata: name: httpbin labels: app: httpbin service: httpbin spec: ports: name: http port: 8000 targetPort: 80 selector: app: httpbin apiVersion: apps/v1 kind: Deployment metadata: name: httpbin spec: replicas: 1 selector: matchLabels: app: httpbin version: v1 template: metadata: labels: app: httpbin version: v1 spec: serviceAccountName: httpbin containers: image: registryvpccrshuadong1.cnspinternal.ctyun.cn/library/httpbin imagePullPolicy: IfNotPresent name: httpbin ports: containerPort: 80 部署完成后,在foo命名空间下看到3个服务。 不使用授权策略的情况下,验证从sleep应用访问httpbin用没有被拦截(返回状态码200): kubectl exec "$(kubectl get pod l appsleep n foo o jsonpath{.items..metadata.name})" c sleep n foo curl s o /dev/null w "%{httpcode}n" 200 查看外部授权服务已经启动,HTTP和gRPC授权服务分别监听8000和9000端口: kubectl logs "$(kubectl get pod l appextauthz n foo o jsonpath{.items..metadata.name})" n foo c extauthz 2023/08/14 11:26:54 Starting HTTP server at [::]:8000 2023/08/14 11:26:54 Starting gRPC server at [::]:9000