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 }}
|
||||
imagePullPolicy: {{ .Values.tlsSync.image.pullPolicy }}
|
||||
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:
|
||||
- /bin/bash
|
||||
- -c
|
||||
- |
|
||||
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
|
||||
echo "Installation de jq..."
|
||||
if command -v zypper &> /dev/null; then
|
||||
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é"
|
||||
echo "❌ Erreur: jq n'est pas disponible dans l'image"
|
||||
echo " Utilisez une image qui contient jq (ex: alpine/k8s, bitnami/kubectl, ou créez une image personnalisée)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -63,14 +55,16 @@ spec:
|
||||
--sourceNS "{{ .Values.tlsSync.sourceNamespace }}"
|
||||
volumeMounts:
|
||||
- name: kubeconfig
|
||||
mountPath: /root/.kube
|
||||
mountPath: /home/user/.kube
|
||||
readOnly: true
|
||||
- name: script
|
||||
mountPath: /scripts
|
||||
readOnly: true
|
||||
env:
|
||||
- name: KUBECONFIG
|
||||
value: /root/.kube/config
|
||||
value: /home/user/.kube/config
|
||||
- name: HOME
|
||||
value: /home/user
|
||||
resources:
|
||||
{{- toYaml .Values.tlsSync.resources | nindent 14 }}
|
||||
volumes:
|
||||
|
||||
@@ -7,11 +7,15 @@ tlsSync:
|
||||
sourceCluster: "cluster-ops"
|
||||
sourceNamespace: "certificates-ops"
|
||||
|
||||
# Image à utiliser (doit contenir kubectl et bash)
|
||||
# Utilise SLE (SUSE Linux Enterprise) kubectl
|
||||
# Image à utiliser (doit contenir kubectl, bash ET jq)
|
||||
# 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:
|
||||
repository: registry.suse.com/suse/kubectl
|
||||
tag: "1.33" # ou une version spécifique comme "1.31.0"
|
||||
repository: alpine/k8s
|
||||
tag: "1.33.0" # Version de kubectl
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
# Ressources
|
||||
|
||||
Reference in New Issue
Block a user