在pod中为C#应用程序设置Kubernetes Secret时出错

ezykj2lf  于 2023-10-17  发布在  Kubernetes
关注(0)|答案(1)|浏览(124)

我正在尝试保存Kubernetes Secret中的数据库凭据。这将通过kubernetes depoloyment.yaml的yaml文件进行选择。
这是我在Kubernetes主节点中创建Secret的方法:

  1. kubectl create secret generic moiz-db-credentials \
  2. --from-literal=DB_HOST=77.68.54.25 \
  3. --from-literal=DB_USER=sa \
  4. --from-literal=DB_PASSWORD='123456'

这是我在Kubernetes Deployment文件中调用它们的方式:

  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. name: munib-testing-db
  5. labels:
  6. app: munib-testing-db
  7. spec:
  8. replicas: 1
  9. selector:
  10. matchLabels:
  11. app: munib-testing-db
  12. template:
  13. metadata:
  14. labels:
  15. app: munib-testing-db
  16. spec:
  17. containers:
  18. - name: munib-testing-db
  19. image: selteq2/munib-testing-db:27
  20. ports:
  21. - containerPort: 80
  22. env:
  23. - name: DB_USER
  24. valueFrom:
  25. secretKeyRef:
  26. name: moiz-db-credentials
  27. key: DB_USER
  28. - name: DB_PASSWORD
  29. valueFrom:
  30. secretKeyRef:
  31. name: moiz-db-credentials
  32. key: DB_PASSWORD
  33. - name: DB_HOST
  34. valueFrom:
  35. secretKeyRef:
  36. name: moiz-db-credentials
  37. key: DB_HOST
  38. imagePullSecrets:
  39. - name: regcred

现在我有一个困惑,我应该如何在C#应用程序中调用它们。这是默认方式:

  1. "ConnectionStrings": {
  2. "DefaultConnection": "Server=77.68.54.25;Database=expertCustomer_live_1;User ID=sa;Password=123456;MultipleActiveResultSets=true;TrustServerCertificate=True",
  3. }

我已经将它们更改为我创建的环境变量,但我仍然在swagger中得到这个错误:

有什么建议我做错了什么吗?

js4nwp54

js4nwp541#

部署配置在密钥DB_PASSWORD处获取k8s secret oiz-db-credentials的值,并将此值作为具有密钥DB_PASSWORD的环境变量(在您的pod内)公开。
因此,如果你运行kubectl exec -it <your_pod> /bin/sh,然后运行env,你会看到你的env var DB_PASSWORD,其中的key是你的实际密码值(从secret中提取)。
因此,要在C#应用程序中获取此环境变量的值,您需要执行以下操作:

  1. var password = Environment.GetEnvironmentVariable("DB_PASSWORD");

相关问题