我正在尝试将 cloudsql 代理部署为 sidecar 容器,如下所示:
- name: cloudsql-proxy
image: gcr.io/cloudsql-docker/gce-proxy:1.11
command: ["/cloud_sql_proxy",
"-instances=${CLOUDSQL_INSTANCE}=tcp:5432",
"-credential_file=/secrets/cloudsql/google_application_credentials.json"]
env:
- name: CLOUDSQL_INSTANCE
valueFrom:
secretKeyRef:
name: persistence-cloudsql-instance-creds
key: instance_name
volumeMounts:
- name: my-secrets-volume
mountPath: /secrets/cloudsql
readOnly: true
Run Code Online (Sandbox Code Playgroud)
但是当我部署这个时,我在日志中收到以下错误:
2019/06/20 13:42:38 couldn't connect to "${CLOUDSQL_INSTANCE}": googleapi: Error 400: Missing parameter: project., required
Run Code Online (Sandbox Code Playgroud)
如何在 kubernetes 容器内运行的命令中使用环境变量?
我正在尝试使用cloud sql代理连接到2个不同的云sql实例...
在文档中,我找到了一条关于Use -instances parameter. For multiple instances, use a comma-separated list.但不确定如何制作这个外观的线.https://cloud.google.com/sql/docs/sql-proxy.我正在使用Google容器引擎,并且使用单个CloudSQL实例它可以很好地运行:
- name: cloudsql-proxy
image: b.gcr.io/cloudsql-docker/gce-proxy:1.05
command: ["/cloud_sql_proxy", "--dir=/cloudsql",
"-instances=starchup-147119:us-central1:first-db=tcp:3306",
"-credential_file=/secrets/cloudsql/credentials.json"]
volumeMounts:
- name: cloudsql-oauth-credentials
mountPath: /secrets/cloudsql
readOnly: true
- name: ssl-certs
mountPath: /etc/ssl/certs
Run Code Online (Sandbox Code Playgroud)
但对于多个我已尝试过这样的-instances部分:
-instances=starchup-147119:us-central1:first-db,starchup-147119:us-central1:second-db=tcp:3306
and
-instances=starchup-147119:us-central1:first-db=tcp:3306,starchup-147119:us-central1:second-db=tcp:3306
Run Code Online (Sandbox Code Playgroud)
但他们都犯了各种错误; ECONNREFUSED 127.0.0.1:3306,ER_DBACCESS_DENIED_ERROR和ER_ACCESS_DENIED_ERROR
任何帮助深表感谢!
mysql google-cloud-sql google-cloud-platform cloud-sql-proxy
我正在使用Rails并且非常随机地遇到连接池错误,并且它没有专门针对任何单个端点.我可以在70%的时间内点击端点而不会出现此错误.该数据库是在Google Cloud上运行的PostgreSQL.这是我得到的错误的主要内容:
#<ActiveRecord::ConnectionNotEstablished: ActiveRecord::ConnectionNotEstablished>
/usr/local/bundle/gems/activerecord-5.1.5/lib/active_record/connection_handling.rb:112:in `connection_pool'
ActiveRecord::ConnectionNotEstablished (No connection pool with 'primary' found.):
Run Code Online (Sandbox Code Playgroud)
的Gemfile:
source 'https://rubygems.org'
git_source(:github) do |repo_name|
repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
"https://github.com/#{repo_name}.git"
end
gem 'rails', '~> 5.1.5'
gem 'pg', '>= 0.18', '< 2.0'
gem 'puma', '~> 3.7'
gem 'bcrypt', '~> 3.1.7'
gem 'jwt', '~> 1.5'
gem 'simple_command', '~> 0.0.9'
gem 'swagger-blocks', '~> 2.0.2'
gem 'active_model_serializers', '~> 0.10.2'
gem 'kaminari'
gem 'google-cloud-storage', '~> 1.10.0'
gem 'mini_magick', '~> 4.8.0'
gem 'carrierwave', '~> 1.2.0'
gem 'fog-google', '~> 1.3.0'
gem 'geocoder', …Run Code Online (Sandbox Code Playgroud) ruby postgresql ruby-on-rails google-cloud-sql cloud-sql-proxy
我正在尝试通过本地代理连接到 Google Cloud SQL。当我尝试在 Mac 上的终端中使用 cloud_sql_proxy 时,它显示 zsh 命令未找到 cloud_sql_proxy
有谁知道在 Kubernetes 集群上安装 CloudSQL-Proxy(它允许我们安全地连接到 CloudSQL)作为服务而不是将其作为应用程序容器的 sidecar 的优点和缺点?
据我所知,它主要用作边车。我已经将它用作两者(在非生产环境中),但我一直不明白为什么 sidecar 比 service 更可取。有人可以启发我吗?
google-cloud-sql kubernetes google-kubernetes-engine cloud-sql-proxy
我已按照https://cloud.google.com/sql/docs/mysql/connect-kubernetes-engine 中的步骤设置 MySQL 用户帐户和服务帐户。我已经下载了包含我的凭据的 JSON 文件。
我的问题是在我从网站复制的代码中:
- name: cloudsql-proxy
image: gcr.io/cloudsql-docker/gce-proxy:1.11
command: ["/cloud_sql_proxy",
"-instances=<INSTANCE_CONNECTION_NAME>=tcp:3306",
"-credential_file=/secrets/cloudsql/credentials.json"]
securityContext:
runAsUser: 2 # non-root user
allowPrivilegeEscalation: false
volumeMounts:
- name: cloudsql-instance-credentials
mountPath: /secrets/cloudsql
readOnly: true
Run Code Online (Sandbox Code Playgroud)
指定了路径 /secrets/cloudsql/credentials.json ,我不知道它来自哪里。
我想我应该通过以下方式创建凭据作为秘密
kubectl create secret generic cloudsql-instance-credentials --from-file=k8s\secrets\my-credentials.json
但在那之后我不知道该怎么办。这个秘密是如何成为路径的/secrets/cloudsql/credentials.json?
google-cloud-sql kubernetes google-kubernetes-engine cloud-sql-proxy
我想使用服务帐号从 Cloud Run 连接到 Cloud SQL 实例。连接过去是在 VPC 内创建的,我们只需向 PostgreSQL 客户端提供带有 auser和 a 的连接字符串。password但现在我们希望身份验证由 Google Cloud IAM 管理,服务帐户与 Cloud Run 服务关联。
在我的机器上,我可以使用enable_iam_login参数来使用我自己的服务帐户。运行 Cloud SQL 代理的命令如下所示:
./cloud_sql_proxy -dir=/cloudsql -instances=[PROJECT-ID]:[REGION]:[INSTANCE] \
-enable_iam_login -credential_file=${HOME}/.config/gcloud/application_default_credentials.json
Run Code Online (Sandbox Code Playgroud)
问题是我似乎找不到使用 IAM 身份验证方法从 Cloud Run 运行 Cloud SQL 代理的方法,我只能提供实例名称。以前有人遇到过这个问题吗?
google-cloud-sql google-cloud-platform cloud-sql-proxy google-cloud-iam google-cloud-run
我想将我的Kubernetes集群连接到Google Cloud SQL.
我有至少10个不同部署的pod,目前使用JDBC url +用户名/密码连接到MySQL [部署到k8s的docker镜像].
是否可以使用单个Google Cloud SQL Proxy实例并通过此代理将所有pod连接到Cloud SQL数据库?理想情况下,我想用代理替换容器中运行的mysql.
我宁愿不必在每个部署中运行代理.我发现的唯一样本似乎表明需要在每个部署中声明代理.
我们在 Cloud SQL 中使用 PostgreSQL 数据库。我们使用私有 IP 地址,并使用Cloud SQL 代理访问pod 中的数据库。
我们现在正在寻找一种快速、轻松地访问这些数据库中的数据的方法。据我所知,没有任何内置内容支持这一点。
有哪些方法可以安装(最好是基于 Web 的)GUI 来查看数据?
postgresql user-interface google-cloud-sql google-cloud-platform cloud-sql-proxy
我无法测试在 Google Cloud 的 PostgreSQL 产品中使用 IAM 用户的能力。
这是我的思考过程:
我在 Google Cloud 上的 PostgreSQL 实例上设置了相应的标志:
$ gcloud sql instances describe [MY_DB_INSTANCE] --format json | jq '.settings.databaseFlags'
[
{
"name": "cloudsql.iam_authentication",
"value": "on"
}
]
$
Run Code Online (Sandbox Code Playgroud)
我有一个 IAM 用户,我在数据库实例中创建了该用户:
gcloud sql users create [MY_EMAIL] --instance=[MY_DB_INSTANCE] --type=CLOUD_IAM_USER
Run Code Online (Sandbox Code Playgroud)
$ gcloud sql users list --instance [MY_DB_INSTANCE] | grep CLOUD_IAM_USER
[MY_EMAIL] CLOUD_IAM_USER
$
Run Code Online (Sandbox Code Playgroud)
当我尝试使用以下任一命令连接到数据库时,出现身份验证错误。在这两种情况下,我都使用输出gcloud auth print-access-token作为我的密码:
此方法将我的 IP 添加到白名单:
$ gcloud sql connect [MY_DB_INSTANCE] --database=[DB_NAME] --user=[MY_EMAIL]
Allowlisting your IP for incoming connection for …Run Code Online (Sandbox Code Playgroud)postgresql google-cloud-sql cloud-sql-proxy google-cloud-iam