Настройка ingress для kubernetes кластера
Начал изучать kubernetes. Разобрался как развертывать docker контейнеры. Сейчас пытаюсь настроить ingress и у меня возникли проблемы. Я развернул k3s кластер и взял 2 тестовых приложения. При попытке обращения к хостам прописанным в ingress вылезает 502 ошибка. Помогите разобраться что я сделал не так
Пытался играть с портами, прописывал хосты в /etc/hosts с ip адресом ingress. Не помогло
конфиги приложений:
apiVersion: apps/v1
kind: Deployment
metadata:
name: app1
labels:
app: app1
spec:
replicas: 1
selector:
matchLabels:
app: app1
template:
metadata:
labels:
app: app1
spec:
containers:
- name: hello-kubernetes
image: paulbouwer/hello-kubernetes:1.10
env:
- name: MESSAGE
value: Hello from app1
---
apiVersion: v1
kind: Service
metadata:
name: app1
labels:
app: app1
spec:
type: NodePort
selector:
app: app1
ports:
- port: 8080
targetPort: 8080
и
apiVersion: apps/v1
kind: Deployment
metadata:
name: app2
labels:
app: app2
spec:
replicas: 1
selector:
matchLabels:
app: app2
template:
metadata:
labels:
app: app2
spec:
containers:
- name: hello-kubernetes
image: paulbouwer/hello-kubernetes:1.10
env:
- name: MESSAGE
value: Hello from app2
---
apiVersion: v1
kind: Service
metadata:
name: app2
labels:
app: app2
spec:
type: NodePort
selector:
app: app2
ports:
- port: 8080
targetPort: 8080
настройка ингресс:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: simple-fanout-example
spec:
rules:
- host: app1.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: app1
port:
number: 8080
- host: app2.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: app2
port:
number: 8080
хост:
hostname -I
10.0.2.15 192.168.122.1 10.42.0.0 10.42.0.1
обращение по IP сервиса:
curl http://10.43.179.159:8080
<!DOCTYPE html>
<html>
<head>
<title>Hello Kubernetes!</title>
<link rel="stylesheet" type="text/css" href="/css/main.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Ubuntu:300" >
</head>
<body>
<div class="main">
<img src="/images/kubernetes.png"/>
<div class="content">
<div id="message">
Hello from app2
</div>
<div id="info">
<table>
<tr>
<th>namespace:</th>
<td>-</td>
</tr>
<tr>
<th>pod:</th>
<td>app2-6d86cf9844-cnk74</td>
</tr>
<tr>
<th>node:</th>
<td>- (Linux 4.18.0-305.19.1.el8_4.x86_64)</td>
</tr>
</table>
</div>
<div id="footer">
paulbouwer/hello-kubernetes:1.10.1 (linux/amd64)
</div>
</div>
</div>
</body>
</html>
вывод kubectl get all:
NAME READY STATUS RESTARTS AGE
pod/app1-85c9fcc5b-xzj8d 1/1 Running 1 18h
pod/app2-6d86cf9844-cnk74 1/1 Running 0 37m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.43.0.1 <none> 443/TCP 20h
service/app1 NodePort 10.43.66.153 <none> 8080:30991/TCP 18h
service/app2 NodePort 10.43.179.159 <none> 8080:30904/TCP 37m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/app1 1/1 1 1 18h
deployment.apps/app2 1/1 1 1 37m
NAME DESIRED CURRENT READY AGE
replicaset.apps/app1-85c9fcc5b 1 1 1 18h
replicaset.apps/app2-6d86cf9844 1 1 1 37m
kubectl describe ingress simple-fanout-example:
kubectl describe ingress simple-fanout-example
Name: simple-fanout-example
Namespace: default
Address: 10.0.2.15
Default backend: default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
Host Path Backends
—— —— —------
app1.com
/ app1:8080 (10.42.0.5:8080)
app2.com
/ app2:8080 (10.42.0.22:8080)
Annotations: <none>
Events: <none>
Обращение через ingress:
curl -H "Host:app2.com" 10.0.2.15
Bad Gateway