At first setup nginx ingress on your managed cloud kubernetes cluster
create a helm-install.sh and replace the your-cluster-name here with cluster-name
#src : https://docs.microsoft.com/en-us/azure/aks/ingress-tls 
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx 
# changes context to stage 
kubectl config use-context your-cluster-name 
# Create a namespace for your ingress resources 
kubectl create namespace nginx-ingress 
# Use Helm to deploy an NGINX ingress controller 
helm upgrade --install ingress-nginx ingress-nginx/ingress-nginx \ 
    --namespace nginx-ingress \ 
    --set controller.replicaCount=3 \ 
    -f internal-ingress-web.yaml \ 
    --set controller.nodeSelector. "kubernetes\.io/os" =linux \ 
    --set defaultBackend.nodeSelector. "kubernetes\.io/os" =linux 
Give it to execute permission
chmod +x ./helm-install.sh 
Then create the config yaml named internal-ingress-web.yaml
controller : 
   config : 
     use-forwarded-headers :  "true" 
     server-tokens :  "False" 
     client-header-buffer-size :  64k 
     proxy-buffer-size :  64k 
     proxy-body-size :  10m 
     #proxy-read-timeout: "600" 
     #proxy-send-timeout: "600" 
Then run ./helm-install.sh
Check pod, services, and external load balancer ip
kubectl get po -n nginx-ingress 
kubectl get svc -n nginx-ingress 
Then create the deployment.yaml, service.yaml, and ingress.yaml
deployment.yaml 
apiVersion :  apps/v1 
kind :  Deployment 
metadata : 
   name :  webclient-angular-crud 
spec : 
   selector : 
     matchLabels : 
       app :  webclient-angular-crud 
   replicas :  1 
   template : 
     metadata : 
       labels : 
         app :  webclient-angular-crud 
     spec : 
       containers : 
        -  name :  webclient-angular-crud 
           image :  shawon10/webclient-angular-crud:85 
           imagePullPolicy :  Always 
           ports : 
            -  containerPort :  80 
service.yaml
apiVersion :  v1 
kind :  Service 
metadata : 
   name :  webclient-angular-crud-service 
spec : 
   selector : 
     app :  webclient-angular-crud 
   ports : 
    -  protocol :  "TCP" 
       port :  80 
   type :  ClusterIP 
ingress.yaml
Change the domain here and replace with your own domain 
apiVersion :  networking.k8s.io/v1 
kind :  Ingress 
metadata : 
   annotations : 
     kubernetes.io/ingress.class :  nginx 
     nginx.ingress.kubernetes.io/configuration-snippet :  | 
      more_set_headers "X-Frame-Options: Deny"; 
      more_set_headers "X-Xss-Protection: 1; mode=block"; 
      more_set_headers "X-Content-Type-Options: nosniff"; 
   name :  webclient-angular-crud-ingress 
spec : 
   rules : 
    -  host :  microservices.devops.com 
       http : 
         paths : 
        -  backend : 
             service : 
               name :  webclient-angular-crud-service 
               port :  
                 number :  80 
           path :  / 
           pathType :  ImplementationSpecific 
Finally apply all
kubectl apply -f . 
Check the pods
kubectl get po 
Then go to your domain dns management and add A records and point to your nginx ingress Loadbalancer external ip
  Finally access the frontend site live....
Check this video for details
VIDEO 
Download Coding Interview Book and Get More Tutorials for Coding and Interview Solution: Click Here  Download System Design Interview Book and Get More Tutorials and Interview Solution: Click Here   Do you need more Guidance or Help? Then Book 1:1 Quick Call with Me: Click Here  
                            I am Ashadullah Shawon. I am a Software Engineer. I studied Computer Science and Engineering (CSE) at RUET. I Like To Share Knowledge. Learn More: 
Click Here 
 
 
 
0 comments:
Post a Comment