将数据库驱动的Golang应用程序部署到Kubernetes上

87 阅读1分钟

在这个例子中,我们将在Kubernetes上部署一个非常简单的数据库驱动的Golang RESTful应用程序。这里重要的一点是,数据库不是一个Pod。它在云中,所以我们将通过互联网依靠秘密来访问它。该应用程序将像往常一样运行自己的HTTP服务器,并为进来的请求提供服务。

结构

├── Makefile

文件

deployment.yaml

apiVersion: apps/v1

service.yaml

apiVersion: v1

secret.yaml

你不应该把它放在你的仓库里,因为它包含秘密。

apiVersion: v1

Docker文件

#

main.go

package main

制作文件

build,runlocal-test 命令是针对你的本地环境的。你可以用它们在本地环境中测试你的应用程序。

## Build application binary.

.env.dist

HTTP_PORT=8888

测试

本地主机

$ make run

现在让我们构建并推送我们的Docker镜像到Docker Hub。这个镜像将在我们运行部署时被拉出,所以它很重要。

$ make push

Ngrok

Ngrok是一个免费的隧道服务。我们将使用它把我们的本地数据库服务器暴露在互联网上,这样我们就可以通过互联网访问它。进入ngrok,注册并下载它。

我的MySQL数据库服务器是一个docker容器,看起来像下面这样。它也可以是你的AWS服务。

$ docker ps

用ngrok把它暴露在互联网上。

$ ./ngrok authtoken {your-token-goes-here}
$ ./ngrok tcp 3306

正如你在下面看到的,域名和端口正在我们的k8s YAML文件中使用。

部署

$ make deploy

让我们检查一下pod中的环境变量。

$ kubectl exec sport-deployment-66944b6d95-plswg -- printenv

现在让我们测试一下应用程序是否运行正常。这意味着它成功地连接到了数据库。

$ make k8s-test