abdelazizhd / devops

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Technical Interview Exercise

The example project is structured in 3 directories

  • charts
  • sources
  • terraform

Sources

Source files of an example API in a small development environment using docker compose. It has two services:

  • app: API implementation.
  • db: Mysql server used by the API.

Charts

Helm charts to deploy the necessary resources in the AKS cluster.

Terraform

Terraform code to provision an AKS cluster with the desired infrastructure.


Requirements

Name Version
terraform >=1.0
azurerm ~>3.0
helm = 2.12.1
random ~>3.0

Providers

Name Version
azurerm 3.99.0

Modules

Name Source Version
aks Azure/aks/azurerm 8.0.0
api ./modules/api n/a
database ./modules/database n/a
network Azure/network/azurerm 5.3.0
nic ./modules/nginx-ingress-controller n/a

Resources

Name Type
azurerm_resource_group.rg resource

Inputs

Name Description Type Default Required
aks_namespace Environment. string "tech-interview" no
domain Domain name. string "tech-interview.local" no
environment Environment. string "dev" no
image_repository Image repository. string "myacrregistry.azurecr.io/myimage/tech-interview" no
mysql_database Database name. string n/a yes
mysql_username Username. string n/a yes
resource_group_location Location of the resource group. string "westeurope" no
resource_group_name Name of the resource group. string "westeurope" no

Outputs

No outputs.


Database module

Requirements

No requirements.

Providers

Name Version
helm n/a
random n/a

Modules

No modules.

Resources

Name Type
helm_release.mysql resource
random_password.password resource

Inputs

Name Description Type Default Required
database Database name. string n/a yes
name Release name. string n/a yes
namespace Namespace. string "tech-interview" no
password User password string null no
root_password Root password string null no
username Username. string n/a yes

Outputs

Name Description
host n/a
password n/a
root_password n/a

Nginx Ingress Controller module

Requirements

No requirements.

Providers

Name Version
helm n/a

Modules

No modules.

Resources

Name Type
helm_release.nginx-ingress-controller resource

Inputs

Name Description Type Default Required
name Release name. string n/a yes
namespace Namespace. string "tech-interview" no

Outputs

No outputs.


API module

Requirements

No requirements.

Providers

Name Version
helm n/a

Modules

No modules.

Resources

Name Type
helm_release.api resource

Inputs

Name Description Type Default Required
database_host Database host. string n/a yes
database_name Database name. string n/a yes
database_password Database password. string n/a yes
database_user Database user. string n/a yes
domain Domain name. string n/a yes
image_repository Image repository. string n/a yes
name Release name. string "api" no
namespace Namespace. string "tech-interview" no

Outputs

No outputs.

About


Languages

Language:HCL 86.8%Language:JavaScript 11.6%Language:Dockerfile 1.6%