expose nginx-ingress TCP-Service on port 9000

This commit is contained in:
Dominik Chilla 2020-08-23 17:30:53 +02:00 committed by GitHub
parent bd2095e5e2
commit 6cff7d1f9d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

106
README.md
View File

@ -20,7 +20,7 @@ finally `systemctl daemon-reload` and `systemctl restart k3s`
### Installation
https://kubernetes.github.io/ingress-nginx/deploy/#bare-metal
### Switch ingress-Service from NodePort to LoadBalancer
### Change service type from NodePort to LoadBalancer
`kubectl edit service -n ingress-nginx` and change `type: NodePort` to `type: LoadBalancer`
Port 80 and 443 should listen now on an *External-IP* `kubectl get all --all-namespaces`:
@ -72,3 +72,107 @@ spec:
env:
[...]
```
### Deploy nginx-service and expose via nginx-ingress on TCP-port 9000
my-nginx-deployment.yml:
```
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
spec:
selector:
matchLabels:
run: my-nginx
replicas: 1
template:
metadata:
labels:
run: my-nginx
spec:
containers:
- name: my-nginx
image: nginx:alpine
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: my-nginx
labels:
run: my-nginx
spec:
ports:
- port: 80
protocol: TCP
selector:
run: my-nginx
---
apiVersion: v1
kind: ConfigMap
metadata:
name: tcp-services
namespace: ingress-nginx
data:
9000: "default/my-nginx:80::PROXY"
```
Apply with `kubectl apply -f my-nginx-deployment.yml`:
```
deployment.apps/my-nginx created
service/my-nginx created
configmap/tcp-services created
```
Test: `kubectl get all`:
```
[...]
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
[...]
service/my-nginx ClusterIP 10.43.118.13 <none> 80/TCP 99s
[...]
```
Expose my-nginx app on nginx-ingress TCP-port 9000: `kubectl edit service -n ingress-nginx`
```
spec:
clusterIP: 10.43.237.255
externalTrafficPolicy: Cluster
ports:
- name: http
nodePort: 30312
port: 80
protocol: TCP
targetPort: http
- name: https
nodePort: 30366
port: 443
protocol: TCP
targetPort: https
*** ADD >>>
- name: proxied-tcp-9000
port: 9000
protocol: TCP
targetPort: 9000
<<< ADD ***
[...]
```
Verify nginx-ingress is listening on port 9000 with `kubectl get all --all-namespaces`:
```
[...]
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
[...]
ingress-nginx service/ingress-nginx-controller LoadBalancer 10.43.237.255 10.62.94.246 80:30312/TCP,443:30366/TCP,9000:31460/TCP 71m
[...]
```
Test:
```
dominik@muggler:~$ curl -s http://10.62.94.246:9000
<html>
<head><title>400 Bad Request</title></head>
<body>
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx/1.19.2</center>
</body>
</html>
```