{"id":21873764,"url":"https://github.com/archisman-mridha/aks-masterclass","last_synced_at":"2026-05-03T23:37:27.824Z","repository":{"id":173302416,"uuid":"650518726","full_name":"Archisman-Mridha/aks-masterclass","owner":"Archisman-Mridha","description":"Learning about Azure Kubernetes Service","archived":false,"fork":false,"pushed_at":"2023-06-12T23:33:35.000Z","size":31,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-21T23:16:38.701Z","etag":null,"topics":["aks","aks-cluster","aks-kubernetes-cluster","azure","azure-devops","cloud","devops","infrastructure-as-code","managed-kubernetes-cluster","terraform"],"latest_commit_sha":null,"homepage":"https://www.udemy.com/course/azure-kubernetes-service-with-azure-devops-and-terraform/","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Archisman-Mridha.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-06-07T08:36:44.000Z","updated_at":"2023-06-07T08:38:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"a988d93f-ff65-4b21-9906-8fc252f1b1ad","html_url":"https://github.com/Archisman-Mridha/aks-masterclass","commit_stats":null,"previous_names":["archisman-mridha/aks-masterclass"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Archisman-Mridha/aks-masterclass","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Archisman-Mridha%2Faks-masterclass","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Archisman-Mridha%2Faks-masterclass/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Archisman-Mridha%2Faks-masterclass/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Archisman-Mridha%2Faks-masterclass/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Archisman-Mridha","download_url":"https://codeload.github.com/Archisman-Mridha/aks-masterclass/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Archisman-Mridha%2Faks-masterclass/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264890029,"owners_count":23678825,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aks","aks-cluster","aks-kubernetes-cluster","azure","azure-devops","cloud","devops","infrastructure-as-code","managed-kubernetes-cluster","terraform"],"created_at":"2024-11-28T07:09:28.710Z","updated_at":"2026-05-03T23:37:22.805Z","avatar_url":"https://github.com/Archisman-Mridha.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Azure Kubernetes Service\n\nAKS (Azure Kubernetes Service) is highly available, secure and fully managed Kubernetes service from Azure.\n\n## Notes\n\n- While creating the AKS cluster, Azure creates some default StorageClasses for us (like *`default`*, *`managed-premium`*, *`azurefile`* etc.). **Reclaim policy for these StorageClasses is \"delete\"** (when we delete a PV, the underlying Azure Disk will also be deleted).\n\n- An **Azure disk cannot be mounted to multiple pods at the same time**. But in case of **a file residing in Azure File Shares** it is possible. By default, in the AKS cluster, 2 StorageClasses are created - *`azurefile`* (uses Standard LRS) and *`azurefile-premium`* (uses Premium LRS). If you want to use some other Azure File Shares tier (like Standard GRS, Standard ZRS), then you can create a custom StorageClass.\n\n- Run these commands to **install** *`NGINX ingress controller`* inside the AKS cluster -\n  ```bash\n  helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx \u0026\u0026\n    helm repo add stable https://charts.helm.sh/stable\n  helm repo update\n\n  helm install \\\n    -f ./kubernetes/helm/ingress-nginx.values.yaml \\\n    ingress-nginx ingress-nginx/ingress-nginx \\\n    --create-namespace --namespace ingress-nginx\n\n  # Check status of the installation\n  kubectl --namespace ingress-nginx get services -o wide -w ingress-nginx-controller\n  ```\n\n- A **domain** (for example - google.com) **is a unique name in the Domain Name system**. **With a domain, multiple DNS records** (like mail.google.com, drive.google.com etc.) **can be associated**. A *`DNS Zone`* **keeps track of all these DNS records associated with that domain**.\n\n  \u003e Azure doesn't have any service using which we can buy domains (**it isn't a domain registrar**), but **it can host DNS Zones for our existing domains**.\n\n- *`Kubernetes External DNS`* - DNS records are automatically created (in the DNS Zone) when we mention them in the Ingress hostname.\n\n  You can explore it more here - https://github.com/kubernetes-sigs/external-dns.\n\n  Command to **create the Kubernetes secret containing Azure DNS config** (which is required by external DNS) -\n  ```bash\n  kubectl create secret generic azure-dns-config \\\n    --from-file ./kubernetes/external-dns/azure-dns.config.json\n  ```\n\n- *`Cert Manager`* is a **native Kubernetes certificate management controller**. It can help with issuing certificates from a variety of sources such as Let's Encrypt, Hashicorp Vault etc. It will **ensure that TLS certificates are up to date** and if not then **it will try to renew those certificates before expiry**.\n\n  You can read more about Cert-Manager here - https://cert-manager.io/docs\n\n  Command used to install Cert Manager -\n  ```bash\n  # TODO: Understand why this is done.\n  kubectl label namespace ingress-nginx cert-manager.io/disable-validation=true\n\n  kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.12.0/cert-manager.yaml\n  ```\n\n- *`Cluster Autoscaler`* -\n\n  To test the Horizontal node autoscaler, you can use these commands -\n  ```bash\n  kubectl apply -f ./kubernetes/apps/whoami/deployment.yaml\n\n  # Scale up the whoami application to 100 replicas.\n  # The number of nodes will also be scaled up automatically.\n  kubectl scale --replicas=100 deploy whoami\n\n  # Scale down the whoami application to 1 replica.\n  # The number of nodes will also be scaled down automatically.\n  kubectl scale --replicas=1 deploy whoami\n  ```\n\n  Since **metric-server is installed by default in case of AKS** (unlike EKS), we can get started directly with Horizontal Pod Autoscaling. Run this command, to generate load for the whoami application pods and see them autoscale -\n  ```\n  kubectl run apache-bench -i --tty --rm --image=httpd -- ab -n 500000 -c 10000 http://whoami.default.svc.cluster.local/\n  ```\n  **The default scaledown period in case of HPA is 5 minutes**. Even if the load decreases, the pods will not scaledown before 5 minutes.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farchisman-mridha%2Faks-masterclass","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farchisman-mridha%2Faks-masterclass","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farchisman-mridha%2Faks-masterclass/lists"}