Skip to content

Commit 7193565

Browse files
authored
Merge pull request #397 from serverlessworkflow/feat-kubernetes-runtime
Add a new Kubernetes implementation of the IContainerPlatform interface
2 parents e511b71 + e92a8f1 commit 7193565

File tree

47 files changed

+951
-120
lines changed

Some content is hidden

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

47 files changed

+951
-120
lines changed

Synapse.sln

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,12 +128,16 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "templates", "templates", "{
128128
deployments\helm\templates\services.yaml = deployments\helm\templates\services.yaml
129129
EndProjectSection
130130
EndProject
131-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Synapse.Runtime.Docker", "src\runtime\Synapse.Runtime.Docker\Synapse.Runtime.Docker.csproj", "{8FF58403-9E13-4F58-864F-E6FBC877BF37}"
131+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Synapse.Runtime.Docker", "src\runtime\Synapse.Runtime.Docker\Synapse.Runtime.Docker.csproj", "{8FF58403-9E13-4F58-864F-E6FBC877BF37}"
132132
EndProject
133-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Synapse.Runtime.Kubernetes", "src\runtime\Synapse.Runtime.Kubernetes\Synapse.Runtime.Kubernetes.csproj", "{9B37AA4A-A342-4A41-A2A1-C8466825A70A}"
133+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Synapse.Runtime.Kubernetes", "src\runtime\Synapse.Runtime.Kubernetes\Synapse.Runtime.Kubernetes.csproj", "{9B37AA4A-A342-4A41-A2A1-C8466825A70A}"
134134
EndProject
135135
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Synapse.Core.Infrastructure.Containers.Docker", "src\core\Synapse.Core.Infrastructure.Containers.Docker\Synapse.Core.Infrastructure.Containers.Docker.csproj", "{DD6381BD-2C8B-4CE1-99B2-EC585DD818FA}"
136136
EndProject
137+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "kubernetes", "kubernetes", "{B3F3DB1B-23E7-45FA-8934-448BFFB294E8}"
138+
EndProject
139+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Synapse.Core.Infrastructure.Containers.Kubernetes", "src\core\Synapse.Core.Infrastructure.Containers.Kubernetes\Synapse.Core.Infrastructure.Containers.Kubernetes.csproj", "{41C99069-BD99-4FD2-BF33-984CF03B53E8}"
140+
EndProject
137141
Global
138142
GlobalSection(SolutionConfigurationPlatforms) = preSolution
139143
Debug|Any CPU = Debug|Any CPU
@@ -224,6 +228,10 @@ Global
224228
{DD6381BD-2C8B-4CE1-99B2-EC585DD818FA}.Debug|Any CPU.Build.0 = Debug|Any CPU
225229
{DD6381BD-2C8B-4CE1-99B2-EC585DD818FA}.Release|Any CPU.ActiveCfg = Release|Any CPU
226230
{DD6381BD-2C8B-4CE1-99B2-EC585DD818FA}.Release|Any CPU.Build.0 = Release|Any CPU
231+
{41C99069-BD99-4FD2-BF33-984CF03B53E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
232+
{41C99069-BD99-4FD2-BF33-984CF03B53E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
233+
{41C99069-BD99-4FD2-BF33-984CF03B53E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
234+
{41C99069-BD99-4FD2-BF33-984CF03B53E8}.Release|Any CPU.Build.0 = Release|Any CPU
227235
EndGlobalSection
228236
GlobalSection(SolutionProperties) = preSolution
229237
HideSolutionNode = FALSE
@@ -262,6 +270,8 @@ Global
262270
{8FF58403-9E13-4F58-864F-E6FBC877BF37} = {175CE1C5-FE17-4C8B-8823-E812BAD4E527}
263271
{9B37AA4A-A342-4A41-A2A1-C8466825A70A} = {175CE1C5-FE17-4C8B-8823-E812BAD4E527}
264272
{DD6381BD-2C8B-4CE1-99B2-EC585DD818FA} = {9E296C8A-4D78-4592-B046-11A3A953FD25}
273+
{B3F3DB1B-23E7-45FA-8934-448BFFB294E8} = {562C91A3-6E91-4489-9D9D-064E7436D900}
274+
{41C99069-BD99-4FD2-BF33-984CF03B53E8} = {9E296C8A-4D78-4592-B046-11A3A953FD25}
265275
EndGlobalSection
266276
GlobalSection(ExtensibilityGlobals) = postSolution
267277
SolutionGuid = {2A6C03D6-355A-4B39-9F2B-D0FDE429C0E2}

deployments/helm/templates/deployment.yaml

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,13 @@ spec:
8888
- name: CONNECTIONSTRINGS__REDIS
8989
value: {{ .Values.global.redisConnectionString }}
9090
- name: SYNAPSE_OPERATOR_NAMESPACE
91-
value: {{ .Values.operator.env.SYNAPSE_OPERATOR_NAMESPACE }}
91+
valueFrom:
92+
fieldRef:
93+
fieldPath: metadata.namespace
9294
- name: SYNAPSE_OPERATOR_NAME
93-
value: {{ .Values.operator.env.SYNAPSE_OPERATOR_NAME }}
95+
valueFrom:
96+
fieldRef:
97+
fieldPath: metadata.name
9498
- name: SYNAPSE_OPERATOR_RUNNER_API
9599
value: {{ .Values.operator.env.SYNAPSE_OPERATOR_RUNNER_API }}
96100
- name: DOCKER_HOST
@@ -128,9 +132,13 @@ spec:
128132
- name: CONNECTIONSTRINGS__REDIS
129133
value: {{ .Values.global.redisConnectionString }}
130134
- name: SYNAPSE_CORRELATOR_NAMESPACE
131-
value: {{ .Values.correlator.env.SYNAPSE_CORRELATOR_NAMESPACE }}
135+
valueFrom:
136+
fieldRef:
137+
fieldPath: metadata.namespace
132138
- name: SYNAPSE_CORRELATOR_NAME
133-
value: {{ .Values.correlator.env.SYNAPSE_CORRELATOR_NAME }}
139+
valueFrom:
140+
fieldRef:
141+
fieldPath: metadata.name
134142
---
135143
apiVersion: v1
136144
kind: PersistentVolumeClaim

deployments/helm/values.yaml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,6 @@ operator:
3333
service:
3434
type: ClusterIP
3535
env:
36-
SYNAPSE_OPERATOR_NAMESPACE: default
37-
SYNAPSE_OPERATOR_NAME: operator-1
3836
SYNAPSE_OPERATOR_RUNNER_API: http://api:8080
3937
DOCKER_HOST: unix:///var/run/docker.sock
4038

@@ -45,9 +43,6 @@ correlator:
4543
service:
4644
type: ClusterIP
4745
port: 8081
48-
env:
49-
SYNAPSE_CORRELATOR_NAMESPACE: default
50-
SYNAPSE_CORRELATOR_NAME: correlator-1
5146

5247
serviceAccount:
5348
create: true

deployments/kubernetes/api.yaml

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: api-1
5+
namespace: synapse
6+
spec:
7+
replicas: 1
8+
selector:
9+
matchLabels:
10+
app: api
11+
template:
12+
metadata:
13+
labels:
14+
app: api
15+
spec:
16+
containers:
17+
- name: api
18+
image: ghcr.io/serverlessworkflow/synapse/api:1.0.0-alpha1
19+
env:
20+
- name: CONNECTIONSTRINGS__REDIS
21+
value: garnet:6379
22+
- name: SYNAPSE_DASHBOARD_SERVE
23+
value: 'true'
24+
- name: SYNAPSE_API_AUTH_TOKEN_FILE
25+
value: /app/tokens.yaml
26+
- name: SYNAPSE_API_JWT_AUTHORITY
27+
value: http://api:8080
28+
- name: SYNAPSE_API_CLOUD_EVENTS_ENDPOINT
29+
value: https://webhook.site/a4aff725-0711-48b2-a9d2-5d1b806d04d0
30+
ports:
31+
- containerPort: 8080
32+
volumeMounts:
33+
- name: tokens
34+
mountPath: /app/tokens.yaml
35+
subPath: tokens.yaml
36+
volumes:
37+
- name: tokens
38+
hostPath:
39+
path: /run/desktop/mnt/host/c/Users/User/.synapse
40+
---
41+
42+
apiVersion: v1
43+
kind: Service
44+
metadata:
45+
name: api
46+
namespace: synapse
47+
spec:
48+
ports:
49+
- port: 8080
50+
targetPort: 8080
51+
selector:
52+
app: api
53+
type: ClusterIP
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: correlator-1
5+
namespace: synapse
6+
spec:
7+
replicas: 1
8+
selector:
9+
matchLabels:
10+
app: correlator
11+
template:
12+
metadata:
13+
labels:
14+
app: correlator
15+
spec:
16+
containers:
17+
- name: correlator
18+
image: ghcr.io/serverlessworkflow/synapse/correlator:1.0.0-alpha1
19+
env:
20+
- name: CONNECTIONSTRINGS__REDIS
21+
value: garnet:6379
22+
- name: SYNAPSE_CORRELATOR_NAMESPACE
23+
value: default
24+
- name: SYNAPSE_CORRELATOR_NAME
25+
value: correlator-1
26+
ports:
27+
- containerPort: 8080
28+
29+
---
30+
31+
apiVersion: v1
32+
kind: Service
33+
metadata:
34+
name: correlator
35+
namespace: synapse
36+
spec:
37+
ports:
38+
- port: 8080
39+
targetPort: 8080
40+
selector:
41+
app: correlator
42+
type: ClusterIP

deployments/kubernetes/garnet.yaml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: garnet
5+
namespace: synapse
6+
spec:
7+
replicas: 1
8+
selector:
9+
matchLabels:
10+
app: garnet
11+
template:
12+
metadata:
13+
labels:
14+
app: garnet
15+
spec:
16+
containers:
17+
- name: garnet
18+
image: ghcr.io/microsoft/garnet
19+
ports:
20+
- containerPort: 6379
21+
22+
---
23+
24+
apiVersion: v1
25+
kind: Service
26+
metadata:
27+
name: garnet
28+
namespace: synapse
29+
spec:
30+
ports:
31+
- port: 6379
32+
targetPort: 6379
33+
selector:
34+
app: garnet
35+
type: ClusterIP

deployments/kubernetes/namespace.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
apiVersion: v1
2+
kind: Namespace
3+
metadata:
4+
name: synapse

deployments/kubernetes/operator.yaml

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
apiVersion: v1
2+
kind: ServiceAccount
3+
metadata:
4+
name: operator
5+
namespace: synapse
6+
7+
---
8+
9+
apiVersion: rbac.authorization.k8s.io/v1
10+
kind: ClusterRole
11+
metadata:
12+
name: operator-role
13+
rules:
14+
- apiGroups: [""]
15+
resources: ["pods"]
16+
verbs: ["get", "list", "watch", "create", "update", "delete"]
17+
18+
---
19+
20+
apiVersion: rbac.authorization.k8s.io/v1
21+
kind: ClusterRoleBinding
22+
metadata:
23+
name: operator-role-binding
24+
subjects:
25+
- kind: ServiceAccount
26+
name: operator
27+
namespace: synapse
28+
roleRef:
29+
kind: ClusterRole
30+
name: operator-role
31+
apiGroup: rbac.authorization.k8s.io
32+
33+
---
34+
35+
apiVersion: apps/v1
36+
kind: Deployment
37+
metadata:
38+
name: operator-1
39+
namespace: synapse
40+
spec:
41+
replicas: 1
42+
selector:
43+
matchLabels:
44+
app: operator
45+
template:
46+
metadata:
47+
labels:
48+
app: operator
49+
spec:
50+
serviceAccountName: operator
51+
containers:
52+
- name: operator
53+
image: ghcr.io/serverlessworkflow/synapse/operator:1.0.0-alpha1
54+
env:
55+
- name: CONNECTIONSTRINGS__REDIS
56+
value: garnet:6379
57+
- name: SYNAPSE_OPERATOR_NAMESPACE
58+
value: default
59+
- name: SYNAPSE_OPERATOR_NAME
60+
value: operator-1
61+
- name: SYNAPSE_RUNNER_API
62+
value: http://api:8080
63+
- name: SYNAPSE_RUNNER_LIFECYCLE_EVENTS
64+
value: "true"
65+
- name: SYNAPSE_RUNNER_CONTAINER_PLATFORM
66+
value: kubernetes
67+
- name: SYNAPSE_RUNTIME_MODE
68+
value: kubernetes
69+
- name: SYNAPSE_RUNTIME_K8S_SERVICE_ACCOUNT
70+
value: operator
71+
- name: SYNAPSE_RUNTIME_K8S_NAMESPACE
72+
value: synapse
73+
---
74+
75+
apiVersion: v1
76+
kind: Service
77+
metadata:
78+
name: operator
79+
namespace: synapse
80+
spec:
81+
ports:
82+
- port: 80
83+
targetPort: 8080
84+
selector:
85+
app: operator
86+
type: ClusterIP

src/api/Synapse.Api.Application/Synapse.Api.Application.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
<PackageIcon>transparent_logomark_256.png</PackageIcon>
2525
<PackageReadmeFile>README.md</PackageReadmeFile>
2626
<Description>Contains the Synapse API commands, queries and services</Description>
27+
<AssemblyInformationalVersion>$(VersionPrefix)-$(VersionSuffix)</AssemblyInformationalVersion>
2728
<AssemblyVersion>$(VersionPrefix).0</AssemblyVersion>
2829
<FileVersion>$(VersionPrefix).0</FileVersion>
2930
<DebugType>embedded</DebugType>

src/api/Synapse.Api.Client.Core/Synapse.Api.Client.Core.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
<PackageIcon>transparent_logomark_256.png</PackageIcon>
2525
<PackageReadmeFile>README.md</PackageReadmeFile>
2626
<Description>Contains abstractions and interfaces used by clients of the Synapse API</Description>
27+
<AssemblyInformationalVersion>$(VersionPrefix)-$(VersionSuffix)</AssemblyInformationalVersion>
2728
<AssemblyVersion>$(VersionPrefix).0</AssemblyVersion>
2829
<FileVersion>$(VersionPrefix).0</FileVersion>
2930
<DebugType>embedded</DebugType>

src/api/Synapse.Api.Client.Http/Synapse.Api.Client.Http.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
<PackageIcon>transparent_logomark_256.png</PackageIcon>
2525
<PackageReadmeFile>README.md</PackageReadmeFile>
2626
<Description>Contains the HTTP client for the Synapse API</Description>
27+
<AssemblyInformationalVersion>$(VersionPrefix)-$(VersionSuffix)</AssemblyInformationalVersion>
2728
<AssemblyVersion>$(VersionPrefix).0</AssemblyVersion>
2829
<FileVersion>$(VersionPrefix).0</FileVersion>
2930
<DebugType>embedded</DebugType>

src/api/Synapse.Api.Http/Synapse.Api.Http.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
<PackageIcon>transparent_logomark_256.png</PackageIcon>
2626
<PackageReadmeFile>README.md</PackageReadmeFile>
2727
<Description>Contains the services and controllers used by Synapse HTTP API</Description>
28+
<AssemblyInformationalVersion>$(VersionPrefix)-$(VersionSuffix)</AssemblyInformationalVersion>
2829
<AssemblyVersion>$(VersionPrefix).0</AssemblyVersion>
2930
<FileVersion>$(VersionPrefix).0</FileVersion>
3031
<DebugType>embedded</DebugType>

src/api/Synapse.Api.Server/Synapse.Api.Server.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
<PackageTags>synapse api server</PackageTags>
2020
<PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
2121
<PackageRequireLicenseAcceptance>True</PackageRequireLicenseAcceptance>
22+
<AssemblyInformationalVersion>$(VersionPrefix)-$(VersionSuffix)</AssemblyInformationalVersion>
2223
<AssemblyVersion>$(VersionPrefix).0</AssemblyVersion>
2324
<FileVersion>$(VersionPrefix).0</FileVersion>
2425
<DebugType>embedded</DebugType>

src/cli/Synapse.Cli/Synapse.Cli.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
<NeutralLanguage>en</NeutralLanguage>
2222
<PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
2323
<PackageRequireLicenseAcceptance>True</PackageRequireLicenseAcceptance>
24+
<AssemblyInformationalVersion>$(VersionPrefix)-$(VersionSuffix)</AssemblyInformationalVersion>
2425
<AssemblyVersion>$(VersionPrefix).0</AssemblyVersion>
2526
<FileVersion>$(VersionPrefix).0</FileVersion>
2627
<DebugType>embedded</DebugType>

0 commit comments

Comments
 (0)