docker - 通过docker、kubernetes和google云平台部署应用的步骤
问题描述
我正在尝试将应用程序部署到 Google Cloud Platform。我的后端和前端在单独的 docker 容器中运行,每个项目都有自己的 Docker-Compose 和 Dockerfile ,我正在为我的 Postgres 数据库使用容器。我将容器部署到 Dockerhub,并创建了 Kubernetes 服务和部署。(使用 Kubernetes Kompose:所以我首先将 docker-compose 转换为 deployments.yaml 文件)
现在我想将我的应用程序部署到 Google Cloud Platform
我创建了一个集群
我为前端和后端创建了两个单独的部署
kubectl run backendapp --image=docker.io/[dockerhub username]/backendapp --port=9000 kubectl run frontendapp --image=docker.io/[dockerhub username]/frontendapp --port=3000
当我通过外部 IP 地址访问我的前端时,它似乎工作(有一个接口)并且无法通过外部 IP 访问我的后端。
所以我的问题是:
- 在运行我的 Kubernetes 服务并将我的应用程序 docker 化以便在 Google Cloud Platform 上部署它之后,应遵循哪些正确步骤?
- 部署后如何链接我的前端和后端服务?
- 我也应该在 Google Cloud Platform 中为我的数据库创建部署吗?
这是我的后端服务的描述
> Name: backendapp Namespace: default
> Labels: run=backendapp Annotations:
> <none> Selector: run=backendapp Type:
> LoadBalancer IP: 10.111.73.214 Port:
> <unset> 9000/TCP TargetPort: 9000/TCP NodePort:
> <unset> 32449/TCP Endpoints: Session Affinity:
> None External Traffic Policy: Cluster Events:
> <none>
这是我的前端服务的描述
Name: frontendapp
Namespace: default
Labels: run=frontendapp
Annotations: <none>
Selector: run=frontendapp
Type: LoadBalancer
IP: 10.110.133.172
Port: <unset> 3000/TCP
TargetPort: 3000/TCP
NodePort: <unset> 30016/TCP
Endpoints:
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
我可以通过以下方式访问我的前端服务
clusterIp:Nodeport 但我无法在后端这样做
解决方案
在运行我的 Kubernetes 服务并将我的应用程序 docker 化以便在 Google Cloud Platform 上部署它之后,应遵循哪些正确步骤?
在 GCP 中创建集群后,您需要为前端和后端应用程序创建部署和服务。您可以阅读 GKE 文档以了解如何创建部署和服务
部署后如何链接我的前端和后端服务?
Kubernetes 中的 POD 使用服务进行通信,它们也使用服务将自己暴露给外部世界。在 GCP 中,您可以使用 LoadBalancer 来共享 HTTP/HTTPS 流量和 TCP 流量。有关它的更多信息,您可以查看 Codelab Kubernetes、GKE 和负载平衡示例。
我也应该在 Google Cloud Platform 中为我的数据库创建部署吗?
如果要在 Kubernetes 中定位数据库,则需要为其添加部署和服务。如果不这样做,则需要配置从应用程序到 Kubernetes 外部数据库的访问权限。
推荐阅读
- javascript - 按自定义属性搜索 amazon cognito 用户
- node.js - Sequelize 查询返回 Promise。如何等待查询返回结果?
- php - str_replace,给我错误的结果仅当其中有数字时
- regex - 用正则表达式忽略某些字符
- python - Python 使用命名空间解析 XML 文件
- javascript - Node.js:具有顺序+异步输入/输出的并行处理
- c# - 如何从控制器类更新 MainWindow 中的标签?
- hadoop - hadoop - 伪分布式模式下的多个数据节点配置
- apache-kafka - 我们可以在 Kafka 中进行服务器端过滤吗?
- php - 有效载荷完整性加密对 API 重要吗?