50 lines
1.3 KiB
HCL
50 lines
1.3 KiB
HCL
resource "kubernetes_namespace" "portfolio" {
|
|
metadata {
|
|
name = "my-portfolio"
|
|
}
|
|
}
|
|
|
|
resource "kubernetes_secret" "docker_secret" {
|
|
metadata {
|
|
name = "docker-registry-credentials"
|
|
namespace = "my-portfolio"
|
|
}
|
|
|
|
type = "kubernetes.io/dockerconfigjson"
|
|
|
|
data = {
|
|
".dockerconfigjson" = jsonencode({
|
|
auths = {
|
|
"${var.docker_registry_host}" = {
|
|
username = var.docker_username
|
|
password = var.docker_password
|
|
auth = base64encode("${var.docker_username}:${var.docker_password}")
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
depends_on = [kubernetes_namespace.portfolio]
|
|
}
|
|
|
|
locals {
|
|
# Read and process the YAML file with placeholders
|
|
manifest_content = templatefile("../../../kubernetes/my-portfolio/portfolioManifest.yaml", {
|
|
PORTFOLIO_HOST = var.portfolio_host
|
|
DOCKER_REGISTRY_HOST = var.docker_registry_host
|
|
})
|
|
# Split into individual documents
|
|
manifest_documents = split("---", replace(local.manifest_content, "/\\n\\s*\\n/", "---"))
|
|
}
|
|
|
|
resource "kubernetes_manifest" "portfolio_manifest" {
|
|
for_each = { for i, doc in local.manifest_documents : i => doc if trimspace(doc) != "" }
|
|
|
|
manifest = yamldecode(each.value)
|
|
|
|
field_manager {
|
|
force_conflicts = true
|
|
}
|
|
|
|
depends_on = [kubernetes_namespace.portfolio]
|
|
} |