Azure Kubernetes 服务中的 Azure SQL 数据库连接字符串

问题描述 投票:0回答:1

我创建了一些使用 Azure Service Operator 部署 Azure 资源的 helm 图表。我的主要问题是如何从新创建的 Azure SQL 数据库中检索 ConnectionString 以将其传递给可能将其作为 Secret 使用的服务?

它是否应该成为 Helm 模板的一部分来根据输入创建秘密,或者是否有其他方法来处理它?

非常感谢

azure-sql-database kubernetes-helm azure-aks
1个回答
0
投票

要从新创建的 Azure SQL 数据库检索连接字符串并将其传递给服务,您可以按照以下步骤操作 -

假设您创建了 SQL 服务器和数据库

enter image description here

检索连接字符串

CONNECTION_STRING=$(az sql db show-connection-string --server arkoazuresqlserver --name myazuresqldb --client ado.net --output tsv)

将连接字符串编码为base64

BASE64_CONNECTION_STRING=$(echo -n "$CONNECTION_STRING" | base64)

创建一个秘密

apiVersion: v1
kind: Secret
metadata:
  name: azuresql-connection-string
  namespace: default
type: Opaque
data:
  connectionString: <base64-encoded-connection-string>

enter image description here

你可以验证一下-

enter image description here

现在,如果您想在应用程序部署中使用它,那么

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: myapp:latest
        env:
        - name: SQL_CONNECTION_STRING
          valueFrom:
            secretKeyRef:
              name: azuresql-connection-string
              key: connectionString

如果您要通过 helm 方法,那么您可以编辑您的 template/secret.yaml

apiVersion: v1
kind: Secret
metadata:
  name: azuresql-connection-string
  namespace: {{ .Release.Namespace }}
type: Opaque
data:
  connectionString: {{ .Values.connectionString | b64enc | quote }}

并使用连接字符串更新您的values.yaml

connectionString: "Server=tcp:arkoazuresqlserver.database.windows.net,1433;Initial Catalog=myazuresqldb;Persist Security Info=False;User ID=arko;Password=myStrongPassword!123;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"

enter image description here

然后重新部署舵图。

© www.soinside.com 2019 - 2024. All rights reserved.