How can I add my external domain "uat.test.com " to my kubernetes cluster by using nginx-ingress?

1/22/2021

I am new for kubernetes and Have an issue for ingress nginx for external domain from godaddy. it is called " https://uat.test.com " .I created some yaml for nginx-ingress but I couldn't do that. How can I add "uat.test.com " to my kubernetes cluster by using nginx-ingress?

Below ; They are my steps for my funny and stressful advantures.

1) Create group and namespace :

az group create --name aks-group --location eastus2

az aks create --resource-group aks-group --name aks-cluster --node-count 3 --generate-ssh-keys -s Standard_B2ms --disable-rbac

kubectl create namespace ingress-basic

2) Credentials:

az aks get-credentials -g aks-group -n aks-cluster

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.43.0/deploy/static/provider/cloud/deploy.yaml
 
az aks get-credentials -g aks-group -n aks-cluster

kubectl --namespace ingress-basic get services -o wide -w nginx-ingress-ingress-nginx-controller

3) install ingress-nginx:

helm install ingress-nginx ingress-nginx/ingress-nginx
   
helm repo update
	
helm install nginx-ingress ingress-nginx/ingress-nginx --namespace ingress-basic --set controller.replicaCount=2
	 
kubectl --namespace ingress-basic get services -o wide -w nginx-ingress-ingress-nginx-control

enter image description here aks-helloworld-one.yaml :

apiVersion: apps/v1
kind: Deployment
metadata:
  name: aks-helloworld-one  
spec:
  replicas: 1
  selector:
    matchLabels:
      app: aks-helloworld-one
  template:
    metadata:
      labels:
        app: aks-helloworld-one
    spec:
      containers:
      - name: aks-helloworld-one
        image: mcr.microsoft.com/azuredocs/aks-helloworld:v1
        ports:
        - containerPort: 80
        env:
        - name: TITLE
          value: "Welcome to Azure Kubernetes Service (AKS)"
---
apiVersion: v1
kind: Service
metadata:
  name: aks-helloworld-one  
spec:
  type: ClusterIP
  ports:
  - port: 80
  selector:
    app: aks-helloworld-one
kubectl apply -f aks-helloworld-one.yaml --namespace ingress-basic

aks-helloworld-two.yml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: aks-helloworld-two  
spec:
  replicas: 1
  selector:
    matchLabels:
      app: aks-helloworld-two
  template:
    metadata:
      labels:
        app: aks-helloworld-two
    spec:
      containers:
      - name: aks-helloworld-two
        image: mcr.microsoft.com/azuredocs/aks-helloworld:v1
        ports:
        - containerPort: 80
        env:
        - name: TITLE
          value: "AKS Ingress Demo"
---
apiVersion: v1
kind: Service
metadata:
  name: aks-helloworld-two  
spec:
  type: ClusterIP
  ports:
  - port: 80
  selector:
    app: aks-helloworld-two
kubectl apply -f aks-helloworld-two.yaml --namespace ingress-basic

hello-world-ingress.yml:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: hello-world-ingress
  namespace: ingress-basic
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  rules:
  - host: uat.test.com 
    http:
      paths:
      - backend:
          serviceName: aks-helloworld-one
          servicePort: 80
        path: /hello-world-one(/|$)(.*)
      - backend:
          serviceName: aks-helloworld-two
          servicePort: 80
        path: /hello-world-two(/|$)(.*)
      - backend:
          serviceName: aks-helloworld-one
          servicePort: 80
        path: /(.*)
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: hello-world-ingress-static
  namespace: ingress-basic
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/rewrite-target: /static/$2
spec:
  rules:
  - http:
      paths:
      - backend:
          serviceName: aks-helloworld-one
          servicePort: 80
        path: /static(/|$)(.*)
kubectl apply -f hello-world-ingress.yaml

When I write address "https://uat.test.com "

Result or Error: enter image description here

-- ALEXALEXIYEV
azure
azure-devops
kubernetes
nginx

1 Answer

1/24/2021

// as discussed in the comments

somewhere you need to bind the public IP address of your clusters ingress controller to your DNS name. That does not happen in AKS (or anywhere in your k8s configs). You need to do that with your DNS provider.

-- silent
Source: StackOverflow