Skip to content

Commit 977dccb

Browse files
committed
Merge branch 'release/2.1.0'
2 parents 5a0740b + bae31f3 commit 977dccb

File tree

76 files changed

+1368
-520
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

76 files changed

+1368
-520
lines changed

.github/workflows/workflows.yaml

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,35 +8,37 @@ jobs:
88
strategy:
99
fail-fast: false
1010
matrix:
11-
java: [ 11 ]
11+
java: [ 17 ]
1212
kubernetes:
13-
- 'v1.22.17'
14-
- 'v1.23.15'
15-
- 'v1.24.9'
16-
- 'v1.25.5'
13+
- 'v1.24.17'
14+
- 'v1.25.15'
15+
- 'v1.26.14'
16+
- 'v1.27.11'
17+
- 'v1.28.7'
18+
- 'v1.29.2'
1719

1820
steps:
19-
- uses: actions/checkout@v2
21+
- uses: actions/checkout@v4
2022
- name: Set up JDK
2123
uses: actions/setup-java@v1
2224
with:
2325
java-version: ${{ matrix.java }}
2426
- name: Cache Maven packages
25-
uses: actions/cache@v2
27+
uses: actions/cache@v4
2628
with:
2729
path: ~/.m2
2830
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
2931
restore-keys: ${{ runner.os }}-m2
3032
- name: Setup Minikube
31-
uses: manusa/actions-setup-minikube@v2.7.2
33+
uses: manusa/actions-setup-minikube@v2.10.0
3234
with:
33-
minikube version: 'v1.28.0'
35+
minikube version: 'v1.32.0'
3436
kubernetes version: ${{ matrix.kubernetes }}
3537
github token: ${{ secrets.GITHUB_TOKEN }}
38+
driver: docker
3639
- name: Pull images
3740
run: |
38-
minikube image pull ledfan/shinyproxy:3.0.0-SNAPSHOT-20230116.114943
39-
minikube image pull openanalytics/shinyproxy-demo
41+
minikube image pull openanalytics/shinyproxy-integration-test-app
4042
minikube image pull curlimages/curl:latest
4143
- name: Build with Maven
4244
run: mvn -B -U clean install -DskipTests

LICENSE_HEADER

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
ShinyProxy-Operator
22

3-
Copyright (C) 2021-2023 Open Analytics
3+
Copyright (C) 2021-2024 Open Analytics
44

55
===========================================================================
66

README.md

Lines changed: 43 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,19 @@
22

33
Easily run ShinyProxy on a Kubernetes cluster
44

5-
**(c) Copyright Open Analytics NV, 2020-2023 - Apache License 2.0**
5+
**(c) Copyright Open Analytics NV, 2020-2024 - Apache License 2.0**
66

77
## Why?
88

99
Deploying and managing ShinyProxy can get complex when many apps are used,
1010
especially when the configuration of ShinyProxy is often updated.
1111

12-
When restarting a running ShinyProxy instance (in order to update its configuration),
13-
users will face a disconnect from their running applications. The only solution
14-
to guarantee that users do not lose their connection to running apps, is to keep
15-
the current instance alive when updating ShinyProxy's configuration. However,
16-
manually keeping track of these instances would be too cumbersome and should
17-
therefore be automated.
12+
When restarting a running ShinyProxy instance (in order to update its
13+
configuration), users will face a disconnect from their running applications.
14+
The only solution to guarantee that users do not lose their connection to
15+
running apps, is to keep the current instance alive when updating ShinyProxy's
16+
configuration. However, manually keeping track of these instances would be too
17+
cumbersome and should therefore be automated.
1818

1919
The ShinyProxy operator for Kubernetes is able to manage multiple ShinyProxy
2020
instances and their configuration.
@@ -88,13 +88,13 @@ start with the `SPO` prefix, meaning **S**hiny**P**roxy**O**perator.
8888
probe. By default, this is 60 seconds.
8989
- `SPO_LOG_LEVEL`: configures the log level of the operator, may be one of the
9090
following:
91-
- `OFF`: disables logging
92-
- `ERROR`
93-
- `WARN`
94-
- `INFO`
95-
- `DEBUG`: default (may change)
96-
- `TRACE`
97-
- `ALL`: enables all logging
91+
- `OFF`: disables logging
92+
- `ERROR`
93+
- `WARN`
94+
- `INFO`
95+
- `DEBUG`: default (may change)
96+
- `TRACE`
97+
- `ALL`: enables all logging
9898

9999
Note: in our deployments where startup probes aren't supported we have success
100100
with the following configuration:
@@ -113,20 +113,23 @@ ShinyProxy and the operator for the best experience.
113113

114114
| ShinyProxy Version | Minimum operator version | Maximum operator version (inclusive) |
115115
|--------------------|----------------------------------|--------------------------------------|
116-
| 3.0.0 | 2.0.0 | TBD |
116+
| 3.1.0 | 2.1.0 | TBD |
117+
| 3.0.0 | 2.0.0 | TBD (works with 2.1.0) |
117118
| 2.6.0 | 1.0.0 | 1.1.0 |
118119
| 2.5.0 | `0.0.1-SNAPSHOT-20210302.095930` | `0.0.1-SNAPSHOT-20210607.070151` |
119120
| 2.4.3 | `0.0.1-SNAPSHOT-20201215.112635` | `0.0.1-SNAPSHOT-20201215.112635` |
120121

121122
## Kubernetes versions
122123

123-
| | k8s 1.25.x | k8s 1.24.x | k8s 1.23.x | k8s 1.22.x | k8s >= v1.21.3 | k8s <= v1.21.2 | k8s >= 1.20.10 | k8s <= v1.20.9 | v1.19 | <= v1.18 |
124-
|-------|------------|------------|-------------|------------|----------------|----------------|----------------|----------------|-------|----------|
125-
| 2.0.0 |||||| ✓¹ || ✓¹ || - |
124+
| | k8s 1.29.x | k8s 1.28.x | k8s 1.27.x | k8s 1.26.x | k8s 1.25.x | k8s 1.24.x | k8s 1.23.x | k8s 1.22.x | k8s >= v1.21.3 | k8s <= v1.21.2 | k8s >= 1.20.10 | k8s <= v1.20.9 | v1.19 | <= v1.18 |
125+
|-------|------------|------------|------------|------------|------------|------------|------------|------------|----------------|----------------|----------------|----------------|-------|----------|
126+
| 2.1.0 |||||||||| ✓¹ || ✓¹ || - |
127+
| 2.0.0 | ✓² | ✓² | ✓² | ✓² | ✓² | ✓² |||| ✓¹ || ✓¹ || - |
126128

127129
**Note:**
128130

129131
- ¹ requires a workaround, see below.
132+
- ² version 2.0.0 supports these Kubernetes versions, but might stop syncing after some time, this issue is solved in version 2.1.0
130133

131134
### Workaround for bug in Kubernetes
132135

@@ -153,18 +156,18 @@ Be aware of these changes when updating to version 2.0.0:
153156
started, all new requests will be handled by the new server, including
154157
requests for existing apps. Only existing websocket connections will stay open
155158
on the old servers. This has multiple benefits:
156-
- when a new server is started, users will immediately use and see the
157-
configuration of that new server. In other words, if a new configuration
158-
includes a new app, this app is immediately available to all users (even if
159-
they are using apps started on older servers)
160-
- there is no longer a process of transferring users to new servers. Both the
161-
forced method and the manual method (where users have to click a button) are
162-
removed. Users will immediately use the new configuration.
163-
- apps can be run for a (very) long time, even if frequently updating the
164-
configuration and without having many old servers. Old servers are removed
165-
as soon as no websocket connections are running on that server.
166-
- Skipper is no longer a dependency of the operator. There is no benefit in
167-
using with version two of the operator.
159+
- when a new server is started, users will immediately use and see the
160+
configuration of that new server. In other words, if a new configuration
161+
includes a new app, this app is immediately available to all users (even
162+
if they are using apps started on older servers)
163+
- there is no longer a process of transferring users to new servers. Both
164+
the forced method and the manual method (where users have to click a
165+
button) are removed. Users will immediately use the new configuration.
166+
- apps can be run for a (very) long time, even if frequently updating the
167+
configuration and without having many old servers. Old servers are removed
168+
as soon as no websocket connections are running on that server.
169+
- Skipper is no longer a dependency of the operator. There is no benefit in
170+
using with version two of the operator.
168171
- the operator now requires ShinyProxy to store the active proxies in Redis.
169172
Therefore, since this release Redis takes a more critical role. When running
170173
Redis inside Kubernetes, it is therefore best practice to use Redis Sentinel.
@@ -182,8 +185,16 @@ need to be made to the ShinyProxy configuration file:
182185
- optionally add the
183186
property [`kubernetesIngressPatches`](docs/deployment#modify-the-ingress-resource)
184187
in order to customize the ingress created by the operator.
185-
- update the ShinyProxy image to `openanalytics/shinyproxy:3.0.1`
188+
- update the ShinyProxy image to `openanalytics/shinyproxy:3.1.0`
189+
190+
### Update to 2.1.0
191+
192+
The [ShinyProxy CRD](docs/deployment/bases/namespaced/crds/shinyproxy.crd.yaml)
193+
has been updated in version 2.1.0, it is important to update the CRD in your
194+
cluster. Running the [deployment commands](docs/deployment/) is enough. The CRD
195+
can be updated while ShinyProxy and the ShinyProxy operator are running in the
196+
cluster.
186197

187198
## Java Version
188199

189-
This project requires JDK 11.
200+
This project requires JDK 17.

0 commit comments

Comments
 (0)