Skip to content

Kubernetes

Mathieu Lavigne edited this page Mar 24, 2023 · 3 revisions

Connexion à un pod

function execpod() {
  local appname=$1
  local podname=$(kubectl get pods | grep "$appname" | grep -oE '^\S+')
  echo "Pod name : $podname"
  kubectl exec -it "$podname" -- bash
}

Gestion des permissions

Exemple avec solr :

  1. On déclare un initContainer Kubernetes
  2. On y monte un dossier contenant les fichiers sources à partir d'une ConfigMap
  3. On y monte un dossier cible à partir d'un volume emptyDir
  4. On copie les fichiers sources vers la cible
  5. 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: {}

Clone this wiki locally