社区首页 >问答首页 >库伯奈特斯内部服务Axios NuxtJS

库伯奈特斯内部服务Axios NuxtJS
EN

Stack Overflow用户
提问于 2021-07-28 12:41:36
回答 1查看 512关注 0票数 0

我正在努力学习Kubernetes,目前我正在尝试部署我开发的测试应用程序。

我有3个集装箱,每个集装箱都在各自的吊舱上运行。

  • 前端应用程序(使用Nuxtjs)
  • 后端API (Nodejs)
  • MongoDB

对于前端容器,我配置了一个运行良好的外部服务(LoadBalancer)。我可以从我的浏览器访问应用程序,没有任何问题。

对于后端API和MongoDB,我为每个用户配置了一个内部服务。后端API和MongoDB之间的通信工作正常。我遇到的问题是如何与后端API进行前端通信。

我在Nuxtjs中使用Axios组件,并在nuxtjs.config.js文件中将Axios设置为http://service-name:portnumber/。但这不起作用,我猜是因为url是从客户机(浏览器)端调用的,而不是从服务器调用的。如果我将后端API的服务类型更改为LoadBalancer,并配置一个IP地址和端口号,并将其用作我的axios,那么它就能工作了。然而,我希望将后端API服务保持在内部。是否可以从服务器端而不是客户端调用Axios基URL。

如有任何帮助/指导,将不胜感激。

这是我的前端YML文件

代码语言:javascript
代码运行次数:0
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: mhov-ipp
  name: mhov-ipp
  namespace: mhov
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mhov-ipp
  template:
    metadata:
      labels:
        app: mhov-ipp
    spec:
      containers:
        - image: mhov-ipp:1.1
          name: mhov-ipp
          ports:
            - containerPort: 8080
          env:
            - name: NODE_ENV
              value: "development"
            - name: PORT
              value: "8080"
            - name: TITLE
              value: "MHOV - IPP - K8s"
            - name: API_URL
              value: "http://mhov-api-service:4000/"
---
apiVersion: v1
kind: Service
metadata:
  name: mhov-ipp-service
spec:
  selector:
    app: mhov-ipp
  type: LoadBalancer
  ports:
    - protocol: TCP
      port: 8082
      targetPort: 8080
      nodePort: 30600

这是后端的YML文件

代码语言:javascript
代码运行次数:0
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mhov-api-depl
  labels:
    app: mhov-api
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mhov-api
  template:
    metadata:
      labels:
        app: mhov-api
    spec:
      containers:
        - name: mhov-api
          image: mhov-api:1.0
          ports:
            - containerPort: 4000
          env:
            - name: mongoURI
              valueFrom:
                configMapKeyRef:
                  name: mhov-configmap
                  key: database_url
---
apiVersion: v1
kind: Service
metadata:
  name: mhov-api-service
spec:
  selector:
    app: mhov-api
  ports:
    - protocol: TCP
      port: 4000
      targetPort: 4000
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-29 00:34:38

什么是入口以及如何安装它

你的猜测是正确的。前端运行在浏览器中,浏览器“不知道”后端在哪里,以及如何触及它。你在这里有两个选择:

  • 正如您在集群之外公开后端时所做的那样
  • 使用高级解决方案,如ingress

这将推动您的前进,并将需要更改您的应用程序的一些配置,如URL,因为应用程序将暴露在“互联网”(不完全,但您可以使用云)。

什么是ingress

Ingress是api对象,它将HTTP和HTTPS路由从集群外部公开到集群内的服务。流量路由由入侵资源上定义的规则控制。

最常见的选项是nginx ingress --他们的页面NGINX进位控制器

安装取决于集群类型,但是我建议使用helm。(如果您不熟悉helm,它是一个使用图表安装和安装应用程序的模板引擎。已经创建了相当多的图表,例如进气口-

例如,如果您使用的是minikube,那么它已经内置了nginx-ingress,并且可以作为附件启用。

如何使用入口公开服务

一旦你有了工作入口,它就是为它创建规则的类型。

你需要的是有入口,这将能够沟通与前端和后端以及。

摘自kubernetes官方文件的例子:

代码语言:javascript
代码运行次数:0
复制
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: simple-fanout-example
spec:
  rules:
  - host: foo.bar.com
    http:
      paths:
      - path: /foo
        pathType: Prefix
        backend:
          service:
            name: service1
            port:
              number: 4200
      - path: /bar
        pathType: Prefix
        backend:
          service:
            name: service2
            port:
              number: 8080

在本例中,在不同的paths上,foo.bar.com主机名中有两个不同的服务可用,这两个服务都在集群中。不需要将它们公开到集群之外,因为通信将通过ingress定向。

实际解决方案(如何接近)

这是非常相似的配置。被修复并开始按预期工作。这是我的答案,可以安全地分享:)

正如您所看到的,OP在前端是可访问的时候也面临着同样的问题,而后端则不是。

请随意使用该答案/存储库中的任何内容。

有用的链接:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68567115

复制
相关文章
TraceRoute 查询(ping 经过 的路由)网站
查询 ip 经过了哪些路由(用来挑选国外服务器) https://tools.ipip.net/traceroute.php
卓越笔记
2023/02/18
1.4K0
TraceRoute 查询(ping 经过 的路由)网站
【微服务】微服务间通信的最佳实践
一个好的 API 架构对于有效处理微服务之间的通信很重要。不要害怕创建新的微服务,并尽可能地尝试解耦功能。例如,与其创建一个通知服务,不如尝试为电子邮件通知、SMS 通知和移动推送通知创建单独的微服务。 在这里,我假设您有一个 API 网关来管理请求、处理到负载平衡服务器的路由并限制未经授权的访问。 通讯类型 同步协议:HTTP 是一种同步协议。客户端发送请求并等待服务的响应。这与客户端代码执行无关,它可以是同步的(线程被阻塞)或异步的(线程未被阻塞,并且响应最终会到达回调)。这里的重点是协议(HTTP/H
架构师研究会
2022/03/08
1.1K0
一个类似backbone路由的纯净route ( 前端路由 客户端路由 backbone路由 )
大家用backbone、angular,可能都习惯了内置的路由,这两个框架的路由都是非常优秀的,强大而简单。 客户端(浏览器)路由原理其实比较简单,其实就是监听hash的变化。 在之前的架构探讨中,说到director.js这个路由类库不好使,那么,在这一篇,我们尝试自行实现一个简洁而且非常好使的路由类库。 原理先介绍,无非几个步骤: 建立配置表(字符串路径和函数的映射) 监听路由(onhashchange) 处理路由变化,跟配置表的路径做匹配 路径转化为正则表达式 正则exec,匹配+抽取参数 其中难点
用户1258909
2018/07/03
1.1K0
新一代传输协议QUIC——HTTP/3新在哪儿?
近期被重点研究的HTTP-over-QUIC的新协议现在已经正式改名为HTTP/3。IETF中的QUIC工作组致力于创建QUIC传输协议。QUIC是通过UDP完成的TCP替换。QUIC最初是谷歌提出并研究的一个进行一个协议,后更名为“HTTP/2-encrypted-over-UDP”协议。
用户1324186
2018/12/13
1.8K0
新一代传输协议QUIC——HTTP/3新在哪儿?
OpenEMR 日历搜索中经过身份验证的 SQL 注入
Trovent Security GmbH 在搜索中发现了一个 SQL 注入漏洞 日历模块的功能。参数“provider_id”是可注入的。 攻击者需要一个有效的用户帐户才能访问日历模块 Web应用程序。可以从数据库的所有表中读取数据。
Khan安全团队
2021/12/16
5100
Dart服务器端 mojito包 原
就像它的名字一样,Mojito主要是糖和其他成分的混合物。 Mojito故意在几个shelf包上非常薄,并专注于构建应用程序的整体体验。
南郭先生
2018/08/14
1.6K0
Blazor 中的路由和路由模板
过去的 ASP.NET Web 窗体和现代 Web 明显区别在于 Web 服务器入口是否存在路由组件。在 Web 窗体中,绝大多数 Web 终结点都是物理文件资源,直接通过其页面路径调用。
Edison.Ma
2019/08/16
8.4K0
Hadoop搭建,上传文件时出现错误,没有到主机的路由
解决方案: (1)从namenode主机ping其它slaves节点的主机名(注意是slaves节点的主机名),如果ping不通,原因可能是namenode节点的/etc/hosts 未配置主机名与IP地址的映射关系,补全主机名与IP地址的映射关系。 (2)从datanode主机ping master节点的主机名(注意也是节点的主机名),如果ping不通,原因可能是datenode节点的/etc/hosts 未配置主机名与IP地址的映射关系,补全主机名与IP地址的映射关系。 (3)查看各机器节点的防火墙是否关闭(或者设置防火墙开启,但对我们的指定端口开放,最好是关闭防火墙)
hankleo
2020/09/17
2.6K0
【译】我是如何学习任意前端框架的
每次你决定学习前端框架时,你定会反复听到这些术语(组件,路由和管理状态/状态管理)。
Jimmy_is_jimmy
2019/07/31
3.6K0
【微服务模式】MS大使模式
创建代表消费者服务或应用程序发送网络请求的辅助服务。大使服务可以被认为是与客户端位于同一位置的进程外代理。
架构师研究会
2022/09/26
3880
【微服务模式】MS大使模式
Node.js-具有示例API的基于角色的授权教程
1.从https://github.com/cornflourblue/node-role-based-authorization-api下载或克隆教程项目代码 2.通过从项目根文件夹(package.json所在的位置)中的命令行运行npm install来安装所有必需的npm软件包。 3.通过从项目根文件夹中的命令行运行npm start来启动api,您应该看到消息 Server listening on port 4000。您可以使用诸如Postman之类的应用程序直接测试api,也可以使用下面的单个页面的示例应用程序来测试它。
ccf19881030
2020/08/11
5.7K0
猫头鹰的深夜翻译:API网关的重要性
在非技术术语中,“网关或门是进入一个由墙围住的封闭空间的入口点。”同理,API网关是指位于防火墙或互联网后面 的服务的入口点。在微服务的世界中,网关坐镇于API前面,直接面向客户并进行反向代理。
眯眯眼的猫头鹰
2019/03/13
9000
猫头鹰的深夜翻译:API网关的重要性
DartVM服务器开发(第八天)--http服务端框架
Aqueduct是一个HTTP Web服务器框架,用于构建用Dart编写的REST应用程序。
rhyme_lph
2018/09/13
2.7K0
DartVM服务器开发(第八天)--http服务端框架
逆天了,你知道什么是CSRF 攻击吗?如何防范?
跨站点请求伪造 (CSRF) 攻击允许攻击者伪造请求并将其作为登录用户提交到 Web 应用程序,CSRF 利用 HTML 元素通过请求发送环境凭据(如 cookie)这一事实,甚至是跨域的。
网络技术联盟站
2023/03/13
2K0
逆天了,你知道什么是CSRF 攻击吗?如何防范?
Spring Websocket 中文文档 (spring5)
这部分参考文档包括对Servlet堆栈的支持,包括原始WebSocket交互的WebSocket消息传递,通过SockJS的WebSocket仿真,以及通过STOMP作为WebSocket上的子协议的pub-sub消息传递。
gemron的空间
2019/11/04
12.5K1
路由拦截和路由守卫
在vue中,为确保用户登录,使用路由拦截器或者路由守卫判断登录状态,并判断和处理情况。
肥晨
2023/02/16
1.5K0
Spring WebFlux 教程:如何构建一个简单的响应应式 Web 应用程序
反应式系统是采用反应式架构模式设计的系统,该模式优先考虑使用松散耦合、灵活和可扩展的组件。它们在设计时还考虑了故障解决方案,以确保即使一个系统出现故障,大部分系统仍能运行。
用户4235284
2023/10/14
1.4K0
Spring WebFlux 教程:如何构建一个简单的响应应式 Web 应用程序
kong 简明介绍「建议收藏」
kong 官方文档: https://docs.konghq.com/getting-started-guide/2.4.x/overview/ https://docs.konghq.com/enterprise/2.4.x/admin-api/#service-object
全栈程序员站长
2022/09/13
2.1K0
有类路由和无类路由的区别
有类路由只会传送网络地址,不携带子网掩码,是以A、B、C类三个默认的掩码作为参考掩码。
网络技术联盟站
2021/11/05
2K0
点击加载更多

相似问题

设计经过身份验证的路由

32

无法添加经过身份验证的路由来响应路由器管理

12

向路由添加身份验证

336

向以前的rest路由发送响应

10

如何通过isAuthenticated让经过身份验证的组件路由到受保护的路由?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档