Skip to content

Commit 7c0455f

Browse files
authored
Set up Flink SQL Gateway (#85)
1 parent 574be65 commit 7c0455f

File tree

19 files changed

+123
-130
lines changed

19 files changed

+123
-130
lines changed

.github/workflows/integration-tests.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ jobs:
3232
run: |
3333
kind load docker-image hoptimator
3434
kind load docker-image hoptimator-flink-runner
35+
kind load docker-image hoptimator-flink-operator
3536
- name: Deploy Dev Environment
3637
run: make deploy-dev-environment
3738
- name: Deploy Hoptimator
@@ -64,4 +65,4 @@ jobs:
6465
- name: Capture Flink Job Logs
6566
if: always()
6667
run: kubectl logs $(kubectl get pods -l app.kubernetes.io/name=flink-kubernetes-operator -o name)
67-
68+

Makefile

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ test:
88
build:
99
./gradlew build
1010
docker build . -t hoptimator
11-
docker build hoptimator-flink-runner -t hoptimator-flink-runner
11+
docker build hoptimator-flink-runner -f hoptimator-flink-runner/Dockerfile-flink-runner -t hoptimator-flink-runner
12+
docker build hoptimator-flink-runner -f hoptimator-flink-runner/Dockerfile-flink-operator -t hoptimator-flink-operator
1213

1314
bounce: build undeploy deploy deploy-samples deploy-config deploy-demo
1415

@@ -47,26 +48,32 @@ deploy-samples: deploy
4748
undeploy-samples: undeploy
4849
kubectl delete -f ./deploy/samples || echo "skipping"
4950

50-
deploy-flink:
51+
deploy-flink: deploy
52+
kubectl create -f https://github.com/jetstack/cert-manager/releases/download/v1.8.2/cert-manager.yaml || echo "skipping"
5153
helm repo add flink-operator-repo https://downloads.apache.org/flink/flink-kubernetes-operator-1.9.0/
52-
helm upgrade --install --atomic --set webhook.create=false flink-kubernetes-operator flink-operator-repo/flink-kubernetes-operator
54+
helm upgrade --install --atomic --set webhook.create=false,image.pullPolicy=Never,image.repository=docker.io/library/hoptimator-flink-operator,image.tag=latest flink-kubernetes-operator flink-operator-repo/flink-kubernetes-operator
55+
kubectl apply -f deploy/samples/flinkDeployment.yaml
56+
kubectl apply -f deploy/samples/flinkSessionJob.yaml
57+
docker compose -f ./deploy/docker/flink/docker-compose-sql-gateway.yaml up -d --wait
5358

5459
undeploy-flink:
55-
kubectl delete flinkdeployments.flink.apache.org --all || echo "skipping"
60+
docker compose -f ./deploy/docker/flink/docker-compose-sql-gateway.yaml down
5661
kubectl delete flinksessionjobs.flink.apache.org --all || echo "skipping"
57-
kubectl delete crd flinkdeployments.flink.apache.org || echo "skipping"
62+
kubectl delete flinkdeployments.flink.apache.org --all || echo "skipping"
5863
kubectl delete crd flinksessionjobs.flink.apache.org || echo "skipping"
64+
kubectl delete crd flinkdeployments.flink.apache.org || echo "skipping"
5965
helm uninstall flink-kubernetes-operator || echo "skipping"
66+
helm repo remove flink-operator-repo || echo "skipping"
6067

6168
deploy-kafka: deploy deploy-flink
62-
kubectl create -f https://github.com/jetstack/cert-manager/releases/download/v1.8.2/cert-manager.yaml || echo "skipping"
6369
kubectl create namespace kafka || echo "skipping"
6470
kubectl apply -f "https://strimzi.io/install/latest?namespace=kafka" -n kafka
6571
kubectl wait --for=condition=Established=True crds/kafkas.kafka.strimzi.io
6672
kubectl apply -f ./hoptimator-k8s/src/main/resources/
6773
kubectl apply -f ./deploy/dev
6874
kubectl apply -f ./deploy/samples/demodb.yaml
6975
kubectl apply -f ./deploy/samples/kafkadb.yaml
76+
kubectl delete -f https://github.com/jetstack/cert-manager/releases/download/v1.8.2/cert-manager.yaml || echo "skipping"
7077

7178
undeploy-kafka:
7279
kubectl delete kafkatopic.kafka.strimzi.io -n kafka --all || echo "skipping"
@@ -78,18 +85,17 @@ undeploy-kafka:
7885
kubectl delete -f ./deploy/dev || echo "skipping"
7986
kubectl delete -f ./hoptimator-k8s/src/main/resources/ || echo "skipping"
8087
kubectl delete namespace kafka || echo "skipping"
81-
kubectl delete -f https://github.com/jetstack/cert-manager/releases/download/v1.8.2/cert-manager.yaml || echo "skipping"
8288

8389
# Deploys Venice cluster in docker and creates two stores in Venice. Stores are not managed via K8s for now.
8490
deploy-venice: deploy deploy-flink
85-
docker compose -f ./deploy/docker/docker-compose-single-dc-setup.yaml up -d --wait
91+
docker compose -f ./deploy/docker/venice/docker-compose-single-dc-setup.yaml up -d --wait
8692
docker exec venice-client ./create-store.sh http://venice-controller:5555 venice-cluster0 test-store schemas/keySchema.avsc schemas/valueSchema.avsc
8793
docker exec venice-client ./create-store.sh http://venice-controller:5555 venice-cluster0 test-store-1 schemas/keySchema.avsc schemas/valueSchema.avsc
8894
kubectl apply -f ./deploy/samples/venicedb.yaml
8995

9096
undeploy-venice:
9197
kubectl delete -f ./deploy/samples/venicedb.yaml || echo "skipping"
92-
docker compose -f ./deploy/docker/docker-compose-single-dc-setup.yaml down
98+
docker compose -f ./deploy/docker/venice/docker-compose-single-dc-setup.yaml down
9399

94100
deploy-dev-environment: deploy deploy-flink deploy-kafka deploy-venice
95101

README.md

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ The below setup will install two local demo DBs, ads and profiles.
4848
> !intro
4949
```
5050

51-
## Set up Kafka & Flink clusters
51+
## Set up dev environment
5252

53-
The below setup will install a Kafka and Flink cluster within Kubernetes.
53+
The below setup will create a dev environment with various resources within Kubernetes.
5454

5555
```
5656
$ make install # build and install SQL CLI
@@ -60,6 +60,26 @@ The below setup will install a Kafka and Flink cluster within Kubernetes.
6060
> !intro
6161
```
6262

63+
Commands `deploy-kafka`, `deploy-venice`, `deploy-flink`, etc. exist in isolation to deploy individual components.
64+
65+
### Flink
66+
67+
```
68+
$ kubectl get pods
69+
NAME READY STATUS RESTARTS AGE
70+
basic-session-deployment-7b94b98b6b-d6jt5 1/1 Running 0 43s
71+
```
72+
73+
Once the Flink deployment pod has STATUS 'Running', you can forward port 8081 and connect to http://localhost:8081/
74+
to access the Flink dashboard.
75+
76+
```
77+
$ kubectl port-forward basic-session-deployment-7b94b98b6b-d6jt5 8081 &
78+
```
79+
80+
See the [Flink SQL Gateway Documentation](https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/dev/table/sql-gateway/overview/)
81+
for sample adhoc queries through Flink.
82+
6383
## The SQL CLI
6484

6585
The `./hoptimator` script launches the [sqlline](https://github.com/julianhyde/sqlline) SQL CLI pre-configured to connect to `jdbc:hoptimator://`. The CLI includes some additional commands. See `!intro`.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
services:
2+
flink-sql-gateway:
3+
image: flink:1.18.1
4+
restart: unless-stopped
5+
entrypoint: >
6+
/bin/sh -c "./bin/sql-gateway.sh start-foreground -Dsql-gateway.endpoint.rest.address=localhost"
7+
ports:
8+
- 8083:8083
9+
deploy:
10+
resources:
11+
limits:
12+
memory: 1024M

deploy/docker/docker-compose-single-dc-setup.yaml renamed to deploy/docker/venice/docker-compose-single-dc-setup.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ services:
7878
hostname: venice-client
7979
tty: true
8080
volumes:
81-
- ./venice:/opt/venice/schemas
81+
- ./schemas:/opt/venice/schemas
8282
depends_on:
8383
venice-router:
8484
condition: service_healthy
File renamed without changes.
File renamed without changes.

deploy/samples/flink.yaml

Lines changed: 0 additions & 36 deletions
This file was deleted.
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
apiVersion: flink.apache.org/v1beta1
2+
kind: FlinkDeployment
3+
metadata:
4+
name: basic-session-deployment
5+
spec:
6+
image: flink:1.18
7+
flinkVersion: v1_18
8+
flinkConfiguration:
9+
taskmanager.numberOfTaskSlots: "1"
10+
serviceAccount: flink
11+
jobManager:
12+
resource:
13+
memory: "2048m"
14+
cpu: 0.1
15+
taskManager:
16+
resource:
17+
memory: "2048m"
18+
cpu: 0.1
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
## This template adds Flink support.
2+
3+
apiVersion: hoptimator.linkedin.com/v1alpha1
4+
kind: JobTemplate
5+
metadata:
6+
name: flink-template
7+
spec:
8+
yaml: |
9+
apiVersion: flink.apache.org/v1beta1
10+
kind: FlinkSessionJob
11+
metadata:
12+
name: {{name}}
13+
spec:
14+
deploymentName: basic-session-deployment
15+
job:
16+
entryClass: com.linkedin.hoptimator.flink.runner.FlinkRunner
17+
args:
18+
- {{flinksql}}
19+
jarURI: file:///opt/hoptimator-flink-runner.jar
20+
parallelism: 1
21+
upgradeMode: stateless
22+
state: running

0 commit comments

Comments
 (0)