mirror of
https://github.com/FlipsideCrypto/convox.git
synced 2026-02-06 10:56:56 +00:00
use redis inside the cluster for the router (#64)
This commit is contained in:
parent
73384a665c
commit
f980230d5e
121
terraform/redis/k8s/main.tf
Normal file
121
terraform/redis/k8s/main.tf
Normal file
@ -0,0 +1,121 @@
|
||||
provider "kubernetes" {
|
||||
version = "~> 1.10"
|
||||
}
|
||||
|
||||
locals {
|
||||
host = "${kubernetes_service.redis.metadata.0.name}.${kubernetes_service.redis.metadata.0.namespace}.svc.cluster.local"
|
||||
port = "6379"
|
||||
}
|
||||
|
||||
resource "kubernetes_persistent_volume_claim" "data" {
|
||||
metadata {
|
||||
namespace = var.namespace
|
||||
name = "redis-${var.name}-data"
|
||||
|
||||
labels = {
|
||||
system = "convox"
|
||||
}
|
||||
}
|
||||
|
||||
spec {
|
||||
access_modes = ["ReadWriteOnce"]
|
||||
resources {
|
||||
requests = {
|
||||
storage = var.disk
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
resource "kubernetes_deployment" "redis" {
|
||||
metadata {
|
||||
namespace = var.namespace
|
||||
name = "redis-${var.name}"
|
||||
|
||||
labels = {
|
||||
system = "convox"
|
||||
}
|
||||
}
|
||||
|
||||
spec {
|
||||
min_ready_seconds = 1
|
||||
revision_history_limit = 0
|
||||
|
||||
selector {
|
||||
match_labels = {
|
||||
name = var.name
|
||||
scope = "system"
|
||||
system = "convox"
|
||||
type = "redis"
|
||||
}
|
||||
}
|
||||
|
||||
template {
|
||||
metadata {
|
||||
labels = {
|
||||
name = var.name
|
||||
scope = "system"
|
||||
system = "convox"
|
||||
type = "redis"
|
||||
}
|
||||
}
|
||||
|
||||
spec {
|
||||
container {
|
||||
name = "redis"
|
||||
image = "redis:4.0.10"
|
||||
image_pull_policy = "IfNotPresent"
|
||||
|
||||
port {
|
||||
container_port = 6379
|
||||
protocol = "TCP"
|
||||
}
|
||||
|
||||
volume_mount {
|
||||
name = "data"
|
||||
mount_path = "/data"
|
||||
}
|
||||
}
|
||||
|
||||
volume {
|
||||
name = "data"
|
||||
|
||||
persistent_volume_claim {
|
||||
claim_name = kubernetes_persistent_volume_claim.data.metadata.0.name
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
resource "kubernetes_service" "redis" {
|
||||
metadata {
|
||||
namespace = var.namespace
|
||||
name = "redis-${var.name}"
|
||||
|
||||
labels = {
|
||||
name = var.name
|
||||
scope = "system"
|
||||
system = "convox"
|
||||
type = "redis"
|
||||
}
|
||||
}
|
||||
|
||||
spec {
|
||||
type = "ClusterIP"
|
||||
|
||||
selector = {
|
||||
name = var.name
|
||||
scope = "system"
|
||||
system = "convox"
|
||||
type = "redis"
|
||||
}
|
||||
|
||||
port {
|
||||
port = 6379
|
||||
target_port = 6379
|
||||
protocol = "TCP"
|
||||
}
|
||||
}
|
||||
}
|
||||
15
terraform/redis/k8s/outputs.tf
Normal file
15
terraform/redis/k8s/outputs.tf
Normal file
@ -0,0 +1,15 @@
|
||||
output "addr" {
|
||||
value = "${local.host}:${local.port}"
|
||||
}
|
||||
|
||||
output "host" {
|
||||
value = local.host
|
||||
}
|
||||
|
||||
output "port" {
|
||||
value = local.port
|
||||
}
|
||||
|
||||
output "url" {
|
||||
value = "redis://${local.host}:${local.port}"
|
||||
}
|
||||
11
terraform/redis/k8s/variables.tf
Normal file
11
terraform/redis/k8s/variables.tf
Normal file
@ -0,0 +1,11 @@
|
||||
variable "disk" {
|
||||
default = "1Gi"
|
||||
}
|
||||
|
||||
variable "name" {
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "namespace" {
|
||||
type = string
|
||||
}
|
||||
@ -36,14 +36,23 @@ module "k8s" {
|
||||
release = var.release
|
||||
|
||||
env = {
|
||||
AUTOCERT = "true"
|
||||
CACHE = "redis"
|
||||
REDIS_ADDR = "${azurerm_redis_cache.cache.hostname}:${azurerm_redis_cache.cache.ssl_port}"
|
||||
REDIS_AUTH = azurerm_redis_cache.cache.primary_access_key
|
||||
REDIS_SECURE = "true"
|
||||
AUTOCERT = "true"
|
||||
CACHE = "redis"
|
||||
REDIS_ADDR = module.redis.addr
|
||||
}
|
||||
}
|
||||
|
||||
module "redis" {
|
||||
source = "../../redis/k8s"
|
||||
|
||||
providers = {
|
||||
kubernetes = kubernetes
|
||||
}
|
||||
|
||||
name = "router"
|
||||
namespace = var.namespace
|
||||
}
|
||||
|
||||
resource "kubernetes_service" "router" {
|
||||
metadata {
|
||||
namespace = var.namespace
|
||||
|
||||
@ -1,8 +0,0 @@
|
||||
resource "azurerm_redis_cache" "cache" {
|
||||
name = "${var.name}-router"
|
||||
location = data.azurerm_resource_group.rack.location
|
||||
resource_group_name = data.azurerm_resource_group.rack.name
|
||||
capacity = 0
|
||||
family = "C"
|
||||
sku_name = "Basic"
|
||||
}
|
||||
@ -32,14 +32,23 @@ module "k8s" {
|
||||
release = var.release
|
||||
|
||||
env = {
|
||||
AUTOCERT = "true"
|
||||
CACHE = "redis"
|
||||
REDIS_ADDR = "${digitalocean_database_cluster.cache.private_host}:${digitalocean_database_cluster.cache.port}"
|
||||
REDIS_AUTH = digitalocean_database_cluster.cache.password
|
||||
REDIS_SECURE = "true"
|
||||
AUTOCERT = "true"
|
||||
CACHE = "redis"
|
||||
REDIS_ADDR = module.redis.addr
|
||||
}
|
||||
}
|
||||
|
||||
module "redis" {
|
||||
source = "../../redis/k8s"
|
||||
|
||||
providers = {
|
||||
kubernetes = kubernetes
|
||||
}
|
||||
|
||||
name = "router"
|
||||
namespace = var.namespace
|
||||
}
|
||||
|
||||
resource "kubernetes_service" "router" {
|
||||
metadata {
|
||||
namespace = var.namespace
|
||||
|
||||
@ -1,7 +0,0 @@
|
||||
resource "digitalocean_database_cluster" "cache" {
|
||||
name = "${var.name}-router"
|
||||
engine = "redis"
|
||||
size = "db-s-1vcpu-1gb"
|
||||
region = var.region
|
||||
node_count = 1
|
||||
}
|
||||
@ -34,10 +34,21 @@ module "k8s" {
|
||||
env = {
|
||||
AUTOCERT = "true"
|
||||
CACHE = "redis"
|
||||
REDIS_ADDR = "${google_redis_instance.cache.host}:${google_redis_instance.cache.port}"
|
||||
REDIS_ADDR = module.redis.addr
|
||||
}
|
||||
}
|
||||
|
||||
module "redis" {
|
||||
source = "../../redis/k8s"
|
||||
|
||||
providers = {
|
||||
kubernetes = kubernetes
|
||||
}
|
||||
|
||||
name = "router"
|
||||
namespace = var.namespace
|
||||
}
|
||||
|
||||
resource "kubernetes_service" "router" {
|
||||
metadata {
|
||||
namespace = var.namespace
|
||||
|
||||
@ -1,6 +0,0 @@
|
||||
resource "google_redis_instance" "cache" {
|
||||
name = "${var.name}-router"
|
||||
memory_size_gb = 1
|
||||
|
||||
authorized_network = var.network
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user