首页 > 解决方案 > 如何使用 SQL 为 Google 云正确设置 Gitlab CI

问题描述

我想设置 Gitlab CI 来自动测试我的 Node.js 项目并将其部署到谷歌云 kubernetes 引擎。我还希望能够连接到我的谷歌云 sql 实例。

我目前正在使用 Gitlab auto devops。我已经在 gitlab 中连接了我的 kubernetes 集群并安装了 Helm、Ingress、Cert-Manager 和 Prometheus。

经过一番研究,我发现,我必须部署一个 Cloud SQL 代理才能从我的 Node.js 服务器访问 sql 实例。

我的 Dockerfile 配置:

FROM node:10.16.3

# Intsall Google Cloud SQL Proxy
RUN wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
RUN chmod +x cloud_sql_proxy
RUN ./cloud_sql_proxy -instances=myProject:zone:name=tcp:3306

# Node
WORKDIR /usr/src/app

ARG NODE_ENV
ENV NODE_ENV $NODE_ENV

COPY package.json /usr/src/app/
RUN npm config set "@fortawesome:registry" https://npm.fontawesome.com/
RUN npm config set "//npm.fontawesome.com/:_authToken" KEY
RUN npm install

COPY . /usr/src/app 

EXPOSE 5000
CMD [ "npm", "start" ]

但这在构建时失败了:

2019/10/13 11:48:38 current FDs rlimit set to 1048576, wanted limit is 8500. Nothing to do here.
2019/10/13 11:48:40 error checking scopes: *url.Error Get http://x.x.x.x/computeMetadata/v1/instance/service-accounts/default/scopes: dial tcp x.x.x.x:80: i/o timeout | Get http://x.x.x.x/computeMetadata/v1/instance/service-accounts/default/scopes: dial tcp x.x.x.x:80: i/o timeout
The command '/bin/sh -c ./cloud_sql_proxy -instances=myProject:zone:name=tcp:3306' returned a non-zero code: 1

为什么会出现这个错误?

我是否必须编写自己的 .gitlab-ci.yml 配置来处理这种常见情况?

如果是这样,这个用例是否有任何模板,因为我发现的只是使用 docker 手动将应用程序部署到使用 SQL 的 GKE?

标签: kubernetesgoogle-kubernetes-enginegitlab-ci

解决方案


推荐阅读