Skip to content

Commit fcf4821

Browse files
Merge branch 'develop' into mishmosh/introtext
2 parents 6fa0b42 + 91c6a8d commit fcf4821

File tree

9 files changed

+239
-14
lines changed

9 files changed

+239
-14
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
---
2+
name: Dash feature request
3+
about: Report something that's missing from the Dash version
4+
title: [dash]
5+
labels: 'dash'
6+
assignees: ''
7+
8+
---
9+
10+
### Description:
11+
12+
13+
14+
[ ] This is something we can copy over from streamlit (screenshots if applicable)

.github/workflows/heroku.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
name: Deploy working development app to Heroku staging project
2+
3+
on:
4+
push:
5+
branches:
6+
- 'develop'
7+
8+
env:
9+
HEROKU_USER: 32dd7c8d-eb68-4420-bfe2-9ed047ef8fb0
10+
HEROKU_SECRET: ${{ secrets.heroku_secret_key }}
11+
HEROKU_APP: cfp-ci-chime
12+
HEROKU_EMAIL: [email protected]
13+
14+
jobs:
15+
deploy-heroku-stg:
16+
runs-on: ubuntu-latest
17+
steps:
18+
- uses: actions/checkout@v2
19+
- name: Deploy app
20+
id: deploy_stg_job
21+
uses: akhileshns/[email protected]
22+
with:
23+
heroku_api_key: ${HEROKU_SECRET}
24+
heroku_app_name: ${HEROKU_APP}
25+
heroku_email: ${HEROKU_EMAIL}
26+
- name: Return app URL
27+
run: |
28+
echo "Deployed to: https://${HEROKU_APP}.herokuapp.com/"

docs/SUMMARY.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@
1313
- [The `chime-live` Cluster](./operations/chime-live-cluster.md)
1414
- [Deploy to Heroku](./operations/heroku.md)
1515
- [Deploy to Your Own Cluster](./operations/byok8s.md)
16+
- [Limited Cluster Access for Deployment][1]
1617
- [Code of Conduct](CODE_OF_CONDUCT.md)
1718
- [Maintainers](MAINTAINERS.md)
1819
- [Glossary](GLOSSARY.md)
20+
21+
[1]: ./operations/limited-kubeconfigs/limited-kubeconfigs.md
Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
# Creating Kubeconfigs with Limited Permissions
2+
3+
## Create a Role
4+
5+
Kubernetes has two primary resources which represent a set of permissions,
6+
Roles and ClusterRoles. ClusterRoles apply to resources in all namespaces,
7+
whereas Roles are limited to a specific namespace. Let's create a Role in the
8+
chime namespace which will allow read/write access to Deployments and
9+
read-only access to Pods.
10+
11+
deployer.yaml:
12+
13+
```
14+
apiVersion: rbac.authorization.k8s.io/v1
15+
kind: Role
16+
metadata:
17+
name: deployer
18+
namespace: chime
19+
rules:
20+
- apiGroups:
21+
- apps
22+
resources:
23+
- deployments
24+
verbs:
25+
# we are _not_ including 'create' and 'delete'
26+
- get
27+
- list
28+
- watch
29+
- update
30+
- patch
31+
- apiGroups:
32+
- ""
33+
resources:
34+
- pods
35+
verbs:
36+
# so that we can observe our pods getting created
37+
- get
38+
- list
39+
- watch
40+
```
41+
42+
## Create a ServiceAccount
43+
44+
One of the subjects which can take on a Role is a ServiceAccount. Let's
45+
create a ServiceAccount called penn-deployer in the chime namespace:
46+
47+
```
48+
apiVersion: v1
49+
kind: ServiceAccount
50+
metadata:
51+
name: penn-deployer
52+
namespace: chime
53+
```
54+
55+
## Create a RoleBinding
56+
57+
We can now give the ServiceAccount the Role that we created earlier using a
58+
RoleBinding in the chime namespace.
59+
60+
```
61+
apiVersion: rbac.authorization.k8s.io/v1
62+
kind: RoleBinding
63+
metadata:
64+
name: penn-deployer:deployer
65+
namespace: chime
66+
roleRef:
67+
apiGroup: rbac.authorization.k8s.io
68+
kind: Role
69+
name: deployer
70+
subjects:
71+
- kind: ServiceAccount
72+
name: penn-deployer
73+
namespace: chime
74+
```
75+
76+
## Grabbing the token for the ServiceAccount
77+
78+
Every ServiceAccount gets a token, lets grab it.
79+
80+
```
81+
k get secrets -n chime
82+
```
83+
84+
Look for `penn-deployer-token-<hash>`
85+
86+
```
87+
k get secrets -n chime penn-deployer-token-<hash>
88+
```
89+
90+
Grab the "token:" base64 encoded token.
91+
92+
*base64 decode this token, which will produce base64*
93+
94+
## Creating a token-based kubeconfig
95+
96+
Now take a look at the Kubeconfig that you are currently using. Does it use a
97+
token? If so, you can construct a Kubeconfig for this ServiceAccount by copying
98+
your kubeconfig and replacing the token and user name with this decoded token
99+
and the user name "penn-deployer".
100+
101+
It will look something like this:
102+
103+
```
104+
apiVersion: v1
105+
kind: Config
106+
preferences: {}
107+
108+
clusters:
109+
- name: chime-cluster
110+
cluster:
111+
certificate-authority-data: <ca-cert-base64, same as existing>
112+
server: https://<server-hostname>:<server-port>
113+
114+
users:
115+
- name: penn-deployer
116+
user:
117+
as-user-extra: {}
118+
token: <ServiceAccount token! Be very sure that this is the ServiceAccount token!>
119+
120+
contexts:
121+
- name: penn-deployer-chime
122+
context:
123+
cluster: chime-cluster
124+
user: penn-deployer
125+
namespace: chime
126+
127+
current-context: penn-deployer-chime
128+
```
129+
130+
## Test out your token-based Kubeconfig
131+
132+
You can now use this ServiceAccount to modify Deployments, and view Pods, but do nothing else.
133+
134+
```
135+
$ k get pods -A
136+
Error from server (Forbidden): pods is forbidden: User "system:serviceaccount:chime:penn-deployer" cannot list resource "pods" in API group "" at the cluster scope
137+
```
138+
139+
```
140+
$ export KUBECONFIG=new-kubeconfig.yaml
141+
$ k get pods -n chime
142+
$ k get deployments -n chime
143+
# deploy version 0.5.0
144+
$ k set image deployment/chime -n chime chime=docker.pkg.github.com/codeforphilly/chime/penn-chime:0.5.0 --record
145+
# observe status of deployment
146+
$ k get pods -n chime
147+
```
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: Role
3+
metadata:
4+
name: deployer
5+
namespace: chime
6+
rules:
7+
- apiGroups:
8+
- apps/v1
9+
resources:
10+
- deployments
11+
verbs:
12+
# we are _not_ including 'create' and 'delete'
13+
- get
14+
- list
15+
- watch
16+
- update
17+
- patch
18+
- apiGroups:
19+
- ""
20+
resources:
21+
- pods
22+
verbs:
23+
# so that we can observe our pods getting created
24+
- get
25+
- list
26+
- watch
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: RoleBinding
3+
metadata:
4+
name: penn-deployer:deployer
5+
namespace: chime
6+
roleRef:
7+
apiGroup: rbac.authorization.k8s.io
8+
kind: Role
9+
name: deployer
10+
subjects:
11+
- kind: ServiceAccount
12+
name: penn-deployer
13+
namespace: chime
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
apiVersion: v1
2+
kind: ServiceAccount
3+
metadata:
4+
name: penn-deployer
5+
namespace: chime

k8s/app.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ spec:
2525
app: chime
2626
spec:
2727
containers:
28-
- image: docker.pkg.github.com/codeforphilly/chime/penn-chime:0.4.1
28+
- image: docker.pkg.github.com/codeforphilly/chime/penn-chime:1.0.0
2929
name: chime
3030
ports:
3131
- containerPort: 8000

src/penn_chime/presentation.py

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -345,19 +345,8 @@ def show_more_info_about_this_tool(st, model, parameters, defaults, notes: str =
345345
def write_definitions(st):
346346
st.subheader("Guidance on Selecting Inputs")
347347
st.markdown(
348-
"""* **Hospitalized COVID-19 Patients:** The number of patients currently hospitalized with COVID-19 **at your hospital(s)**. This number is used in conjunction with Hospital Market Share and Hospitalization % to estimate the total number of infected individuals in your region.
349-
* **Doubling Time (days):** This parameter drives the rate of new cases during the early phases of the outbreak. The American Hospital Association currently projects doubling rates between 7 and 10 days. This is the doubling time you expect under status quo conditions. To account for reduced contact and other public health interventions, modify the _Social distancing_ input.
350-
* **Social distancing (% reduction in person-to-person physical contact):** This parameter allows users to explore how reduction in interpersonal contact & transmission (hand-washing) might slow the rate of new infections. It is your estimate of how much social contact reduction is being achieved in your region relative to the status quo. While it is unclear how much any given policy might affect social contact (eg. school closures or remote work), this parameter lets you see how projections change with percentage reductions in social contact.
351-
* **Hospitalization %(total infections):** Percentage of **all** infected cases which will need hospitalization.
352-
* **ICU %(total infections):** Percentage of **all** infected cases which will need to be treated in an ICU.
353-
* **Ventilated %(total infections):** Percentage of **all** infected cases which will need mechanical ventilation.
354-
* **Hospital Length of Stay:** Average number of days of treatment needed for hospitalized COVID-19 patients.
355-
* **ICU Length of Stay:** Average number of days of ICU treatment needed for ICU COVID-19 patients.
356-
* **Vent Length of Stay:** Average number of days of ventilation needed for ventilated COVID-19 patients.
357-
* **Hospital Market Share (%):** The proportion of patients in the region that are likely to come to your hospital (as opposed to other hospitals in the region) when they get sick. One way to estimate this is to look at all of the hospitals in your region and add up all of the beds. The number of beds at your hospital divided by the total number of beds in the region times 100 will give you a reasonable starting estimate.
358-
* **Regional Population:** Total population size of the catchment region of your hospital(s).
359-
* **Currently Known Regional Infections**: The number of infections reported in your hospital's catchment region. This is only used to compute detection rate - **it will not change projections**. This input is used to estimate the detection rate of infected individuals.
360-
"""
348+
"""**This information has been moved to the
349+
[User Documentation](https://code-for-philly.gitbook.io/chime/what-is-chime/parameters#guidance-on-selecting-inputs)**"""
361350
)
362351

363352

0 commit comments

Comments
 (0)