Skip to content

Commit c221021

Browse files
committed
Try dnssrv. it doesn't work, see bitwalker/libcluster#123
1 parent 7a11f79 commit c221021

File tree

9 files changed

+217
-0
lines changed

9 files changed

+217
-0
lines changed

apps/app_a/config/runtime.exs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,19 @@
11
import Config
22

33
cond do
4+
System.get_env("LIBCLUSTER_STRATEGY") == "kubernetes.dnssrv" ->
5+
config :libcluster,
6+
topologies: [
7+
k8s_dnssrv: [
8+
strategy: Cluster.Strategy.Kubernetes.DNSSRV,
9+
config: [
10+
service: "beam-headless",
11+
application_name: "cluster-app",
12+
namespace: "default",
13+
]
14+
]
15+
]
16+
417
System.get_env("LIBCLUSTER_STRATEGY") == "kubernetes.dns" ->
518
config :libcluster,
619
topologies: [

apps/app_b/config/runtime.exs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,19 @@
11
import Config
22

33
cond do
4+
System.get_env("LIBCLUSTER_STRATEGY") == "kubernetes.dnssrv" ->
5+
config :libcluster,
6+
topologies: [
7+
k8s_dnssrv: [
8+
strategy: Cluster.Strategy.Kubernetes.DNSSRV,
9+
config: [
10+
service: "beam-headless",
11+
application_name: "cluster-app",
12+
namespace: "default",
13+
]
14+
]
15+
]
16+
417
System.get_env("LIBCLUSTER_STRATEGY") == "kubernetes.dns" ->
518
config :libcluster,
619
topologies: [

k8s_dnssrv/app-a-deployment.yaml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
apiVersion: apps/v1
2+
kind: StatefulSet
3+
metadata:
4+
name: cluster-app
5+
spec:
6+
serviceName: "beam-headless"
7+
replicas: 3
8+
selector:
9+
matchLabels:
10+
cluster: beam
11+
template:
12+
metadata:
13+
labels:
14+
component: app-a
15+
cluster: beam
16+
spec:
17+
containers:
18+
- name: app-a
19+
image: app-a
20+
imagePullPolicy: Never
21+
ports:
22+
- containerPort: 4001
23+
- containerPort: 9000
24+
env:
25+
- name: LIBCLUSTER_STRATEGY
26+
value: "kubernetes.dnssrv"
27+
- name: PORT
28+
value: "4001"
29+
- name: START_SERVER
30+
value: "true"
31+
- name: ERLANG_COOKIE
32+
value: "secret"
33+
- name: POD_IP
34+
valueFrom:
35+
fieldRef:
36+
fieldPath: status.podIP
37+
- name: POD_NAME
38+
valueFrom:
39+
fieldRef:
40+
fieldPath: metadata.name
41+
command: [ "elixir" ]
42+
args: [
43+
"--name",
44+
"cluster-app@$(POD_NAME).beam-headless.default.svc.cluster.local",
45+
"--cookie","$(ERLANG_COOKIE)",
46+
"--erl",
47+
"-kernel inet_dist_listen_min 9000 inet_dist_listen_max 9000",
48+
"--no-halt",
49+
"-S","mix",
50+
"run"
51+
]

k8s_dnssrv/app-b-deployment.yaml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#apiVersion: apps/v1
2+
#kind: StatefulSet
3+
#metadata:
4+
# name: cluster-app
5+
#spec:
6+
# serviceName: "beam-headless"
7+
# replicas: 3
8+
# selector:
9+
# matchLabels:
10+
# cluster: beam
11+
# template:
12+
# metadata:
13+
# labels:
14+
# component: app-b
15+
# cluster: beam
16+
# spec:
17+
# containers:
18+
# - name: app-b
19+
# image: app-b
20+
# imagePullPolicy: Never
21+
# ports:
22+
# - containerPort: 4002
23+
# - containerPort: 9000
24+
# env:
25+
# - name: LIBCLUSTER_STRATEGY
26+
# value: "kubernetes.dnssrv"
27+
# - name: PORT
28+
# value: "4002"
29+
# - name: START_SERVER
30+
# value: "true"
31+
# - name: ERLANG_COOKIE
32+
# value: "secret"
33+
# - name: POD_IP
34+
# valueFrom:
35+
# fieldRef:
36+
# fieldPath: status.podIP
37+
# - name: POD_NAME
38+
# valueFrom:
39+
# fieldRef:
40+
# fieldPath: metadata.name
41+
# command: [ "elixir" ]
42+
# args: [
43+
# "--name",
44+
# "cluster-app@$(POD_NAME).beam-headless.default.svc.cluster.local",
45+
# "--cookie","$(ERLANG_COOKIE)",
46+
# "--erl",
47+
# "-kernel inet_dist_listen_min 9000 inet_dist_listen_max 9000",
48+
# "--no-halt",
49+
# "-S","mix",
50+
# "run"
51+
# ]
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#apiVersion: apps/v1
2+
#kind: Deployment
3+
#metadata:
4+
# name: livebook-deployment
5+
#spec:
6+
# replicas: 1
7+
# selector:
8+
# matchLabels:
9+
# component: livebook
10+
# template:
11+
# metadata:
12+
# labels:
13+
# component: livebook
14+
# cluster: beam
15+
# spec:
16+
# containers:
17+
# - name: livebook
18+
# image: antonmi/livebook
19+
# ports:
20+
# - containerPort: 8080
21+
# - containerPort: 8081
22+
# env:
23+
# - name: LIBCLUSTER_STRATEGY
24+
# value: "kubernetes.dns"
25+
# - name: LIVEBOOK_PASSWORD
26+
# value: "securesecret"
27+
# - name: LIVEBOOK_COOKIE
28+
# value: "secret"
29+
# - name: ERLANG_COOKIE
30+
# value: "secret"
31+
# - name: LIVEBOOK_DISTRIBUTION
32+
# value: "name"
33+
# - name: POD_IP
34+
# valueFrom:
35+
# fieldRef:
36+
# fieldPath: status.podIP
37+
# - name: LIVEBOOK_NODE
38+
# value: "cluster-app@$(POD_IP)"
39+
# - name: LIVEBOOK_DEFAULT_RUNTIME
40+
# value: "attached:$(LIVEBOOK_NODE):$(LIVEBOOK_COOKIE)"

k8s_dnssrv/livebook-service.yaml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
name: livebook-service
5+
spec:
6+
type: LoadBalancer
7+
ports:
8+
- name: http
9+
port: 8080
10+
targetPort: 8080
11+
# - name: web-socket
12+
# port: 8081
13+
# targetPort: 8081
14+
selector:
15+
component: livebook

k8s_dnssrv/service-a.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
name: service-a
5+
spec:
6+
type: LoadBalancer
7+
ports:
8+
- port: 4001
9+
targetPort: 4001
10+
selector:
11+
component: app-a

k8s_dnssrv/service-b.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
name: service-b
5+
spec:
6+
type: LoadBalancer
7+
ports:
8+
- port: 4002
9+
targetPort: 4002
10+
selector:
11+
component: app-b
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# use for Cluster.Strategy.Kubernetes.DNS
2+
apiVersion: v1
3+
kind: Service
4+
5+
metadata:
6+
name: beam-headless
7+
labels:
8+
cluster: beam
9+
spec:
10+
clusterIP: None
11+
selector:
12+
cluster: beam

0 commit comments

Comments
 (0)