init
This commit is contained in:
19
terraform/modules/k8s/ceph/k8s-ceph-csi-rbd/helm.tf
Normal file
19
terraform/modules/k8s/ceph/k8s-ceph-csi-rbd/helm.tf
Normal 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
|
||||
}
|
||||
})]
|
||||
}
|
||||
3
terraform/modules/k8s/ceph/k8s-ceph-csi-rbd/namespace.tf
Normal file
3
terraform/modules/k8s/ceph/k8s-ceph-csi-rbd/namespace.tf
Normal file
@@ -0,0 +1,3 @@
|
||||
resource "kubernetes_namespace_v1" "this" {
|
||||
metadata { name = var.namespace }
|
||||
}
|
||||
15
terraform/modules/k8s/ceph/k8s-ceph-csi-rbd/variables.tf
Normal file
15
terraform/modules/k8s/ceph/k8s-ceph-csi-rbd/variables.tf
Normal 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)
|
||||
}
|
||||
6
terraform/modules/k8s/ceph/k8s-ceph-csi-rbd/versions.tf
Normal file
6
terraform/modules/k8s/ceph/k8s-ceph-csi-rbd/versions.tf
Normal file
@@ -0,0 +1,6 @@
|
||||
terraform {
|
||||
required_providers {
|
||||
helm = { source = "hashicorp/helm" }
|
||||
kubernetes = { source = "hashicorp/kubernetes" }
|
||||
}
|
||||
}
|
||||
13
terraform/modules/k8s/ceph/k8s-ceph-rbd-storage/secret.tf
Normal file
13
terraform/modules/k8s/ceph/k8s-ceph-rbd-storage/secret.tf
Normal 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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
20
terraform/modules/k8s/ceph/k8s-ceph-rbd-storage/variables.tf
Normal file
20
terraform/modules/k8s/ceph/k8s-ceph-rbd-storage/variables.tf
Normal 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
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
terraform {
|
||||
required_providers {
|
||||
kubernetes = { source = "hashicorp/kubernetes" }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user