k8s
This commit is contained in:
22
helm/tls-sync-wildcard/ops/Dockerfile.example
Normal file
22
helm/tls-sync-wildcard/ops/Dockerfile.example
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
# Exemple de Dockerfile pour créer une image personnalisée SLE avec kubectl et jq
|
||||||
|
# Usage: docker build -t harbor.gkdomaine.local/images/kubectl-sle:1.33.0 -f Dockerfile.example .
|
||||||
|
|
||||||
|
FROM registry.suse.com/caasp/v4/kubectl:1.33
|
||||||
|
|
||||||
|
# Installer jq (nécessite root pour l'installation)
|
||||||
|
USER root
|
||||||
|
RUN zypper --non-interactive install -y jq && \
|
||||||
|
zypper clean -a
|
||||||
|
|
||||||
|
# Créer un utilisateur non-root
|
||||||
|
RUN useradd -u 1000 -m -s /bin/bash user && \
|
||||||
|
mkdir -p /home/user/.kube && \
|
||||||
|
chown -R user:user /home/user
|
||||||
|
|
||||||
|
# Passer à l'utilisateur non-root
|
||||||
|
USER user
|
||||||
|
WORKDIR /home/user
|
||||||
|
|
||||||
|
# Vérifier que kubectl et jq sont disponibles
|
||||||
|
RUN kubectl version --client && jq --version
|
||||||
|
|
||||||
@@ -25,31 +25,23 @@ spec:
|
|||||||
image: {{ .Values.tlsSync.image.repository }}:{{ .Values.tlsSync.image.tag }}
|
image: {{ .Values.tlsSync.image.repository }}:{{ .Values.tlsSync.image.tag }}
|
||||||
imagePullPolicy: {{ .Values.tlsSync.image.pullPolicy }}
|
imagePullPolicy: {{ .Values.tlsSync.image.pullPolicy }}
|
||||||
securityContext:
|
securityContext:
|
||||||
runAsUser: 0 # Nécessaire pour installer jq avec zypper/yum/apt-get
|
runAsNonRoot: true
|
||||||
|
runAsUser: 1000
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
readOnlyRootFilesystem: false # Nécessaire pour /tmp
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- ALL
|
||||||
command:
|
command:
|
||||||
- /bin/bash
|
- /bin/bash
|
||||||
- -c
|
- -c
|
||||||
- |
|
- |
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
# Installer jq si nécessaire (pour SLE)
|
# Vérifier que jq est disponible (doit être dans l'image)
|
||||||
if ! command -v jq &> /dev/null; then
|
if ! command -v jq &> /dev/null; then
|
||||||
echo "Installation de jq..."
|
echo "❌ Erreur: jq n'est pas disponible dans l'image"
|
||||||
if command -v zypper &> /dev/null; then
|
echo " Utilisez une image qui contient jq (ex: alpine/k8s, bitnami/kubectl, ou créez une image personnalisée)"
|
||||||
zypper --non-interactive install -y jq || echo "⚠️ Impossible d'installer jq avec zypper"
|
|
||||||
elif command -v yum &> /dev/null; then
|
|
||||||
yum install -y jq || echo "⚠️ Impossible d'installer jq avec yum"
|
|
||||||
elif command -v apt-get &> /dev/null; then
|
|
||||||
apt-get update && apt-get install -y jq || echo "⚠️ Impossible d'installer jq avec apt-get"
|
|
||||||
else
|
|
||||||
echo "❌ Aucun gestionnaire de paquets trouvé pour installer jq"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Vérifier que jq est maintenant disponible
|
|
||||||
if ! command -v jq &> /dev/null; then
|
|
||||||
echo "❌ Erreur: jq n'est pas disponible et n'a pas pu être installé"
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -63,14 +55,16 @@ spec:
|
|||||||
--sourceNS "{{ .Values.tlsSync.sourceNamespace }}"
|
--sourceNS "{{ .Values.tlsSync.sourceNamespace }}"
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: kubeconfig
|
- name: kubeconfig
|
||||||
mountPath: /root/.kube
|
mountPath: /home/user/.kube
|
||||||
readOnly: true
|
readOnly: true
|
||||||
- name: script
|
- name: script
|
||||||
mountPath: /scripts
|
mountPath: /scripts
|
||||||
readOnly: true
|
readOnly: true
|
||||||
env:
|
env:
|
||||||
- name: KUBECONFIG
|
- name: KUBECONFIG
|
||||||
value: /root/.kube/config
|
value: /home/user/.kube/config
|
||||||
|
- name: HOME
|
||||||
|
value: /home/user
|
||||||
resources:
|
resources:
|
||||||
{{- toYaml .Values.tlsSync.resources | nindent 14 }}
|
{{- toYaml .Values.tlsSync.resources | nindent 14 }}
|
||||||
volumes:
|
volumes:
|
||||||
|
|||||||
@@ -7,11 +7,15 @@ tlsSync:
|
|||||||
sourceCluster: "cluster-ops"
|
sourceCluster: "cluster-ops"
|
||||||
sourceNamespace: "certificates-ops"
|
sourceNamespace: "certificates-ops"
|
||||||
|
|
||||||
# Image à utiliser (doit contenir kubectl et bash)
|
# Image à utiliser (doit contenir kubectl, bash ET jq)
|
||||||
# Utilise SLE (SUSE Linux Enterprise) kubectl
|
# IMPORTANT: L'image doit contenir jq car le conteneur s'exécute en non-root (sécurité)
|
||||||
|
# Options recommandées:
|
||||||
|
# - alpine/k8s (contient kubectl et jq)
|
||||||
|
# - bitnami/kubectl (contient kubectl, peut nécessiter jq)
|
||||||
|
# - Image personnalisée basée sur SLE avec jq pré-installé
|
||||||
image:
|
image:
|
||||||
repository: registry.suse.com/suse/kubectl
|
repository: alpine/k8s
|
||||||
tag: "1.33" # ou une version spécifique comme "1.31.0"
|
tag: "1.33.0" # Version de kubectl
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
|
|
||||||
# Ressources
|
# Ressources
|
||||||
|
|||||||
Reference in New Issue
Block a user