An open API service indexing awesome lists of open source software.

https://github.com/atulkamble/k8s-project

23-09-2025 | kubernetes, kind, nginx
https://github.com/atulkamble/k8s-project

k8s kind nginx

Last synced: about 1 month ago
JSON representation

23-09-2025 | kubernetes, kind, nginx

Awesome Lists containing this project

README

          

# Kubernetes Project Scaffold

This repository provides a minimal, production-ready Kubernetes scaffold using Kustomize with dev and prod overlays.

- See docs: [Architecture](docs/architecture.md), [Theory](docs/theory.md)

## Prerequisites
- kubectl
- kustomize (or kubectl >= 1.14 which includes `-k`)
- kind or a Kubernetes cluster
- (AWS) awscli and eksctl with credentials configured

## Structure
```
k8s-project/
LICENSE
Makefile
README.md
kind-config.yaml
eksctl-config.yaml
.github/
workflows/
ci.yml
base/
deployment.yaml
ingress.yaml
kustomization.yaml
namespace.yaml
service.yaml
overlays/
dev/
kustomization.yaml
patch-deployment.yaml
patch-ingress.yaml
patch-service.yaml
prod/
kustomization.yaml
patch-ingress.yaml
patch-service.yaml
scripts/
kind-up.sh
kind-down.sh
eks-up.sh
eks-down.sh
docs/
architecture.md
theory.md
```

## Quick start (kind)
```bash
make kind-up
make apply-dev
open http://localhost:3000
```

## Quick start (AWS EKS 2-node)
```bash
make eks-up # creates EKS in us-east-1 by default
make apply-prod
kubectl get svc -n demo | grep web
# copy the EXTERNAL-IP and open http://
```

To customize:
```bash
make eks-up EKS_CLUSTER_NAME=myproj EKS_REGION=us-west-2
```

Tear down:
```bash
make eks-down EKS_CLUSTER_NAME=myproj EKS_REGION=us-west-2
```

## Apply/delete
```bash
make apply-dev # apply dev overlay (NodePort 30080 -> localhost:3000)
make delete-dev # delete dev overlay
make apply-prod # apply prod overlay (Service LoadBalancer)
make delete-prod # delete prod overlay
```

## Other handy targets
```bash
make help # list all targets
make diff # show server diff for current OVERLAY (default dev)
make build # render manifests to build.yaml
make context # show kubectl context and namespace
```

## Configuration
- `OVERLAY` controls which overlay is used (default `dev`).
- `NAMESPACE` optionally sets `kubectl -n` for commands.
- `CLUSTER_NAME` and `KIND_CONFIG` customize Kind cluster creation.
- `EKS_CLUSTER_NAME`, `EKS_REGION`, and `EKSCTL_CONFIG` customize EKS creation.

## Notes
- Base uses `nginx` as a placeholder app. Replace image and manifests as needed.
- Ingress hostnames are placeholders. For Kind, use `http://localhost:3000`. For EKS, use the Service `EXTERNAL-IP` unless you configure an ALB Ingress Controller and DNS.

## 👨‍💻 Author

**Atul Kamble**

- 💼 [LinkedIn](https://www.linkedin.com/in/atuljkamble)
- 🐙 [GitHub](https://github.com/atulkamble)
- 🐦 [X](https://x.com/Atul_Kamble)
- 📷 [Instagram](https://www.instagram.com/atuljkamble)
- 🌐 [Website](https://www.atulkamble.in)

---