我已使用节点组在 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调试模式并查看是否有任何错误?