Skip to content

Commit a92de2a

Browse files
committed
Add CA and PVA gateways service
1 parent d0514a2 commit a92de2a

File tree

4 files changed

+53
-1
lines changed

4 files changed

+53
-1
lines changed

.copier-answers.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ cluster_name: argus
66
cluster_namespace: can51182
77
description: t01 IOC Instances and Services
88
domain: t01
9-
gateway: false
9+
gateway: true
1010
git_platform: github.com
1111
location: bl01t
1212
logging_url: https://graylog2.diamond.ac.uk/search?rangetype=relative&fields=message%2Csource&width=1489&highlightMessage=&relative=172800&q=pod_name%3A{service_name}*
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
apiVersion: v2
2+
name: ec-gateways
3+
version: 1.0.0
4+
5+
type: application
6+
7+
dependencies:
8+
- name: epics-gateways
9+
version: 2025.11.1
10+
repository: "oci://ghcr.io/epics-containers"
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Gateway setup
2+
3+
Deploys an EPICS gateway to route traffic from services to IOCs. Includes containerised IOCs in the namespace, and others in the beamline network. Exposed as a LoadBalancer to allow services outside of the cluster to communicate with containerised IOCs.
4+
5+
## Configuring services in the cluster
6+
7+
Add the following environment variables to any container(s) that communicate with the appropriate EPICS protocol(s):
8+
9+
```yaml
10+
- name: EPICS_PVA_NAME_SERVERS
11+
value: t01-epics-gateways
12+
- name: EPICS_PVA_AUTO_ADDR_LIST
13+
value: "NO"
14+
- name: EPICS_CA_NAME_SERVERS
15+
value: t01-epics-gateways
16+
- name: EPICS_CA_AUTO_ADDR_LIST
17+
value: "NO"
18+
```
19+
20+
## Configuring external services with the LoadBalancer
21+
22+
Get the external IP of the created LoadBalancer, noting that the external IP can change, especially when nodes are drained for upgrades. If the service is required longer than a single interactive session and the service cannot be deployed into the cluster, consider requesting a static IP and DNS entry.
23+
Ingresses do not support non-HTTP traffic, so UDP/TCP support will require either a static LoadBalancer or Gateway API support.
24+
25+
```sh
26+
$ module load k8s-t01
27+
$ kubectl get svc -n t01-beamline t01-epics-gateways
28+
NAME ... EXTERNAL-IP ...
29+
t01-epics-gateways ... 172.23.XX.XX ...
30+
$ export GATEWAY_IP=172.23.XX.XX
31+
```
32+
33+
Launch your service with the LoadBalancer as the name server for the appropriate EPICS protocol(s):
34+
35+
```sh
36+
$ EPICS_PVA_AUTO_ADDR_LIST=NO EPICS_PVA_NAME_SERVERS=${GATEWAY_IP} EPICS_CA_AUTO_ADDR_LIST=NO EPICS_CA_NAME_SERVERS=${GATEWAY_IP} my_service
37+
```
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
epics-gateways:
2+
# for personal namespaces we don't have host network permission
3+
hostNetwork: false
4+
# for the tutorials use the developer image - good for debugging
5+
image: ghcr.io/epics-containers/epics-gateways-developer:2025.11.1

0 commit comments

Comments
 (0)