在这个例子中,我们将在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,run 和local-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