无法在 EKS 部署中通过 Secrets 和 ConfigMap 将 Laravel 应用程序连接到 RDS

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

我已使用节点组在 Amazon Elastic Kubernetes Service (EKS) 上部署了 Laravel 应用程序。为了管理敏感信息,我创建了机密和配置映射,并将它们包含在我的部署中。此外,我还在与 EKS 集群相同的虚拟私有云 (VPC) 中创建了一个 Amazon RDS(关系数据库服务)实例。

下面是我的部署、秘密和配置映射的 YAML 文件:

deployment.yml 文件:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ecom-deployment
  namespace: ecom-eks
spec:
  replicas: 2
  selector:
    matchLabels:
      app.kubernetes.io/name: ecom
  template:
    metadata:
      labels:
        app.kubernetes.io/name: ecom
    spec:
      containers:
      - name: ecom
        image: public.ecr.aws/v9v3b4i5/ecom-api:latest
        imagePullPolicy: Always
        ports:
        - containerPort: 8010
        envFrom:
        - configMapRef:
            name: ecom-configmap
        env:
        - name: DB_USERNAME
          valueFrom:
            secretKeyRef:
              name: ecom-secret
              key: db_username
        - name: DB_PASSWORD
          valueFrom:
            secretKeyRef:
              name: ecom-secret
              key: db_password

秘密.yml:

apiVersion: v1
kind: Secret
metadata:
  name: ecom-secret
  namespace: ecom-eks
type: Opaque
data:
  db_username: rds_username
  db_password: rds_password

configmap.yml:

apiVersion: v1
kind: ConfigMap
metadata:
  name: ecom-configmap
  namespace: ecom-eks
data:
  APP_NAME: Laravel
  APP_ENV: local
  APP_KEY: 'base64:BPCsfQr+Wk46OcItjF0tXeHI8088jJA1Dr218vfL7is='
  APP_DEBUG: 'true'
  APP_URL: http://localhost

  LOG_CHANNEL: stack
  LOG_DEPRECATIONS_CHANNEL: null
  LOG_LEVEL: debug

  DB_CONNECTION: mysql
  DB_HOST: ecom.c7ebhqk.us-east-1.rds.amazonaws.com
  DB_PORT: '3306'
  DB_DATABASE: ecom

  BROADCAST_DRIVER: log
  CACHE_DRIVER: file
  FILESYSTEM_DISK: local
  QUEUE_CONNECTION: sync
  SESSION_DRIVER: file
  SESSION_LIFETIME: '120'

  MEMCACHED_HOST: 127.0.0.1

  REDIS_HOST: 127.0.0.1
  REDIS_PASSWORD: null
  REDIS_PORT: '6379'

  MAIL_MAILER: smtp
  MAIL_HOST: mailpit
  MAIL_PORT: '1025'
  MAIL_USERNAME: null
  MAIL_PASSWORD: null
  MAIL_ENCRYPTION: null
  MAIL_FROM_ADDRESS: '[email protected]'
  MAIL_FROM_NAME: "${APP_NAME}"

  PUSHER_APP_ID: ''
  PUSHER_APP_KEY: ''
  PUSHER_APP_SECRET: ''
  PUSHER_HOST: ''
  PUSHER_PORT: '443'
  PUSHER_SCHEME: https
  PUSHER_APP_CLUSTER: mt1

  VITE_PUSHER_APP_KEY: "${PUSHER_APP_KEY}"
  VITE_PUSHER_HOST: "${PUSHER_HOST}"
  VITE_PUSHER_PORT: "${PUSHER_PORT}"
  VITE_PUSHER_SCHEME: "${PUSHER_SCHEME}"
  VITE_PUSHER_APP_CLUSTER: "${PUSHER_APP_CLUSTER}"

我通过访问 pod 并打印环境变量来验证 configmap 和 Secrets 的值。此外,我还使用以下命令确认了 RDS 连接:

mysql -h ecom.c7ebhqk.us-east-1.rds.amazonaws.com -u admin -p xxxxx

这成功地将我连接到数据库。

但是,当尝试通过 Laravel 项目中的任何 API 保存数据时,就会出现问题。我经常遇到连接错误。

我需要有关调试此问题并有效解决它的指导。任何见解或建议将不胜感激。谢谢你。

laravel amazon-web-services deployment amazon-rds amazon-eks
1个回答
0
投票

您是否尝试过启用laravel调试模式并查看是否有任何错误?

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