#kubernetes #configmap
#kubernetes #configmap
Вопрос:
Кто-нибудь знает, возможно ли использовать переменную окружения или ConfigMap в пути к хосту PersistentVolume? Обнаружил, что это возможно с помощью Helm, envsubst и т. Д. Но я хочу использовать только функции Kubernetes
Мне нужно создать том, у которого будет не статический путь.
Вот мой PV:
apiVersion: v1
kind: PersistentVolume
metadata:
name: some-pv
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 2Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "${PATH_FROM_ENV}/some-path"
Ответ №1:
Вы не можете сделать это изначально, но комбинация задания kubernetes, считывающего данные из configmap, может сделать это за вас. Мы создадим задание с соответствующими разрешениями RBAC, это задание использует изображение kubectl, считывает configmap и передает его в манифест создания PV.
Вот манифесты:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
namespace: default
name: pv-generator-role
rules:
- apiGroups: [""] # "" indicates the core API group
resources: ["persistentvolumes"]
verbs: ["create"]
- apiGroups: [""] # "" indicates the core API group
resources: ["configmaps"]
verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: pv-geneartor-role-binding
namespace: default
subjects:
- kind: ServiceAccount
name: pv-generator-sa
namespace: default
roleRef:
kind: ClusterRole
name: pv-generator-role
apiGroup: rbac.authorization.k8s.io
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: pv-generator-sa
---
apiVersion: batch/v1
kind: Job
metadata:
name: pv-generator
spec:
template:
spec:
serviceAccountName: pv-generator-sa
containers:
- name: kubectl
image: bitnami/kubectl
command:
- sh
- "-c"
- |
/bin/bash <<'EOF'
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolume
metadata:
name: some-pv
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 2Gi
accessModes:
- ReadWriteOnce
hostPath:
path: $(kubectl get cm path-configmap -ojsonpath="{.data.path}")/some-path
EOF
restartPolicy: Never
backoffLimit: 4
---
apiVersion: v1
kind: ConfigMap
metadata:
name: path-configmap
namespace: default
data:
path: /mypath