为了在minikube的k8s上运行php fpm应用程序,我缺少一些kubernetes ingress nginx配置。
k8s配置文件:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: server-cluster-ip-service
servicePort: 5000
---
apiVersion: v1
kind: Service
metadata:
name: server-cluster-ip-service
spec:
type: ClusterIP
selector:
component: server
ports:
- port: 5000
targetPort: 5000
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: server-deployment
spec:
replicas: 3
selector:
matchLabels:
component: server
template:
metadata:
labels:
component: server
spec:
containers:
- name: server
image: xxx/phpfpm
ports:
- containerPort: 5000
env:
- name: APP_ENV
value: dev
- name: APP_DEBUG
value: '1'
- name: APP_SECRET
value: 74bd83726749616f29166ef53c5f0557
- name: MYSQL_HOST
value: mysql-cluster-ip-service
- name: MYSQL_ROOT_PASSWORD
value: root
- name: MYSQL_DATABASE
value: db
- name: MYSQL_DATABASE_TEST
value: test
- name: MYSQL_USER
value: user
- name: MYSQL_PASSWORD
value: secret
---
apiVersion: v1
kind: Service
metadata:
name: mysql-cluster-ip-service
spec:
type: ClusterIP
selector:
component: mysql
ports:
- port: 3306
targetPort: 3306
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql-deployment
spec:
replicas: 1
selector:
matchLabels:
component: mysql
template:
metadata:
labels:
component: mysql
spec:
volumes:
- name: mysql-storage
persistentVolumeClaim:
claimName: database-persistent-volume-claim
containers:
- name: mysql
image: mysql:5.7.22
ports:
- containerPort: 3306
volumeMounts:
- name: mysql-storage
mountPath: /var/lib/mysql
subPath: mysql
env:
- name: MYSQL_HOST
value: mysql-cluster-ip-service
- name: MYSQL_ROOT_PASSWORD
value: root
- name: MYSQL_DATABASE
value: db
- name: MYSQL_USER
value: user
- name: MYSQL_PASSWORD
value: secret
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: database-persistent-volume-claim
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
先前docker开发环境的docker Nginx映像上使用的Nginx服务器工作配置文件(Nginx位于docker中,是与php容器分离的容器):
server {
listen 443 default_server ssl;
root /opt/app/public;
index index.php;
...
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location /healthcheck {
return 200 'ok';
add_header Content-Type text/plain;
}
error_page 404 /index.php;
location ~ ^/(index)\.php(/|$) {
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
}
}
在浏览器上访问minikube ip时,出现502错误。
我已经安装了运行以下命令的ingress nginx(如安装指南中所述)
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml
$ minikube addons enable ingress
$ make dev-env
我假设我需要以某种方式将根目录(nginx conf)映射到/opt/app/public,并以某种方式在入口nginx中配置fastcgi_过程,老实说,我对所有这些都是如何工作的还有些迷茫。
这可能是以下问题之一。你的入口看起来不错。
>
您的意思是在与php容器相同的pod中运行nginx容器吗?一旦nginx在同一个pod中运行,您将不得不将fastci_pass
中的php替换为127.0.0.1。
检查pod日志,如果连接被拒绝,这是php容器的问题,它没有正确地公开端口。尝试在您的php pod上执行port forward
ing,看看是否可以通过localhost访问5000。
我看到你有你的fastcgi_pass
在php: 9000,这应该是5000吗?
我的公司有一个伪造的CA证书。实例com和一张伪造地图的唱片。实例com连接到我们的负载平衡器的IP 负载平衡器正在将流量转发到我们的Kubernetes群集。 在集群中,我部署了nginx ingress helm图表,在30200处公开了https节点端口 我根据上述证书创建了一个名为test secret的k8s TLS机密。 我部署了一个带有服务“test”的应用程序,并安装了以下入口:
我试图设置Kubernetes入口,将外部http流量路由到前端pod(路径/)和后端pod(路径/rest/*),但我总是得到400错误,而不是主nginx索引。html。 所以我在第https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer页尝试了谷歌库伯内特斯的例子,但我总是得到400个错误。有什么想法吗?
我有一个网站在kubernetes集群中运行。我可以在本地访问它,但希望通过internet访问它。(我有一个注册域),但外部IP一直挂起 我按照以下指示工作:https://dev.to/peterj/expose-a-kubernetes-service-on-your-own-custom-domain-52dd 这是服务和入口的代码 因此,我正在使用helm安装nginx控制器,但在那之后
我在K8S集群中面临一个奇怪的问题 基本上我有两个应用程序: identity manager(基于WSO2,但该问题与WSO2无关) 将管理X509身份验证的外部SAML2 IDP 为了使用这个外部SAML2 IDP,我配置了WSO2 当我尝试通过X509登录时,WSO2显示登录页面,我单击智能卡,重定向到外部SAML IDP。 在这种情况下,nginx入口为我提供了502个坏网关。如果我复制U
我是整个Kubernetes社区的新手,目前我正在尝试使用Ingress Nginx来暴露仪表板。我试过几种方法,但我找不到一个很好的解释如何暴露仪表板入口。我现在拥有的只是一个仪表板,可以通过“kubectl port forward”访问。我还安装了Ingress Nginx,控制器正在运行。我应该如何开始为kubernetes仪表板创建入口?
我怎样才能使用入口呢?我尝试使用NodePort和--Target etPort=1001,我在servicePort中添加了80在。 kubectl公开部署测试--Target-port=1001--type=NodePort 我得到了错误 找不到后端-404 我使用的是正确的方法还是需要遵循其他方法?