内容已经转出,请移步以下网址:

https://viadean.notion.site

Kubernetes 上部署您的 Flask和MongoDB 应用程序

 二维码 21
文章附图

在本文中,我们将开发一个 Python Flask 应用程序,该应用程序可以与 MongoDB 数据库通信,使用 Docker 将其容器化,并将其部署在 Kubernetes 集群上。


创建应用


如果您希望在本地运行应用程序一次,请在您的机器上安装 Flask、Flask-PyMongo 和 MongoDB 服务器实例。您可以跳过此步骤,因为我们将容器化应用程序和数据库。


我们将在这里构建的应用程序是一个简单的任务应用程序,您可以在其中创建、更新和删除简单的单行任务。 这些数据将存储在 MongoDB 数据库中,这是一个开源数据库,可以存储灵活的 JSON 类文档。 默认情况下,当一个 MongoDB Server 实例在一台机器上启动时,它开始监听 27017 端口。 Flask-PyMongo 模块帮助我们桥接 Flask 和 MongoDB,并提供了一些方便的帮助器。 ObjectId 模块是用于处理 MongoDB ObjectId 的工具,它是每个文档的 _id 字段的默认值,在创建任何文档期间生成。 我们将使用 curl 命令与我们的应用程序对话,稍后我们将在我们的应用程序部署到集群上时讨论这一点。


目前,我们的工作目录 tasksapp-python 包括:


1. requirements.txt - 由 Flask 和 Flask-PyMongo 条目组成,它们将在我们构建 Docker 镜像时安装。

2. app.py - 在任何主机 (python app.py) 上运行时,可以在其中访问 http://localhost:5000/。


    在 app.py 文件中,我们首先导入所有必需的模块并创建 Flask 类(我们的应用程序)和 PyMongo 类(我们的数据库)的实例。 请注意, MONGO_URI Flask 配置变量中的主机名被定义为“mongo”而不是“localhost”。 这是因为“mongo”将是我们的数据库容器的名称,并且同一个 Docker 网络中的容器可以通过它们的名称相互通信。


    如果您希望在本地运行应用程序,请使用app.config[“MONGO_URI”] = “mongodb://localhost:27017/dev”。


    我们的应用程序由六个函数组成,这些函数由 @app.route() Python 装饰器分配 URL。 乍一看,很容易理解装饰器是在告诉我们的应用程序,每当用户通过给定的 route() 访问我们的 @app 域时,就执行底层函数。


    1. index() - 每次点击应用程序时都会显示一条欢迎消息。还显示运行我们的应用程序的机器的主机名。

    2. get_all_tasks() - 将数据库中可用的所有任务显示为字典列表。

    3. create_task() - 创建一个新任务,该任务以唯一 ID 存储在数据库中。

    4. update_task(id) - 修改任何现有任务。如果没有找到具有查询 ID 的任务,则返回相应的消息。

    5. delete_task(id) - 从数据库中删除具有查询 ID 的任务条目。如果未找到具有指定 ID 的任务,则返回适当的消息。

    6. delete_all_tasks() - 删除所有任务。返回一个空列表。


    在我们运行应用程序的最后一部分中,我们将主机参数定义为“0.0.0.0”,以使服务器公开可用,并在机器的 IP 地址上运行。


容器化应用程序

部署应用

测试应用

完整代码


阅读完整文档