标签: cloud-sql-proxy

如何在 kubernetes 容器命令中使用环境变量?

我正在尝试将 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 容器内运行的命令中使用环境变量?

kubernetes cloud-sql-proxy

11
推荐指数
1
解决办法
6662
查看次数

使用Cloud sql代理连接到多个CloudSQL实例?

我正在尝试使用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_ERRORER_ACCESS_DENIED_ERROR

任何帮助深表感谢!

mysql google-cloud-sql google-cloud-platform cloud-sql-proxy

8
推荐指数
2
解决办法
2344
查看次数

没有找到主要的连接池

我正在使用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

8
推荐指数
1
解决办法
2317
查看次数

找不到 zsh 命令 cloud_sql_proxy

我正在尝试通过本地代理连接到 Google Cloud SQL。当我尝试在 Mac 上的终端中使用 cloud_sql_proxy 时,它显示 zsh 命令未找到 cloud_sql_proxy

cloud-sql-proxy

8
推荐指数
1
解决办法
8989
查看次数

GKE 上的 CloudSQL 代理:服务与 Sidecar

有谁知道在 Kubernetes 集群上安装 CloudSQL-Proxy(它允许我们安全地连接到 CloudSQL)作为服务而不是将其作为应用程序容器的 sidecar 的优点和缺点?

据我所知,它主要用作边车。我已经将它用作两者(在非生产环境中),但我一直不明白为什么 sidecar 比 service 更可取。有人可以启发我吗?

google-cloud-sql kubernetes google-kubernetes-engine cloud-sql-proxy

8
推荐指数
2
解决办法
3459
查看次数

如何在 GKE 上创建 CloudSQL 代理凭据作为机密

我已按照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

7
推荐指数
1
解决办法
3360
查看次数

在启用 IAM 登录的情况下通过 cloud-sql-proxy 从 Cloud Run 连接到 Cloud SQL

我想使用服务帐号从 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

7
推荐指数
1
解决办法
1820
查看次数

多个K8S容器通过代理连接到Google Cloud SQL

我想将我的Kubernetes集群连接到Google Cloud SQL.

我有至少10个不同部署的pod,目前使用JDBC url +用户名/密码连接到MySQL [部署到k8s的docker镜像].

是否可以使用单个Google Cloud SQL Proxy实例并通过此代理将所有pod连接到Cloud SQL数据库?理想情况下,我想用代理替换容器中运行的mysql.

我宁愿不必在每个部署中运行代理.我发现的唯一样本似乎表明需要在每个部署中声明代理.

google-cloud-sql kubernetes cloud-sql-proxy

6
推荐指数
1
解决办法
1535
查看次数

用于查看 Google Cloud SQL 中数据的 GUI

我们在 Cloud SQL 中使用 PostgreSQL 数据库。我们使用私有 IP 地址,并使用Cloud SQL 代理访问pod 中的数据库。

我们现在正在寻找一种快速、轻松地访问这些数据库中的数据的方法。据我所知,没有任何内置内容支持这一点。

有哪些方法可以安装(最好是基于 Web 的)GUI 来查看数据?

postgresql user-interface google-cloud-sql google-cloud-platform cloud-sql-proxy

6
推荐指数
1
解决办法
7482
查看次数

使用 IAM 用户连接到 Cloud SQL

我无法测试在 Google Cloud 的 PostgreSQL 产品中使用 IAM 用户的能力。

这是我的思考过程:

  1. 我在 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)
  2. 我有一个 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)
  3. 当我尝试使用以下任一命令连接到数据库时,出现身份验证错误。在这两种情况下,我都使用输出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

6
推荐指数
1
解决办法
9197
查看次数