Skip to content

Instantly share code, notes, and snippets.

@rivernews
Created December 9, 2019 00:02
Show Gist options
  • Save rivernews/d86974ffbd2b6bdb4c00445bd4ab0fa5 to your computer and use it in GitHub Desktop.
Save rivernews/d86974ffbd2b6bdb4c00445bd4ab0fa5 to your computer and use it in GitHub Desktop.
# terraform doc: https://www.terraform.io/docs/providers/kubernetes/r/deployment.html
resource "kubernetes_deployment" "app" {
metadata {
name = "my-postgres-deployment"
namespace = "my-postgres-namespace"
labels = {
app = "postgres"
}
}
spec {
replicas = 1 # just spin up one entity, no replication.
selector {
match_labels = {
app = "postgres"
}
}
template {
metadata {
labels = {
app = "postgres"
}
}
spec {
service_account_name = "TODO: please setup your kubernetes service account first, then reference to it here"
container {
name = "postgres"
image = "postgres-cdc:latest"
# terraform official doc: https://www.terraform.io/docs/providers/kubernetes/r/deployment.html#image_pull_policy
# private image registry: https://stackoverflow.com/questions/49639280/kubernetes-cannot-pull-image-from-private-docker-image-repository
image_pull_policy = "Always"
port {
container_port = "5432"
}
env {
name = "POSTGRES_DB"
value = "default_database"
}
env {
name = "POSTGRES_USER"
value = "admin"
}
env {
name = "POSTGRES_PASSWORD"
value = "your-postgres-database-passeword"
}
env {
name = "DATA_VOLUME_MOUNT"
value = "/data"
}
# resources {
# limits {
# cpu = "0.5"
# memory = "512Mi"
# }
# requests {
# cpu = "250m"
# memory = "50Mi"
# }
# }
}
# persistent volume setup
# based on https://www.digitalocean.com/docs/kubernetes/how-to/add-volumes/
init_container {
name = "my-postgres-initial-container"
image = "busybox"
command = ["/bin/chmod","-R","777", "/data"]
volume_mount {
name = "my-postgres-volume"
mount_path = "/data"
}
}
volume {
name = "my-postgres-volume"
persistent_volume_claim {
claim_name = kubernetes_persistent_volume_claim.app_digitalocean_pvc.0.metadata.0.name
}
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment