GPU-Live/ddn-provisioning/nonrootuser.yaml

111 lines
2.6 KiB
YAML

# ------------------------------
# 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