# Ingress Controller muss aktiviert sein
microk8s enable ingress
cd
mkdir -p manifests
cd manifests
mkdir abi
cd abi
# apple.yml
# vi apple.yml
kind: Pod
apiVersion: v1
metadata:
name: apple-app
labels:
app: apple
spec:
containers:
- name: apple-app
image: hashicorp/http-echo
args:
- "-text=apple"
---
kind: Service
apiVersion: v1
metadata:
name: apple-service
spec:
selector:
app: apple
ports:
- protocol: TCP
port: 80
targetPort: 5678 # Default port for image
kubectl apply -f apple.yml
# banana
# vi banana.yml
kind: Pod
apiVersion: v1
metadata:
name: banana-app
labels:
app: banana
spec:
containers:
- name: banana-app
image: hashicorp/http-echo
args:
- "-text=banana"
---
kind: Service
apiVersion: v1
metadata:
name: banana-service
spec:
selector:
app: banana
ports:
- port: 80
targetPort: 5678 # Default port for image
kubectl apply -f banana.yml
# Ingress
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: example-ingress
annotations:
ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx
rules:
- http:
paths:
- path: /apple
backend:
serviceName: apple-service
servicePort: 80
- path: /banana
backend:
serviceName: banana-service
servicePort: 80
# ingress
kubectl apply -f ingress.yml
kubectl get ing
# Hints
# 1. Which resources does our version of kubectl support
# Can we find Ingress as "Kind" here.
kubectl api-ressources
# 2. Let's see, how the configuration works
kubectl explain --api-version=networking.k8s.io/v1 ingress.spec.rules.http.paths.backend.service
# now we can adjust our config
# in kubernetes 1.22.2 - ingress.yml needs to be modified like so.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
annotations:
ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx
rules:
- http:
paths:
- path: /apple
pathType: Prefix
backend:
service:
name: apple-service
port:
number: 80
- path: /banana
pathType: Prefix
backend:
service:
name: banana-service
port:
number: 80