首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes访问Google Cloud SQL C#连接字符串

问Kubernetes访问Google Cloud SQL C#连接字符串
EN

Stack Overflow用户
提问于 2020-04-20 23:35:43
回答 2查看 175关注 0票数 0

我有一个DOTNET核心C#控制台应用程序,我有一个连接字符串,现在,要连接到本地MySql数据库,我使用以下连接字符串:

代码语言:javascript
复制
Server=127.0.0.1;Database=database;Uid=root;Pwd=123;

我已经设置了一个Google Cloud SQL MySql实例,并在其中创建了一个数据库,并为其分配了一个内网IP。我还创建了一个GKE集群。下面是使用内网IP连接GKE到云SQL的文档:

https://cloud.google.com/sql/docs/mysql/connect-kubernetes-engine

在那个文档中,它说我需要2个kubernetes密钥,1个用于服务帐户凭据,我使用了在Cloud SQL实例中生成的密钥。另一个应该是数据库凭据。这个秘密应该是什么样子的,我的连接字符串应该是什么样子才能使用秘密中指示的值。

我尝试忽略数据库凭据秘密,并按原样使用连接字符串,只将ip更改为给定的私有IP,认为出于测试目的应该足够了,但没有成功。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-21 07:42:38

这就是我获得连接字符串的方式:

代码语言:javascript
复制
var dbHost     = Environment.GetEnvironmentVariable("DB_HOST");
var dbName     = Environment.GetEnvironmentVariable("DB_NAME");
var dbUser     = Environment.GetEnvironmentVariable("DB_USER");
var dbPassword = Environment.GetEnvironmentVariable("DB_PASSWORD");

string connectionString = $"server={dbHost};database={dbName};uid={dbUser};pwd={dbPassword};";

并在部署yml文件中使用容器上的env,如下所示:

代码语言:javascript
复制
     env:
        - name: DB_HOST
          value: 127.0.0.1
        - name: DB_NAME
          value: name
        - name: DB_USER
          valueFrom:
            secretKeyRef:
              name: cloudsql-db-credentials
              key: username
        - name: DB_PASSWORD
          valueFrom:
            secretKeyRef:
              name: cloudsql-db-credentials
              key: password

我用下面的命令创建了一个通用的秘密:

代码语言:javascript
复制
kubectl create secret generic cloudsql-db-credentials --from-literal=username=root --from-literal=password=123
票数 1
EN

Stack Overflow用户

发布于 2021-06-26 15:55:12

在您提供的链接中,您拥有将机密信息带入应用程序pod所需的一切。

首先,使用kubectl create创建密钥,该命令接受几个键值对作为输入。

代码语言:javascript
复制
kubectl create secret generic <YOUR-DB-SECRET> \
  --from-literal=username=<YOUR-DATABASE-USER> \
  --from-literal=password=<YOUR-DATABASE-PASSWORD> \
  --from-literal=database=<YOUR-DATABASE-NAME>

然后将密钥作为卷挂载到pod中:

代码语言:javascript
复制
volumes:
- name: <YOUR-DB-SECRET-VOLUME>
  secret:
    secretName: <YOUR-DB-SECRET>

然后在pod文件系统中为您的卷指定挂载路径:

代码语言:javascript
复制
volumeMounts:
- name: <YOUR-DB-SECRET-VOLUME>
  mountPath: /secrets/
  readOnly: true

此时,可以从pod的/secrets文件夹访问键值对,每个键值对都存储为一个文件,其键作为名称,值作为文件内容。

您的/secrets/文件夹列表应为:

代码语言:javascript
复制
username
password
database

要从你的应用程序中访问它们,你只需获取/secrets/文件夹文件列表并读取每个文件的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61326285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档