├── README.md ├── ftp-deployment.yaml ├── ftp-ingress.yaml ├── ftp-service.yaml ├── task-pv-claim.yaml └── task-pv-volume.yaml /README.md: -------------------------------------------------------------------------------- 1 | # kubernetes-ftp 2 | Demo Deploy FTP Service [fauria/vsftpd] on Kubernetes 3 | 4 | https://github.com/fauria/docker-vsftpd 5 | 6 | kubectl create -f task-pv-volume.yaml 7 | 8 | kubectl get pv task-pv-volume 9 | 10 | kubectl create -f task-pv-claim.yaml 11 | 12 | kubectl get pvc task-pv-claim 13 | 14 | kubectl create -f ftp-deployment.yaml 15 | 16 | kubectl create -f ftp-service.yaml 17 | 18 | kubectl create -f ftp-ingress.yaml 19 | -------------------------------------------------------------------------------- /ftp-deployment.yaml: -------------------------------------------------------------------------------- 1 | 2 | apiVersion: apps/v1beta1 # for versions before 1.6.0 use extensions/v1beta1 3 | kind: Deployment 4 | metadata: 5 | name: my-ftp 6 | spec: 7 | replicas: 3 8 | template: 9 | metadata: 10 | labels: 11 | app: my-ftp 12 | spec: 13 | volumes: 14 | - name: task-pv-storage 15 | persistentVolumeClaim: 16 | claimName: task-pv-claim 17 | containers: 18 | - name: my-ftp-container 19 | image: fauria/vsftpd 20 | ports: 21 | - containerPort: 21 22 | protocol: TCP 23 | name: "ftp-server" 24 | volumeMounts: 25 | - mountPath: "/home/vsftpd" 26 | name: task-pv-storage 27 | env: 28 | - name: FTP_USER 29 | value: "user" 30 | - name: FTP_PASS 31 | value: "pass1234" 32 | #- name: PASV_ADDRESS 33 | # value: "127.0.0.1" 34 | #- name: PASV_MIN_PORT 35 | # value: "21100" 36 | #- name: PASV_MAX_PORT 37 | # value: "21110" 38 | -------------------------------------------------------------------------------- /ftp-ingress.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: extensions/v1beta1 2 | kind: Ingress 3 | metadata: 4 | name: ftp-http-ingress 5 | spec: 6 | backend: 7 | serviceName: ftp-http-service 8 | servicePort: 21 9 | -------------------------------------------------------------------------------- /ftp-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: my-ftp-service 5 | labels: 6 | app: my-ftp 7 | spec: 8 | type: NodePort 9 | ports: 10 | - port: 21 11 | nodePort: 30080 12 | selector: 13 | app: my-ftp 14 | -------------------------------------------------------------------------------- /task-pv-claim.yaml: -------------------------------------------------------------------------------- 1 | 2 | kind: PersistentVolumeClaim 3 | apiVersion: v1 4 | metadata: 5 | name: task-pv-claim 6 | spec: 7 | accessModes: 8 | - ReadWriteOnce 9 | resources: 10 | requests: 11 | storage: 3Gi 12 | -------------------------------------------------------------------------------- /task-pv-volume.yaml: -------------------------------------------------------------------------------- 1 | kind: PersistentVolume 2 | apiVersion: v1 3 | metadata: 4 | name: task-pv-volume 5 | labels: 6 | type: local 7 | spec: 8 | capacity: 9 | storage: 10Gi 10 | accessModes: 11 | - ReadWriteOnce 12 | hostPath: 13 | path: "/tmp/data" 14 | --------------------------------------------------------------------------------