Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement pfcon in-network operation mode #137

Merged
merged 1 commit into from
Jul 21, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@ Dockerfile
.git
LICENSE
CHRIS_REMOTE_FS
swift_storage
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,4 @@

dc.out
CHRIS_REMOTE_FS/
swift_storage/
33 changes: 33 additions & 0 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,22 @@ Remove pfcon's containers
$> cd pfcon
$> ./unmake.sh

Start pfcon's development server and backend containers operating in-network (with Swift storage)
-------------------------------------------------------------------------------------------------

.. code-block:: bash

$> cd pfcon
$> ./make.sh -N

Remove pfcon's containers operating in-network (with Swift storage)
-------------------------------------------------------------------

.. code-block:: bash

$> cd pfcon
$> ./unmake.sh -N

Remove the local Docker Swarm cluster if desired
------------------------------------------------

Expand Down Expand Up @@ -132,6 +148,23 @@ Remove pfcon's containers
$> ./unmake.sh -O kubernetes


Start pfcon's development server and backend containers operating in-network (with Swift storage)
-------------------------------------------------------------------------------------------------

.. code-block:: bash

$> cd pfcon
$> ./make.sh -N -O kubernetes

Remove pfcon's containers operating in-network (with Swift storage)
-------------------------------------------------------------------

.. code-block:: bash

$> cd pfcon
$> ./unmake.sh -N -O kubernetes


**********************
Production deployments
**********************
Expand Down
4 changes: 3 additions & 1 deletion kubernetes/pfcon_dev.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ spec:
image: busybox:1.32
command: [ 'sh', '-c', "until wget --spider -S -T 2 http://pman:5010/api/v1/ 2>&1 | grep '200 OK'; do echo waiting for pman; done" ]
containers:
- image: fnndsc/pfcon:dev
- image: localhost:5000/fnndsc/pfcon:dev
name: pfcon
stdin: true
tty: true
Expand Down Expand Up @@ -119,6 +119,8 @@ spec:
# (where pfcon shares the data) into the spawned container. This directory is
# passed in the STOREBASE env variable.
env:
- name: STORAGE_TYPE
value: host
- name: SECRET_KEY
value: "anysu^l=@pnsf!5piqz6!!5kdcdpo79y6jebbp+2244yjm*#+k"
- name: STOREBASE
Expand Down
191 changes: 191 additions & 0 deletions kubernetes/pfcon_dev_innetwork.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,191 @@
apiVersion: v1
kind: Service
metadata:
name: pfcon
labels:
app: pfcon
env: development
spec:
type: NodePort
selector:
app: pfcon
env: development
ports:
- port: 30006
targetPort: 5005
nodePort: 30006

---

apiVersion: apps/v1
kind: Deployment
metadata:
name: pfcon
labels:
app: pfcon
env: development
spec:
replicas: 1
selector:
matchLabels:
app: pfcon
env: development
template:
metadata:
name: pfcon
labels:
app: pfcon
env: development
spec:
initContainers:
- name: init-pfcon
image: busybox:1.32
command: [ 'sh', '-c', "until wget --spider -S -T 2 http://pman:5010/api/v1/ 2>&1 | grep '200 OK'; do echo waiting for pman; done" ]
- name: init-swift
image: busybox:1.32
command: [ "sh", "-c", "until wget --spider -S -T 2 http://swift:8080/info 2>&1 | grep '200 OK'; do echo waiting for Swift storage; sleep2; done" ]
containers:
- image: fnndsc/pfcon:dev
name: pfcon
stdin: true
tty: true
ports:
- containerPort: 5005
env:
- name: APPLICATION_MODE
value: development
command: ["python"]
args: ["-m", "pfcon"]
volumeMounts:
- mountPath: "/var/local/storeBase"
name: "storebase"
- mountPath: "/app/pfcon"
name: "pfcon-source"
- mountPath: "/app/tests"
name: "pfcon-tests"
volumes:
- name: "storebase"
hostPath:
path: ${STOREBASE}
- name: "pfcon-source"
hostPath:
path: ${SOURCEDIR}/pfcon
- name: "pfcon-tests"
hostPath:
path: ${SOURCEDIR}/tests

---

apiVersion: v1
kind: Service
metadata:
name: pman
labels:
app: pman
env: production
spec:
selector:
app: pman
env: production
ports:
- port: 5010
targetPort: 5010

---

apiVersion: apps/v1
kind: Deployment
metadata:
name: pman
labels:
app: pman
env: production
spec:
replicas: 1
selector:
matchLabels:
app: pman
env: production
template:
metadata:
name: pman
labels:
app: pman
env: production
spec:
containers:
- image: fnndsc/pman
name: pman
ports:
- containerPort: 5010
# Since pman spins off containers of its own it needs to mount storeBase dir
# (where pfcon shares the data) into the spawned container. This directory is
# passed in the STOREBASE env variable.
env:
- name: STORAGE_TYPE
value: host
- name: SECRET_KEY
value: "anysu^l=@pnsf!5piqz6!!5kdcdpo79y6jebbp+2244yjm*#+k"
- name: STOREBASE
value: ${STOREBASE}
- name: CONTAINER_ENV
value: kubernetes

---

apiVersion: v1
kind: Service
metadata:
name: swift
labels:
app: swift
env: production
spec:
type: NodePort
selector:
app: swift
env: production
ports:
- port: 8080
targetPort: 8080
nodePort: 30080

---

apiVersion: apps/v1
kind: Deployment
metadata:
name: swift
labels:
app: swift
env: production
spec:
replicas: 1 # stateful service, so only a single replica must be used
selector:
matchLabels:
app: swift
env: production
template:
metadata:
name: swift
labels:
app: swift
env: production
spec:
containers:
- name: swift
image: fnndsc/docker-swift-onlyone
ports:
- containerPort: 8080
env:
- name: SWIFT_USERNAME
value: chris:chris1234
- name: SWIFT_KEY
value: testing
volumeMounts:
- name: swiftdb
mountPath: "/srv"
volumes:
- name: swiftdb
hostPath:
path: ${SOURCEDIR}/swift_storage
Loading
Loading