我有 1 个客户端节点、1 个主节点和 3 个数据节点的 ELK 集群。主节点和数据节点具有附加到它的卷。每个数据节点的卷为 200GB。这些卷都没有加密,现在我想加密这些卷。
当我们只有一个 statefulset 副本并使用一个卷挂载时,这很有效。但对于 3 个副本,它无法附加到卷。kubernetes 中有一个选项使用“加密”标志给出卷定义,但是我们必须在部署/状态集中指定声明名称。我们可以在状态集中指定声明名称,但前提是我们有一个声明要指定。但由于我的 elk 集群有 3 个数据节点,我们无法在 statefulset 中指定一个特定的声明名称。
我尝试通过将存储类“加密”标志设置为 true 来动态执行此操作,如下所示:
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: esvolume-2
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp2
zones: eu-west-1c
iopsPerGB: "600"
fsType: ext4
encrypted: "true"
那么我们必须在声明中使用这个存储类,如下所示:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: esdata-2
labels:
app: mo-es-data
spec:
storageClassName: esvolume-2
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 200Gi
然后需要在 statefulset 中指定声明名称,如下所示:
volumeMounts:
- name: esdata-2
mountPath: /data
#imagePullSecrets:
#- name: mo-docker-registry
volumeClaimTemplates:
- metadata:
name: esdata-2
所以我不能用这个解决方案。
手动替换也是不可能的,因为 3 个卷已附加到一个 statefulset。
我希望卷被加密,但不能加密它们。
请帮助我,在这种情况下如何实现卷加密?