在入口控制器后面访问 xpra html5 客户端
Accessing xpra html5 client behind a ingress controller
我正在尝试使用 html5 客户端在 kubernetes 集群上托管和远程访问 kicad(pcb 软件)。
码头文件:
FROM python:3.9.0-slim-buster
RUN apt-get update && apt install -y \
software-properties-common \
wget \
gnupg2
#install xpra
RUN wget -q https://xpra.org/gpg.asc -O- | apt-key add - && \
add-apt-repository "deb https://xpra.org/ buster main" && \
apt-get update && apt-get install -y --no-install-recommends xpra xvfb xterm
##install dependencies
RUN apt-get update && apt install -y \
libx11-dev libxcomposite-dev libxdamage-dev \
libxkbfile-dev \
openssh-client \
sshpass \
python3-paramiko \
dbus-x11 \
python3-requests \
xpra-html5
#install kicad
RUN apt-get update && add-apt-repository -y ppa:kicad/kicad-5.1-releases && \
apt-get install -y --no-install-recommends kicad \
&& rm -rf /var/lib/apt/lists/*
ENV DISPLAY=:0
EXPOSE 8051
CMD xpra start --start=kicad --no-pulseaudio --bind-tcp=0.0.0.0:8051 --html=on && tail -f /dev/null
部署文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: kicad-deployment
labels:
app: kicad
spec:
replicas: 2
selector:
matchLabels:
app: kicad
template:
metadata:
labels:
app: kicad
spec:
containers:
- name: kicad
image: syashfr/kicad:1.0.0
ports:
- containerPort: 8051
服务文件:
apiVersion: v1
kind: Service
metadata:
name: kicad-service
spec:
type: LoadBalancer
selector:
app: kicad
ports:
- port: 80
targetPort: 8051
入口文件:
kind: Ingress
metadata:
name: kicad-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /kicad
backend:
serviceName: kicad-service
servicePort: 80
我假设 proxy_pass 应该在应用 ingress.yaml 时自动执行,因此我没有按照 https://xpra.org/trac/wiki/Nginx[=17] 中所述对 nginx.conf(入口控制器)进行更改=]
然而,当我尝试访问应用程序时:http://ingress_address/kicad,我得到以下页面而不是应用程序 UI:
我似乎确实被路由到我的服务,但不是预期的 UI。但是,我可以通过服务的外部 IP 访问 kicad UI。我缺少什么入口?
我已经重现了你的问题并通过稍微修改入口资源解决了它。我的 ingress
对象清单:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: kicad-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
kubernetes.io/ingress.class: nginx
spec:
rules:
- http:
paths:
- path: /kicad/?(.*)
backend:
serviceName: kicad-service
servicePort: 80
部署和服务 yaml 保持不变。当您尝试访问 <ingress-IP>/kicad/
时,您将看到预期的 UI.
我正在尝试使用 html5 客户端在 kubernetes 集群上托管和远程访问 kicad(pcb 软件)。
码头文件:
FROM python:3.9.0-slim-buster
RUN apt-get update && apt install -y \
software-properties-common \
wget \
gnupg2
#install xpra
RUN wget -q https://xpra.org/gpg.asc -O- | apt-key add - && \
add-apt-repository "deb https://xpra.org/ buster main" && \
apt-get update && apt-get install -y --no-install-recommends xpra xvfb xterm
##install dependencies
RUN apt-get update && apt install -y \
libx11-dev libxcomposite-dev libxdamage-dev \
libxkbfile-dev \
openssh-client \
sshpass \
python3-paramiko \
dbus-x11 \
python3-requests \
xpra-html5
#install kicad
RUN apt-get update && add-apt-repository -y ppa:kicad/kicad-5.1-releases && \
apt-get install -y --no-install-recommends kicad \
&& rm -rf /var/lib/apt/lists/*
ENV DISPLAY=:0
EXPOSE 8051
CMD xpra start --start=kicad --no-pulseaudio --bind-tcp=0.0.0.0:8051 --html=on && tail -f /dev/null
部署文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: kicad-deployment
labels:
app: kicad
spec:
replicas: 2
selector:
matchLabels:
app: kicad
template:
metadata:
labels:
app: kicad
spec:
containers:
- name: kicad
image: syashfr/kicad:1.0.0
ports:
- containerPort: 8051
服务文件:
apiVersion: v1
kind: Service
metadata:
name: kicad-service
spec:
type: LoadBalancer
selector:
app: kicad
ports:
- port: 80
targetPort: 8051
入口文件:
kind: Ingress
metadata:
name: kicad-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /kicad
backend:
serviceName: kicad-service
servicePort: 80
我假设 proxy_pass 应该在应用 ingress.yaml 时自动执行,因此我没有按照 https://xpra.org/trac/wiki/Nginx[=17] 中所述对 nginx.conf(入口控制器)进行更改=]
然而,当我尝试访问应用程序时:http://ingress_address/kicad,我得到以下页面而不是应用程序 UI:
我似乎确实被路由到我的服务,但不是预期的 UI。但是,我可以通过服务的外部 IP 访问 kicad UI。我缺少什么入口?
我已经重现了你的问题并通过稍微修改入口资源解决了它。我的 ingress
对象清单:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: kicad-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
kubernetes.io/ingress.class: nginx
spec:
rules:
- http:
paths:
- path: /kicad/?(.*)
backend:
serviceName: kicad-service
servicePort: 80
部署和服务 yaml 保持不变。当您尝试访问 <ingress-IP>/kicad/
时,您将看到预期的 UI.