首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将应用程序部署与K8s上的数据库服务连接

将应用程序部署与K8s上的数据库服务连接
EN

Stack Overflow用户
提问于 2021-05-26 17:18:57
回答 1查看 51关注 0票数 0

我必须将我的应用程序部署与PostgresDB部署连接起来。目前,我将Postgres集群IP放在我的应用程序环境中,如下所示:

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
.......
containers:
  - name: "#{tenant}#-app-widget"
    image: baserepository:#{app_image_version}#
    ports:
      - containerPort: 8080
    env:
      - name: NODE_ENV
        value: "#{NODE_ENV}#"
      - name: AUTH_CALLBACK_URL
        value: "https://base.#{DNSSubdomain}#/auth/callback"
      - name: DB_HOST
        value: "10.0.196.195"
      - name: DB_PORT
        value: "5432"
      - name: DB_DATABASE
        value: "#{DB_DATABASE}#"

我想要做的是在DB_HOST的值中加入对postgres服务的引用,以便在部署应用程序时更加动态。下面是我为postgres部署和服务所做的工作:

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: "#{tenant}#-postgres"
  name: "#{tenant}#-postgres"
  labels:
    app: "#{tenant}#-postgres"
    product: "#{tenant}#-postgres"
    app.kubernetes.io/name: "#{tenant}#-postgres"
    app.kubernetes.io/version: "10.4"
    app.kubernetes.io/managed-by: "#{managed_by}#"
    app.kubernetes.io/component: "#{tenant}#-postgres"
    app.kubernetes.io/part-of: "#{tenant}#-postgres"
spec:
  replicas: 1
  selector:
    matchLabels:
      app: "#{tenant}#-postgres"
  template:
    metadata:
      labels:
        app: "#{tenant}#-postgres"
    spec:
      containers:
        - name: "#{tenant}#-postgres"
          image: postgres:10.4
          imagePullPolicy: "IfNotPresent"
          ports:
            - containerPort: 5432
          envFrom:
            - configMapRef:
                name: "#{tenant}#-postgres-config"
          resources:
            requests:
              memory: "#{POSTGRES_RESOURCES_REQUESTS_MEMORY}#"
              cpu: "#{POSTGRES_RESOURCES_REQUESTS_CPU}#"
            limits:
              memory: "#{POSTGRES_RESOURCES_LIMITS_MEMORY}#"
              cpu: "#{POSTGRES_RESOURCES_LIMITS_CPU}#"
          volumeMounts:
            - mountPath: /var/lib/postgresql/data
              name: "#{tenant}#-postgredb"
      volumes:
        - name: "#{tenant}#-postgredb"
          persistentVolumeClaim:
            claimName: "#{tenant}#-postgres-pv-claim"
      affinity:
        nodeAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
            - weight: 1
              preference:
                matchExpressions:
                  - key: tier
                    operator: In
                    values:
                      - "#{POSTGRES_AFFINITY_PREFERRED_VALUE}#"
---
apiVersion: v1
kind: Service
metadata:
  namespace: "#{tenant}#-postgres"
  name: "#{tenant}#-postgres"
  labels:
    app: "#{tenant}#-postgres"
spec:
  type: NodePort
  ports:
    - port: 5432
  selector:
    app: "#{tenant}#-postgres"

您能为我提供一个如何执行此操作的示例吗?我认为不需要入口,因为我必须将同一集群中的两个部署关联起来。非常感谢,戴夫。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-27 14:42:40

我找到了解决方案,您必须将服务元数据{ DB_HOST }.{namespace}放入名称值中。这足以让应用程序部署与Postgres实例进行动态通信。DB_HOST将是"#{tenant}#-postgres.#{tenant}#-postgres“

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

https://stackoverflow.com/questions/67702017

复制
相关文章

相似问题

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