nginx 限制直接访问角聊天机器人应用程序

ulydmbyx  于 7个月前  发布在  Nginx
关注(0)|答案(1)|浏览(90)

我在Azure Kubernetes集群的Nginx pod上运行了一个Angular主应用,应用内有一个iframe。当我们单击iframe时,它会打开一个单独的聊天机器人Angular应用,该应用正在另一个Nginx pod上运行。如何限制聊天机器人Angular应用的访问权限,使用户只能通过主应用访问聊天机器人应用,而不能通过聊天机器人的URL?
从DevOps的Angular 来看,我已经尝试过:1] K8s服务通信:-从父angular pod,我们可以使用URL连接到angular应用程序,如:- chatbot-svc-name.chatbot-namespace-name.svc.cluster.local:8082
我还编写了ingressroute(traefik)来路由流量:- Host(chatbot-svc-name.chatbot-namespace-name.svc.cluster.local)&& PathPrefix(/chatbot-client
但我无法在家长应用程序中访问聊天机器人应用程序。
2]尝试以下网络策略:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: deny-external-access
  namespace: chatbot-ns
spec:
  podSelector:
    matchLabels:
      app: chatbot-client
  ingress:
  - from:
    - namespaceSelector:
         matchLabels:
            project: main-app
      podSelector:
         matchLabels:
            app: main-client

字符串
但是就像k8s服务通信一样,当我试图使用iframe在浏览器中打开时,它在主应用程序中不起作用。
限制聊天机器人Angular应用程序的访问权限,使用户只能通过主应用程序访问聊天机器人应用程序,而不能通过聊天机器人的URL

nwsw7zdq

nwsw7zdq1#

为了限制对聊天机器人Angular应用程序的访问,使用户只能通过主应用程序而不是通过聊天机器人的URL访问它,您可以创建一个Kubernetes服务来将聊天机器人Angular应用程序暴露给主应用程序。

kubectl create service nodeport --name chatbot-svc chatbot-ns --tcp=8082:8082

字符串
这将在chatbot-ns命名空间中创建一个名为chatbot-svc的服务。该服务将把聊天机器人Angular应用上的端口8082暴露给服务节点上的端口8082。结合上述服务和您创建的网络策略,Kubernetes服务将把聊天机器人Angular应用暴露给主应用,网络策略将限制对聊天机器人Angular应用程序的访问到主应用程序。您也可以使用创建网络策略。

kubectl create networkpolicy --name restrict-access-chatbot chatbot-ns --selector app=chatbot-client --ingress podSelector=app=main-client


所以你们要做三件事-
1.为聊天机器人Angular应用程序创建Kubernetes服务。
1.为聊天机器人Angular应用创建Kubernetes网络策略。
1.更新主应用程序以使用Kubernetes服务访问聊天机器人Angular应用程序。
配置Kubernetes服务和网络策略后,您可以使用以下URL从主应用程序访问聊天机器人Angular应用程序:

http://chatbot-svc:8082/chatbot-client

相关问题