Ein Git Repository in einen Kubernetes Container mounten
Es gibt in Kubernetes https://kubernetes.io/docs/concepts/storage/volumes/#gitrepo um ein Git Repository einzufügen. Diese Storage Art ist aber bereits als deprecated markiert und wird nicht mehr empfohlen.
Git Repos lassen sich dennoch recht einfach als Volume in einen Container einbinden. Man muss dafür einen InitContainer verwenden, der das Repository auscheckt und in einem Verzeichnir bereitstellt. Diese mounted man per emptyDir{} in den Container. Nun stehen die zuvor ausgecheckten Dateien aus dem Repository im Container bereit.
Beispiel
# Beispiel wie man InitContainers für die Bereitstellung
# eines GIT Repository nutzt. Die GitRepo Volumes sind
# deprecated und sollten nicht mehr verwendet werden. Dieses
# Beispiel nutzt den Ansatz das Git klonen in einem
# InitContainer auszuführen.
apiVersion: v1
kind: Pod
metadata:
name: git-repository-demo
annotations:
seccomp.security.alpha.kubernetes.io/pod: 'docker/default'
spec:
initContainers:
# Dieser InitContainer klont das gewünschte Repository
# in das EmptyDir Volume Verzeichnis
- name: git-clone
image: alpine/git # Alpine Linux mit Git
args:
- clone
- --single-branch
- --
- https://github.com/test/testrepo # Das Repository
- /repo # Put it in the volume
securityContext:
runAsUser: 1 # Hier ggf. Anpassungen vornehmen
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
volumeMounts:
- name: git-repo
mountPath: /repo
containers:
# Hier muss das richtige Image angegeben werden
# das genutzt werden soll. Bsp. BusyBox
- name: busybox
image: busybox
args: ['tail','-f','/dev/null'] # Demo tue nichts
volumeMounts:
- name: git-repo
mountPath: /repo
volumes:
- name: git-repo
emptyDir: {}