add ssh nonroot
This commit is contained in:
parent
61896464c4
commit
2b43a96715
|
|
@ -0,0 +1,110 @@
|
||||||
|
# ------------------------------
|
||||||
|
# 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
|
||||||
|
|
||||||
|
|
@ -0,0 +1,50 @@
|
||||||
|
-----BEGIN OPENSSH PRIVATE KEY-----
|
||||||
|
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
|
||||||
|
-----END OPENSSH PRIVATE KEY-----
|
||||||
|
|
||||||
|
|
@ -16,18 +16,18 @@ kind: Deployment
|
||||||
metadata:
|
metadata:
|
||||||
name: tf-notebook
|
name: tf-notebook
|
||||||
labels:
|
labels:
|
||||||
workload-name: customer7
|
workload-name: customer3
|
||||||
spec:
|
spec:
|
||||||
replicas: 1
|
replicas: 1
|
||||||
selector:
|
selector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
app: tf-notebook
|
app: tf-notebook
|
||||||
workload-name: customer7
|
workload-name: customer3
|
||||||
template:
|
template:
|
||||||
metadata:
|
metadata:
|
||||||
labels:
|
labels:
|
||||||
app: tf-notebook
|
app: tf-notebook
|
||||||
workload-name: customer7
|
workload-name: customer3
|
||||||
spec:
|
spec:
|
||||||
nodeSelector:
|
nodeSelector:
|
||||||
nodegroup: gpu
|
nodegroup: gpu
|
||||||
|
|
@ -38,7 +38,7 @@ spec:
|
||||||
limits:
|
limits:
|
||||||
cpu: "4"
|
cpu: "4"
|
||||||
memory: 16Gi
|
memory: 16Gi
|
||||||
nvidia.com/gpu: 2
|
nvidia.com/gpu: 1
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 8888
|
- containerPort: 8888
|
||||||
name: notebook
|
name: notebook
|
||||||
|
|
@ -56,7 +56,7 @@ metadata:
|
||||||
name: tf-notebook
|
name: tf-notebook
|
||||||
labels:
|
labels:
|
||||||
app: tf-notebook
|
app: tf-notebook
|
||||||
workload-name: customer7
|
workload-name: customer3
|
||||||
spec:
|
spec:
|
||||||
type: ClusterIP
|
type: ClusterIP
|
||||||
ports:
|
ports:
|
||||||
|
|
@ -65,4 +65,4 @@ spec:
|
||||||
targetPort: 8888
|
targetPort: 8888
|
||||||
selector:
|
selector:
|
||||||
app: tf-notebook
|
app: tf-notebook
|
||||||
workload-name: customer7
|
workload-name: customer3
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue