# ------------------------------ # 1. StorageClass (EXA Storage) # ------------------------------ apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: exa-sc-1010 provisioner: exa.csi.ddn.com parameters: exaMountUid: "1010" --- # ------------------------------ # 2. PVC # ------------------------------ apiVersion: v1 kind: PersistentVolumeClaim metadata: name: exa-pvc-1010 namespace: org2 spec: accessModes: - ReadWriteMany storageClassName: exa-sc-1010 resources: requests: storage: 1Gi --- # ------------------------------ # 3. Pod with internal ssh-keygen # ------------------------------ apiVersion: v1 kind: Pod metadata: name: exa-user-1010-pod namespace: org2 labels: app: exa-user spec: securityContext: runAsUser: 0 runAsGroup: 0 volumes: - name: shared-home emptyDir: {} - name: exa-volume persistentVolumeClaim: claimName: exa-pvc-1010 containers: - name: app image: ubuntu:22.04 ports: - containerPort: 22 securityContext: runAsUser: 0 command: ["/bin/bash", "-c"] args: - | echo "[INFO] Waiting for network..."; for i in {1..30}; do if ping -c 1 8.8.8.8 >/dev/null 2>&1 && nslookup archive.ubuntu.com >/dev/null 2>&1; then echo "[INFO] Network is ready."; break; else echo "[WARN] Network not ready, retrying ($i)..."; sleep 2; fi done apt update && apt install -y sudo openssh-server openssh-client; useradd -m -u 1010 -s /bin/bash appuser; echo "appuser ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers; mkdir -p /home/appuser/.ssh; ssh-keygen -t rsa -b 4096 -f /home/appuser/.ssh/id_rsa -N ""; cat /home/appuser/.ssh/id_rsa.pub > /home/appuser/.ssh/authorized_keys; chown -R 1010:1010 /home/appuser/.ssh; chmod 700 /home/appuser/.ssh; chmod 600 /home/appuser/.ssh/authorized_keys; chmod 600 /home/appuser/.ssh/id_rsa; echo "====== PRIVATE KEY ======"; cat /home/appuser/.ssh/id_rsa; echo "========================="; /usr/sbin/sshd -D volumeMounts: - name: shared-home mountPath: /mnt/home - name: exa-volume mountPath: /data --- # ------------------------------ # 4. SSH Service (port 2222 → 22) # ------------------------------ apiVersion: v1 kind: Service metadata: name: exa-user-ssh-svc namespace: org2 spec: selector: app: exa-user ports: - protocol: TCP port: 2222 targetPort: 22