- build chain: project, Gitea basic-auth source secret, output ImageStream, BuildConfig (Docker strategy, ubuntu:24.04 base), optional base-image ImageStream and Docker Hub pull secret - runtime: ServiceAccount + least-privilege SCC and its RoleBinding (VShell needs UID 0), PVC for config/certificate, Deployment with ImageStream trigger, ClusterIP Service, passthrough HTTPS Route - all manifests verified with 'oc create --dry-run=client' against the OpenShift 4.22 client scheme (12/12 decode cleanly)
38 lines
874 B
YAML
38 lines
874 B
YAML
# Cluster-internal entry point for all four VShell listeners.
|
|
#
|
|
# Only 80/443 can be exposed through an OpenShift Route. SSH (22), explicit FTPS
|
|
# (21) and implicit FTPS (990) need a NodePort/LoadBalancer service or an
|
|
# external load balancer in front of this ClusterIP service.
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: vshell
|
|
namespace: vshell
|
|
labels:
|
|
app.kubernetes.io/name: vshell
|
|
spec:
|
|
type: ClusterIP
|
|
selector:
|
|
app.kubernetes.io/name: vshell
|
|
ports:
|
|
- name: ssh
|
|
port: 22
|
|
targetPort: ssh
|
|
protocol: TCP
|
|
- name: ftps
|
|
port: 21
|
|
targetPort: ftps
|
|
protocol: TCP
|
|
- name: ftps-implicit
|
|
port: 990
|
|
targetPort: ftps-implicit
|
|
protocol: TCP
|
|
- name: http
|
|
port: 80
|
|
targetPort: http
|
|
protocol: TCP
|
|
- name: https
|
|
port: 443
|
|
targetPort: https
|
|
protocol: TCP
|