This commit is contained in:
Hrankin, Aleksandr (contracted)
2026-02-19 11:34:13 +00:00
commit f243f440c3
191 changed files with 6183 additions and 0 deletions

View File

@@ -0,0 +1,19 @@
resource "helm_release" "ceph_csi_rbd" {
name = "ceph-csi-rbd"
namespace = kubernetes_namespace_v1.this.metadata[0].name
repository = "https://ceph.github.io/csi-charts"
chart = "ceph-csi-rbd"
version = var.chart_version
create_namespace = false
values = [yamlencode({
csiConfig = [{
clusterID = var.ceph_cluster_id
monitors = var.ceph_monitors
}]
provisioner = {
replicaCount = 1
}
})]
}

View File

@@ -0,0 +1,3 @@
resource "kubernetes_namespace_v1" "this" {
metadata { name = var.namespace }
}

View File

@@ -0,0 +1,15 @@
variable "namespace" {
type = string
}
variable "chart_version" {
type = string
}
variable "ceph_cluster_id" {
type = string
}
variable "ceph_monitors" {
type = list(string)
}

View File

@@ -0,0 +1,6 @@
terraform {
required_providers {
helm = { source = "hashicorp/helm" }
kubernetes = { source = "hashicorp/kubernetes" }
}
}

View File

@@ -0,0 +1,13 @@
resource "kubernetes_secret_v1" "csi_rbd_secret" {
metadata {
name = "csi-rbd-secret"
namespace = var.namespace
}
data = {
userID = var.ceph_user_id
userKey = var.ceph_user_key
}
type = "Opaque"
}

View File

@@ -0,0 +1,27 @@
resource "kubernetes_storage_class_v1" "ceph_rbd" {
metadata {
name = "ceph-rbd"
# если хочешь сделать default:
# annotations = {
# "storageclass.kubernetes.io/is-default-class" = "true"
# }
}
storage_provisioner = "rbd.csi.ceph.com"
reclaim_policy = "Delete"
volume_binding_mode = "Immediate"
allow_volume_expansion = true
parameters = {
clusterID = var.ceph_cluster_id
pool = var.ceph_rbd_pool
# ВАЖНО: это строки-ключи, строго без пробелов и без "/"
"csi.storage.k8s.io/provisioner-secret-name" = kubernetes_secret_v1.csi_rbd_secret.metadata[0].name
"csi.storage.k8s.io/provisioner-secret-namespace" = kubernetes_secret_v1.csi_rbd_secret.metadata[0].namespace
"csi.storage.k8s.io/node-stage-secret-name" = kubernetes_secret_v1.csi_rbd_secret.metadata[0].name
"csi.storage.k8s.io/node-stage-secret-namespace" = kubernetes_secret_v1.csi_rbd_secret.metadata[0].namespace
imageFeatures = "layering"
}
}

View File

@@ -0,0 +1,20 @@
variable "namespace" {
type = string
}
variable "ceph_cluster_id" {
type = string
}
variable "ceph_rbd_pool" {
type = string
}
variable "ceph_user_id" {
type = string
}
variable "ceph_user_key" {
type = string
sensitive = true
}

View File

@@ -0,0 +1,5 @@
terraform {
required_providers {
kubernetes = { source = "hashicorp/kubernetes" }
}
}