{"id":21605497,"url":"https://github.com/teaguestockwell/aks-nodejs-cd","last_synced_at":"2026-04-05T22:02:56.809Z","repository":{"id":45702967,"uuid":"514118042","full_name":"teaguestockwell/aks-nodejs-cd","owner":"teaguestockwell","description":"A template for continuous delivery of a node service to Azure Kubernetes Service","archived":false,"fork":false,"pushed_at":"2022-08-15T02:28:40.000Z","size":788,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-24T19:15:16.441Z","etag":null,"topics":["express","helm","jest","kubernetes","supertest","webpack"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/teaguestockwell.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"license","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-07-15T03:11:26.000Z","updated_at":"2022-08-15T02:32:32.000Z","dependencies_parsed_at":"2022-08-19T12:20:47.583Z","dependency_job_id":null,"html_url":"https://github.com/teaguestockwell/aks-nodejs-cd","commit_stats":null,"previous_names":[],"tags_count":0,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/teaguestockwell%2Faks-nodejs-cd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/teaguestockwell%2Faks-nodejs-cd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/teaguestockwell%2Faks-nodejs-cd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/teaguestockwell%2Faks-nodejs-cd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/teaguestockwell","download_url":"https://codeload.github.com/teaguestockwell/aks-nodejs-cd/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244242379,"owners_count":20421868,"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":["express","helm","jest","kubernetes","supertest","webpack"],"created_at":"2024-11-24T20:14:10.353Z","updated_at":"2025-12-31T00:16:03.969Z","avatar_url":"https://github.com/teaguestockwell.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![MIT License][license-shield]][license-url]\n[![LinkedIn][linkedin-shield]][linkedin-url]\n\n[license-shield]: https://img.shields.io/github/license/teaguestockwell/aks-nodejs-cd.svg\n[license-url]: https://github.com/teaguestockwell/aks-nodejs-cd/blob/master/licence.txt\n[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?logo=linkedin\u0026colorB=555\n[linkedin-url]: https://www.linkedin.com/in/teague-stockwell/\n\n\u003cbr /\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./public/ship.png\" alt=\"Logo\" width=\"450\"\u003e\n\n  \u003ch3 align=\"center\"\u003eAKS Node CD\u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/teaguestockwell/aks-nodejs-cd/issues\"\u003eReport Bug\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/p\u003e\n\n\u003cdetails open=\"open\"\u003e\n  \u003csummary\u003e\u003ch2 style=\"display: inline-block\"\u003eTable of Contents\u003c/h2\u003e\u003c/summary\u003e\n    \u003cli\u003e\u003ca href=\"#about-the-project\"\u003eAbout The Project\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#pre-requisites\"\u003ePre Requisites\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#getting-started\"\u003eGetting Started\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#deployment\"\u003eDeployment\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#helpful-links\"\u003eHelpful Links\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#roadmap\"\u003eRoadmap\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#license\"\u003eLicense\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contact\"\u003eContact\u003c/a\u003e\u003c/li\u003e\n\u003c/details\u003e\n\n# About The Project\nA template for continuous delivery of a nodejs service to Azure Kubernetes Service\n\n### Node Service\n- jest\n- supertest\n- prettier\n- eslint\n- typescript\n- webpack\n- local docker builds\n- babel \n- rest client\n- autocannon\n\n### Pipeline\n1. lints\n1. unit / integration tests\n1. compiles\n1. webpack bundles\n1. builds docker image\n1. publishes the image to an azure container registry\n1. syncs github action secrets to the aks cluster\n1. triggers a rolling deployment of the image to the cluster\n\n### Deployment\n- cert manager\n- nginx https ingress\n\n# Pre Requisites\n- docker\n- git\n- node\n\n# Getting Started\nTo get a local copy up and running follow these simple steps.\n\n1. use this template to create a new repo\n1. clone your new repo\n1. install dependencies\n```sh\nyarn\n```\n4. run the server\n```sh\nyarn docker:start\n```\n5. navigate to http://localhost:3000\n\n# Deployment\n### Secrets and Components\n- create a container registry in azure\n- grep `buildablecr0.azurecr.io` and replace it with your login container registry login\n- grep `node-boilerplate` and replace it with a name for your project\n- create an aks cluster with this config ![config](./public/aks.png)\n- create a github action secret named `REGISTRY_USERNAME` with the value of the registry username\n- create a github action secret named `REGISTRY_PASSWORD` with the value of the registry password\n- create a github action secret named `SECRETS` with the value of `{\"jwt\": \"abc123\"}` secret used to verify req.headers.authorization\n- create github action secret named `KUBE_CONFIG` with the yml from `az aks get-credentials --resource-group k8s-demo-ss --name k8s-demo-cluster-ss --file secret.kubeconfig`\n\n### HTTPS Ingress\n1. grep `node-boiler.teaguestockwell.com` and replace it with the the host you assigned to the a record\n1. grep `tsappdevelopment@gmail.com` and replace it with your email\n1. `helm repo add cert-manager https://charts.jetstack.io`\n1. `helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx`\n1. `helm install cert-manager cert-manager/cert-manager --set installCRDs=true`\n1. `helm install nginx-ingress ingress-nginx/ingress-nginx`\n1. create an a record for the ip address of the ingress controller. This can be found using the external ip listed when running `kubectl get svc` ![dns](./public/dns.png)\n1. wait for the dns to propagate, you can verify this when `ping $host` matches the ip address you set in the a record\n1. apply the ingress controller to the cluster `kubectl apply -f k8/ingress.yml`\n1. apply the cert issuer to the cluster `kubectl apply -f k8/issuer.yml`\n1. bump the pipeline / manually redeploy as needed\n\n## Helpful Links\n- https://cert-manager.io/docs/tutorials/acme/nginx-ingress\n\n## Roadmap\nSee the [open issues](https://github.com/teaguestockwell/aks-nodejs-cd/issues) for a list of proposed features (and known issues).\n\n## License\nDistributed under the MIT License. See `LICENSE` for more information.\n\n## Contact\nTeague Stockwell - [LinkedIn](https://www.linkedin.com/in/teague-stockwell)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fteaguestockwell%2Faks-nodejs-cd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fteaguestockwell%2Faks-nodejs-cd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fteaguestockwell%2Faks-nodejs-cd/lists"}