generated from MicrosoftLearning/INF99X-SampleCourse
-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Open
Description
Description
We need to enhance the repository by adding deployment capabilities using Kubernetes and Terraform.
The goal is to support both container-orchestrated deployments (Kubernetes) and infrastructure-as-code (Terraform), in addition to the existing Bicep configurations.
User Story
As a DevOps engineer,
I want to add Kubernetes deployment manifests and Terraform scripts,
So that the application can be deployed and managed through both Kubernetes clusters and Terraform workflows.
Acceptance Criteria
Kubernetes Deployment Files
- Create standard Kubernetes YAML manifests under
/deploy/k8s/
, including:- Deployment for the .NET containerized application.
- Service exposing the application (ClusterIP/LoadBalancer).
- ConfigMap and Secret for configuration management.
- Ingress (if required) to support external access via an ingress controller.
- Ensure manifests are compatible with common managed clusters (AKS, EKS, GKE).
- Provide environment-specific override examples (e.g., using Helm or Kustomize).
Terraform Deployment Files
- Create Terraform configurations under
/deploy/terraform/
. - Define infrastructure-as-code to provision necessary resources:
- Kubernetes cluster
- Networking
- Compute/storage components
- Structure files using modules and input variables for dev/staging/prod environments.
- Provide a
README.md
with clear usage instructions (terraform init
,plan
,apply
). - Externalize variables using
terraform.tfvars
or similar.
Consistency & Documentation
- Ensure all IaC follows best practices.
- Add/update
README.md
to explain:- Project folder structure
- How to deploy via Kubernetes
- How to deploy via Terraform
- Dependencies required (container registry, credentials, etc.)
Out of Scope
- No modifications required for existing Bicep deployment files (they must remain intact).
Definition of Done (DoD)
- Kubernetes manifests validate successfully with:
kubectl apply --dry-run=client
Copilot
Metadata
Metadata
Assignees
Labels
No labels