Skip to content

Add Kubernetes and Terraform Deployment Support #400

@LuizMacedo

Description

@LuizMacedo

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

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions