DROPS: Storage EBS em seu Cluster K8S EC2

Aprenda a usar o storage EBS como SC em seu cluster EC2!


O que são drops?

São DUMPs mentais rápidos e rasteiros, simples e objetivos – que funcionam.

Geralmente de algo que eu acabei de fazer.

Eu – quase sempre – volto para detalhar mais cada passo.

Considere com a mesma qualidade de um rascunho ou uma anotação rápida.

De qualquer forma comenta ai qquer coisa, os comentários estão ligados nos DROPS ;)

Demanda

Configurar um storageclass EBS em um cluster K8S rodando via EC2.

ComoFaz?

crie o arquivo aws-ebs-secrets.yaml

vim ws-ebs-secrets.yaml

insira o conteúdo abaixo, e ajuste suas credenciais

apiVersion: v1
kind: Secret
metadata:
  name: aws-secret
  namespace: kube-system
stringData:
  key_id: "SUA_ACCESS_KEY"
  access_key: "SUA_SECRET_KEY"

aplique o manifesto

kubectl apply -f aws-ebs-secrets.yaml

agora instale o driver ebs

kubectl apply -k "github.com/kubernetes-sigs/aws-ebs-csi-driver/deploy/kubernetes/overlays/stable/?ref=release-1.4"

saída esperada

serviceaccount/ebs-csi-controller-sa created
serviceaccount/ebs-csi-node-sa created
clusterrole.rbac.authorization.k8s.io/ebs-csi-node-role created
clusterrole.rbac.authorization.k8s.io/ebs-external-attacher-role created
clusterrole.rbac.authorization.k8s.io/ebs-external-provisioner-role created
clusterrole.rbac.authorization.k8s.io/ebs-external-resizer-role created
clusterrole.rbac.authorization.k8s.io/ebs-external-snapshotter-role created
clusterrolebinding.rbac.authorization.k8s.io/ebs-csi-attacher-binding created
clusterrolebinding.rbac.authorization.k8s.io/ebs-csi-node-getter-binding created
clusterrolebinding.rbac.authorization.k8s.io/ebs-csi-provisioner-binding created
clusterrolebinding.rbac.authorization.k8s.io/ebs-csi-resizer-binding created
clusterrolebinding.rbac.authorization.k8s.io/ebs-csi-snapshotter-binding created
deployment.apps/ebs-csi-controller created
poddisruptionbudget.policy/ebs-csi-controller created
daemonset.apps/ebs-csi-node created
csidriver.storage.k8s.io/ebs.csi.aws.com created

verifique se tá tudo bem

kubectl get pods -n kube-system|grep ebs

saída esperada

ebs-csi-controller-7c486f7676-826ph        6/6     Running     0          110s
ebs-csi-controller-7c486f7676-l5wsg        6/6     Running     0          110s
ebs-csi-node-5q7lk                         3/3     Running     0          108s
ebs-csi-node-cxv4p                         3/3     Running     0          109s
ebs-csi-node-fskfw                         3/3     Running     0          108s

tá tudo bem, agora crie o manifesto do storageclass

vim ebs-storageclass.yaml

insira o conteúdo abaixo

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: ebs-storageclass
parameters:
  type: gp2
provisioner: ebs.csi.aws.com
volumeBindingMode: Immediate

aplique o manifesto

kubectl apply -f ebs-storageclass.yaml

verifique se criou o sc

kubectl get sc

saída esperada

NAME                         PROVISIONER       RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
ebs-storageclass             ebs.csi.aws.com   Delete          Immediate   false                  3m24s

caso queira, defina este sc como default

  kubectl patch storageclass ebs-storageclass -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}

prontinho! :)