Terraform module which creates Kubernetes EBS CSI controller resources on AWS EKS.
Based on the original repo for the EBS CSI driver
data "aws_eks_cluster" "cluster" {
name = "my-eks-cluster"
}
data "aws_eks_cluster_auth" "cluster" {
name = "my-eks-cluster"
}
data "tls_certificate" "cert" {
url = data.aws_eks_cluster.cluster.identity[0].oidc[0].issuer
}
resource "aws_iam_openid_connect_provider" "openid_connect" {
client_id_list = ["sts.amazonaws.com"]
thumbprint_list = [data.tls_certificate.cert.certificates.0.sha1_fingerprint]
url = data.aws_eks_cluster.cluster.identity[0].oidc[0].issuer
}
provider "kubernetes" {
host = data.aws_eks_cluster.cluster.endpoint
cluster_ca_certificate = base64decode(data.aws_eks_cluster.cluster.certificate_authority.0.data)
token = data.aws_eks_cluster_auth.cluster.token
}
module "ebs_csi_driver_controller" {
source = "DrFaust92/ebs-csi-driver/kubernetes"
version = "<VERSION>"
ebs_csi_controller_role_name = "ebs-csi-driver-controller"
ebs_csi_controller_role_policy_name_prefix = "ebs-csi-driver-policy"
oidc_url = aws_iam_openid_connect_provider.openid_connect.url
}| Name | Version |
|---|---|
| terraform | >= 0.12.6 |
| aws | >= 3.40.0 |
| kubernetes | >= 1.11.4 |
| Name | Version |
|---|---|
| aws | 4.22.0 |
| kubernetes | 2.12.1 |
| Name | Source | Version |
|---|---|---|
| ebs_controller_role | terraform-aws-modules/iam/aws//modules/iam-assumable-role-with-oidc | 4.24.1 |
| Name | Type |
|---|---|
| aws_iam_policy.ebs_controller_policy | resource |
| kubernetes_cluster_role.attacher | resource |
| kubernetes_cluster_role.node | resource |
| kubernetes_cluster_role.provisioner | resource |
| kubernetes_cluster_role.resizer | resource |
| kubernetes_cluster_role.snapshotter | resource |
| kubernetes_cluster_role_binding.attacher | resource |
| kubernetes_cluster_role_binding.node | resource |
| kubernetes_cluster_role_binding.provisioner | resource |
| kubernetes_cluster_role_binding.resizer | resource |
| kubernetes_cluster_role_binding.snapshotter | resource |
| kubernetes_csi_driver_v1.ebs | resource |
| kubernetes_daemonset.node | resource |
| kubernetes_deployment.ebs_csi_controller | resource |
| kubernetes_service_account.csi_driver | resource |
| kubernetes_service_account.node | resource |
| Name | Description | Type | Default | Required |
|---|---|---|---|---|
| additional_iam_policies_arns | The EBS CSI driver controller's additional policies to allow more actions (kms, etc) | list(string) |
[] |
no |
| controller_csi_attacher_resources | The controller csi attacher resources | object({ |
{ |
no |
| controller_csi_provisioner_resources | The controller csi provisioner resources | object({ |
{ |
no |
| controller_csi_resizer_resources | The controller csi resizer resources | object({ |
{ |
no |
| controller_csi_snapshotter_resources | The controller csi snapshotter resources | object({ |
{ |
no |
| controller_ebs_plugin_resources | The controller ebs plugin resources | object({ |
{ |
no |
| controller_extra_node_selectors | A map of extra node selectors for controller pods | map(string) |
{} |
no |
| csi_attacher_image | The CSI attacher image | string |
"registry.k8s.io/sig-storage/csi-attacher" |
no |
| csi_attacher_version | The CSI attacher image version | string |
"v3.5.1" |
no |
| csi_controller_replica_count | Number of EBS CSI driver controller pods | number |
2 |
no |
| csi_controller_tolerations | CSI driver controller tolerations | list(map(string)) |
[] |
no |
| csi_node_driver_registrar_image | The CSI node driver registrar image | string |
"registry.k8s.io/sig-storage/csi-node-driver-registrar" |
no |
| csi_node_driver_registrar_version | The CSI node driver registrar image version | string |
"v2.9.0" |
no |
| csi_provisioner_image | The CSI provisioner image | string |
"registry.k8s.io/sig-storage/csi-provisioner" |
no |
| csi_provisioner_tag_version | The CSI provisioner tag version | string |
"v3.2.1" |
no |
| csi_resizer_image | The CSI resizer image | string |
"registry.k8s.io/sig-storage/csi-resizer" |
no |
| csi_resizer_version | The CSI resizer image version | string |
"v1.4.0" |
no |
| csi_snapshotter_image | The CSI snapshotter image | string |
"registry.k8s.io/sig-storage/csi-snapshotter" |
no |
| csi_snapshotter_version | The CSI snapshotter image version | string |
"v6.0.1" |
no |
| default_fstype | The default Filesystem type | string |
"ext4" |
no |
| ebs_csi_controller_image | The EBS CSI driver controller's image | string |
"k8s.gcr.io/provider-aws/aws-ebs-csi-driver" |
no |
| ebs_csi_controller_role_name | The name of the EBS CSI driver IAM role | string |
"ebs-csi-driver-controller" |
no |
| ebs_csi_controller_role_policy_name_prefix | The prefix of the EBS CSI driver IAM policy | string |
"ebs-csi-driver-policy" |
no |
| ebs_csi_driver_version | The EBS CSI driver controller's image version | string |
"v1.6.2" |
no |
| eks_cluster_id | ID of the Kubernetes cluster used for tagging provisioned EBS volumes | string |
"" |
no |
| enable_default_fstype | Wheter to enable default Filesystem type | bool |
false |
no |
| enable_volume_resizing | Whether to enable volume resizing | bool |
false |
no |
| enable_volume_snapshot | Whether to enable volume snapshotting | bool |
false |
no |
| extra_create_metadata | If set, add pv/pvc metadata to plugin create requests as parameters. | bool |
false |
no |
| extra_node_selectors | A map of extra node selectors for all components | map(string) |
{} |
no |
| labels | A map of extra labels for all resources | map(string) |
{} |
no |
| liveness_probe_image | The liveness probe image | string |
"registry.k8s.io/sig-storage/livenessprobe" |
no |
| liveness_probe_version | The liveness probe image version | string |
"v2.5.0" |
no |
| log_level | The log level for the CSI Driver controller | number |
5 |
no |
| namespace | The K8s namespace for all EBS CSI driver resources | string |
"kube-system" |
no |
| node_driver_registrar_resources | The node driver registrar resources | object({ |
{ |
no |
| node_ebs_plugin_resources | The node ebs plugin resources | object({ |
{ |
no |
| node_extra_node_selectors | A map of extra node selectors for node pods | map(string) |
{} |
no |
| node_liveness_probe_resources | The node liveness probe resources | object({ |
{ |
no |
| node_tolerations | CSI driver node tolerations | list(map(string)) |
[] |
no |
| oidc_url | EKS OIDC provider URL, to allow pod to assume role using IRSA | string |
n/a | yes |
| tags | A map of tags to add to all resources | map(string) |
{} |
no |
| volume_attach_limit | Configure maximum volume attachments per node. -1 means use default configuration | number |
-1 |
no |
| Name | Description |
|---|---|
| ebs_csi_driver_controller_role_arn | The Name of the EBS CSI driver controller IAM role ARN |
| ebs_csi_driver_controller_role_name | The Name of the EBS CSI driver controller IAM role name |
| ebs_csi_driver_controller_role_policy_arn | The Name of the EBS CSI driver controller IAM role policy ARN |
| ebs_csi_driver_controller_role_policy_name | The Name of the EBS CSI driver controller IAM role policy name |
| ebs_csi_driver_name | The Name of the EBS CSI driver |