############################################################# ## NOT FOR PRODUCTION USE. ## ## THE CONTENT OF THIS FILE IS FOR LEARNING PURPOSES ONLY ## ## created by David Surey, Amazon Web Services, 2020 ## ############################################################# - name: create Roles and Policies for ebs csi cloudformation: profile: "{{ eksexample_aws_profilename }}" stack_name: "{{ eksexample_clustername }}-storage-provider-ebscsi-policy" state: present region: "{{ eksexample_region }}" template: "./cloudformation/eks-storage-provider-ebscsi-iam.template.yaml" - name: setup service account for ebs csi controller delegate_to: "{{ EKSBastionInstancePublicIP }}" shell: > eksctl create iamserviceaccount \ --name ebs-csi-controller-sa \ --namespace kube-system \ --cluster "{{ eksexample_clustername }}" \ --attach-policy-arn "arn:aws:iam::{{ caller_info.account }}:policy/EKSStorageProviderEBSCsiPolicy" \ --approve \ --region {{ eksexample_region }} \ --override-existing-serviceaccounts - name: add the EBS CSI Driver helm repo delegate_to: "{{ EKSBastionInstancePublicIP }}" kubernetes.core.helm_repository: name: aws-ebs-csi-driver repo_url: "https://kubernetes-sigs.github.io/aws-ebs-csi-driver" - name: Deploy latest version of EBS CSI Driver chart inside kube-system namespace delegate_to: "{{ EKSBastionInstancePublicIP }}" kubernetes.core.helm: name: aws-ebs-csi-driver chart_ref: aws-ebs-csi-driver/aws-ebs-csi-driver release_namespace: kube-system values: controller: serviceAccount: create: false name: ebs-csi-controller-sa - name: create provisioned iops Storage Class delegate_to: "{{ EKSBastionInstancePublicIP }}" kubernetes.core.k8s: state: present apply: yes definition: kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: ebs-io1 provisioner: ebs.csi.aws.com volumeBindingMode: WaitForFirstConsumer parameters: csi.storage.k8s.io/fstype: ext4 type: io1 iopsPerGB: "50" encrypted: "true" - name: create additional Storage Classes delegate_to: "{{ EKSBastionInstancePublicIP }}" kubernetes.core.k8s: state: present apply: yes definition: kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: "ebs-{{ item.name }}" provisioner: ebs.csi.aws.com volumeBindingMode: WaitForFirstConsumer parameters: csi.storage.k8s.io/fstype: ext4 type: "{{ item.type }}" encrypted: "true" loop: - { name: gp2, type: gp2 } - { name: sc1, type: sc1 } - { name: st1, type: st1 }