我想将Strapi CMS部署到Kubernetes。在我的本地机器上,我正试图用Minikube来实现这一点。该项目的结构是集群外另一个容器中的MySQL。我想通过这个IP172.17.0.2:3306
从集群内部访问MySQL数据库
数据库位于集群之外,并且位于docker容器中。但Strapi项目生活在一个Kubernetes集群中。
这是我用来做Kubernetes的部署YAML文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: cg-api
spec:
selector:
matchLabels:
app: cg-api
replicas: 2
template:
metadata:
labels:
app: cg-api
spec:
containers:
- name: cg-api
image: alirezahd/cg-api
env:
- name: DATABASE_HOST
value: "172.17.0.2"
- name: DATABASE_PORT
value: "3306"
ports:
- containerPort: 1337
首先,您应该将MySQL端口3306暴露在容器外部。假设Docker运行MySQL容器的主机的IP地址为192.168.0.100。然后您可以telnet 192.168.0.100:3306以确保端口已公开且可用。
以下是Dockers文档中的一个示例:
docker run -p 192.168.0.100:3306:3306/tcp mysql-container-name bash
这将容器的端口3306绑定到主机192.168.0.100上的TCP端口3306。
然后您的CMS可以在minikube中连接到它。
尝试在minikube下部署dnsutils。它提供了nslookup、telnet等网络工具。它非常有助于解决minikube中的网络问题。您可以连接到它sudo kubernetes exec -it dnsutils -n default -- bash
。
您可以尝试使用特殊的minikube主机来访问您的根计算机。假设您已经使用-p3306:3306
在根计算机上公开了docker-mysql容器
env:
- name: DATABASE_HOST
value: "host.minikube.internal"
https://minikube.sigs.k8s.io/docs/handbook/host-access/#hostminikubeinternal看起来你需要minikube v1.10+