-
Notifications
You must be signed in to change notification settings - Fork 0
Kubernetes
Mathieu Lavigne edited this page Mar 24, 2023
·
3 revisions
function execpod() {
local appname=$1
local podname=$(kubectl get pods | grep "$appname" | grep -oE '^\S+')
echo "Pod name : $podname"
kubectl exec -it "$podname" -- bash
}Exemple avec solr :
- On déclare un initContainer Kubernetes
- On y monte un dossier contenant les fichiers sources à partir d'une ConfigMap
- On y monte un dossier cible à partir d'un volume emptyDir
- On copie les fichiers sources vers la cible
- On monte le dossier cible dans le container final
template:
spec:
securityContext:
runAsUser: 8983 # solr
runAsGroup: 8983 # solr
fsGroup: 8983 # solr
fsGroupChangePolicy: "OnRootMismatch"
initContainers:
# On copie les fichiers de conf dans un dossier vide Kubernetes (emptyDir) pour avoir les bonnes permissions
- name: copy-conf
image: busybox
command: ['sh', '-c', 'cp src/* target/']
volumeMounts:
- name: conf
subPath: schema.xml
mountPath: src/schema.xml
- name: conf-dir
mountPath: target
containers:
- name: boost-deploy
securityContext:
allowPrivilegeEscalation: false
volumeMounts:
# On monte ce dossier parent pour avoir les bonnes permissions pour solr, notamment pour qu'il y crée un dossier data
- name: collection1-dir
mountPath: /var/solr/data/collection1
# On monte le dossier en entier, et pas chaque fichier séparément avec subPath, pour avoir les bonnes permissions pour solr
- name: conf-dir
mountPath: /var/solr/data/collection1/conf
volumes:
- name: conf
configMap:
name: dataverse-solr-${CI_ENVIRONMENT_NAME}
items:
- key: schema.xml
path: schema.xml
defaultMode: 0744
- name: conf-dir
emptyDir: {}
- name: collection1-dir
emptyDir: {}