kubernetes - 如何使用 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?
解决方案
推荐阅读
- sql - 如何显示与按另一列分组的 max() 相关的值
- javascript - Material ui:悬停时打开和关闭(多个)选择组件 - 不是点击
- objective-c - 重新启动 macOS Big Sur 后如何检测 USB 调制解调器
- asp.net-core - 如何使图书馆在服务器上工作?ASP.NET 核心
- c++ - 错误:没有以 NULL 作为参数调用构造函数的匹配函数?
- c# - Unity FAILURE:构建失败并出现异常
- apache-flink - 后期数据丢失的 Flink 端输出
- ruby-on-rails - 是否可以在 RoR 项目的根级别为不同的应用程序保留不同的文件夹
- mysql - MySQL查询将分隔字符串值拆分为单独的列
- wordpress - 如何修复 babel-polyfill 和 WordPress 的错误?