111 lines
2.6 KiB
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
|
|
|