Kubernetes/Cluster/Ingress-NGINX

From Omnia
Jump to navigation Jump to search

Ingress with NGINX

Kubernetes Ingress with NGINX Ingress Controller Example
https://spacelift.io/blog/kubernetes-ingress
Installation Guide - Ingress-Nginx Controller
https://kubernetes.github.io/ingress-nginx/deploy/
kubernetes/ingress-nginx: Ingress-NGINX Controller for Kubernetes (GitHub)
https://github.com/kubernetes/ingress-nginx/

Install ingress manifest according to article #1:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.3.0/deploy/static/provider/cloud/deploy.yaml

Install ingress manifest according to article #2:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.2/deploy/static/provider/cloud/deploy.yaml

Latest release v1.9.5 as of 2023.12.22:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.9.5/deploy/static/provider/cloud/deploy.yaml

v1.9.4 release:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.9.4/deploy/static/provider/cloud/deploy.yaml

Or latest code:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/cloud/deploy.yaml


To remove:

kubectl delete -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.9.5/deploy/static/provider/cloud/deploy.yaml


Get ingress-nginx pods:

kubectl get pods --namespace ingress-nginx
# k get pods -A
NAMESPACE       NAME                                        READY   STATUS      RESTARTS      AGE
ingress-nginx   ingress-nginx-admission-create-5rwph        0/1     Completed   0             40s
ingress-nginx   ingress-nginx-admission-patch-vt8rt         0/1     Completed   1             40s
ingress-nginx   ingress-nginx-controller-7b498b6db5-2t8rv   1/1     Running     0             40s

Stuck waiting for external-ip

# kubectl get service ingress-nginx-controller --namespace=ingress-nginx
NAME                       TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
ingress-nginx-controller   LoadBalancer   10.107.58.156   <pending>     80:31044/TCP,443:30097/TCP   6m15s
k get service
k get service -A
kubectl rollout restart deployment ingress-nginx-controller -n ingress-nginx

k get pods -A
# k get pods -A
NAMESPACE       NAME                                        READY   STATUS              RESTARTS   AGE
ingress-nginx   ingress-nginx-admission-create-s9q5r        0/1     ContainerCreating   0          34m
ingress-nginx   ingress-nginx-admission-patch-4w2pp         0/1     ContainerCreating   0          34m
ingress-nginx   ingress-nginx-controller-7b498b6db5-fh5hr   0/1     ContainerCreating   0          34m
...
# k -n ingress-nginx describe pod ingress-nginx-admission-create-s9q5r
  Warning  FailedCreatePodSandBox  10m                    kubelet            Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "effe0db2192b4ab7545e0cd28dee492c45caa433f71a201633015c6f0c2a1d8e" network for pod "ingress-nginx-admission-create-s9q5r": networkPlugin cni failed to set up pod "ingress-nginx-admission-create-s9q5r_ingress-nginx" network: plugin type="flannel" failed (add): failed to delegate add: failed to set bridge addr: "cni0" already has an IP address different from 10.244.3.1/24

change IP of ingress

ingress-nginx-controller


apiVersion: v1
kind: Service
metadata:
  name: somename-lb
  namespace: namespace
  labels:
    app: someapp
spec:
  type: LoadBalancer
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
    name: http
  selector:
    app: someapp
  loadBalancerIP: xxx.xxx.xxx.xxx
Kubernetes/MetalLB - Is there a way to set an IP address for a service without individual address-pools? : kubernetes
https://www.reddit.com/r/kubernetes/comments/gy2evb/kubernetesmetallb_is_there_a_way_to_set_an_ip/


ingress-nginx-controller
apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/component: controller
    app.kubernetes.io/instance: ingress-nginx
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
    app.kubernetes.io/version: 1.9.4
  name: ingress-nginx-controller
  namespace: ingress-nginx
spec:
  externalTrafficPolicy: Local
  ipFamilies:
  - IPv4
  ipFamilyPolicy: SingleStack
  ports:
  - appProtocol: http
    name: http
    port: 80
    protocol: TCP
    targetPort: http
  - appProtocol: https
    name: https
    port: 443
    protocol: TCP
    targetPort: https
  selector:
    app.kubernetes.io/component: controller
    app.kubernetes.io/instance: ingress-nginx
    app.kubernetes.io/name: ingress-nginx
  type: LoadBalancer
k get service ingress-nginx-controller -n ingress-nginx -o yaml > controller.yaml
...
status:
  loadBalancer:
    ingress:
    - ip: 192.168.108.80

Edit IP address... delete service

k delete service ingress-nginx-controller -n ingress-nginx

k apply -f controller.yaml


Back in business!