You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
173 lines
6.4 KiB
173 lines
6.4 KiB
{{- if .Values.sqlGateway.enabled }}
|
|
---
|
|
# SQL Gateway Deployment (separate from Flink cluster)
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: {{ .Values.sqlGateway.name }}
|
|
namespace: {{ include "flink-sql-gateway.namespace" . }}
|
|
labels:
|
|
{{- include "flink-sql-gateway.sqlGateway.labels" . | nindent 4 }}
|
|
{{- with .Values.global.annotations }}
|
|
annotations:
|
|
{{- toYaml . | nindent 4 }}
|
|
{{- end }}
|
|
spec:
|
|
replicas: {{ .Values.sqlGateway.replicas }}
|
|
selector:
|
|
matchLabels:
|
|
app: {{ .Values.sqlGateway.name }}
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: {{ .Values.sqlGateway.name }}
|
|
{{- include "flink-sql-gateway.selectorLabels" . | nindent 8 }}
|
|
spec:
|
|
serviceAccountName: {{ include "flink-sql-gateway.serviceAccountName" . }}
|
|
{{- with .Values.nodeSelector }}
|
|
nodeSelector:
|
|
{{- toYaml . | nindent 8 }}
|
|
{{- end }}
|
|
{{- with .Values.affinity }}
|
|
affinity:
|
|
{{- toYaml . | nindent 8 }}
|
|
{{- end }}
|
|
{{- with .Values.tolerations }}
|
|
tolerations:
|
|
{{- toYaml . | nindent 8 }}
|
|
{{- end }}
|
|
{{- with .Values.podSecurityContext }}
|
|
securityContext:
|
|
{{- toYaml . | nindent 8 }}
|
|
{{- end }}
|
|
containers:
|
|
- name: sql-gateway
|
|
image: {{ include "flink-sql-gateway.image" . }}
|
|
imagePullPolicy: {{ .Values.global.image.pullPolicy }}
|
|
{{- with .Values.securityContext }}
|
|
securityContext:
|
|
{{- toYaml . | nindent 12 }}
|
|
{{- end }}
|
|
command: ["/bin/bash"]
|
|
args:
|
|
- -c
|
|
- |
|
|
# Wait for Flink session cluster to be ready with timeout
|
|
echo "Waiting for Flink session cluster..."
|
|
TIMEOUT=300 # 5 minutes
|
|
ELAPSED=0
|
|
INTERVAL=5
|
|
|
|
while [ $ELAPSED -lt $TIMEOUT ]; do
|
|
if curl -f --connect-timeout 5 --max-time 10 http://{{ .Values.sessionCluster.name }}-rest:8081/v1/overview >/dev/null 2>&1; then
|
|
echo "Flink session cluster is ready!"
|
|
break
|
|
fi
|
|
echo "Waiting for Flink cluster... (${ELAPSED}s/${TIMEOUT}s)"
|
|
sleep $INTERVAL
|
|
ELAPSED=$((ELAPSED + INTERVAL))
|
|
done
|
|
|
|
if [ $ELAPSED -ge $TIMEOUT ]; then
|
|
echo "ERROR: Timeout waiting for Flink session cluster"
|
|
echo "Checking cluster status..."
|
|
kubectl get pods -n {{ include "flink-sql-gateway.namespace" . }} -l app={{ .Values.sessionCluster.name }} || true
|
|
exit 1
|
|
fi
|
|
|
|
echo "Flink cluster is ready. Starting SQL Gateway..."
|
|
|
|
# Create flink configuration with environment variable substitution
|
|
cat > /opt/flink/conf/config.yaml << EOF
|
|
# Remote Flink Cluster Configuration
|
|
rest.bind-address: 0.0.0.0
|
|
rest.address: {{ .Values.sessionCluster.name }}-rest
|
|
rest.port: 8081
|
|
jobmanager.rpc.address: {{ .Values.sessionCluster.name }}
|
|
jobmanager.rpc.port: 6123
|
|
|
|
# Session Cluster at Kubernetes
|
|
execution.target: kubernetes-session
|
|
kubernetes.namespace: {{ .Release.Namespace }}
|
|
kubernetes.cluster-id: {{ .Values.sessionCluster.name }}
|
|
|
|
# SQL Gateway Configuration
|
|
sql-gateway.endpoint.rest.address: 0.0.0.0
|
|
sql-gateway.endpoint.rest.port: {{ .Values.sqlGateway.port }}
|
|
|
|
# Table/SQL Configuration
|
|
table.exec.source.idle-timeout: 30s
|
|
table.exec.resource.default-parallelism: 1
|
|
|
|
# Additional Flink Configuration from values
|
|
{{- with .Values.sqlGateway.flinkConfiguration }}
|
|
{{- range $key, $value := . }}
|
|
{{ $key }}: {{ $value }}
|
|
{{- end }}
|
|
{{- end }}
|
|
EOF
|
|
|
|
# Start SQL Gateway
|
|
/opt/flink/bin/sql-gateway.sh start
|
|
|
|
echo "SQL Gateway started successfully"
|
|
|
|
# Wait for log file to be created and then tail it
|
|
LOG_FILE=""
|
|
for i in {1..30}; do
|
|
LOG_FILE=$(find /opt/flink/log -name "flink--sql-gateway-*.log" 2>/dev/null | head -1)
|
|
if [ -n "$LOG_FILE" ]; then
|
|
echo "Found log file: $LOG_FILE"
|
|
break
|
|
fi
|
|
echo "Waiting for log file to be created... ($i/30)"
|
|
sleep 2
|
|
done
|
|
|
|
if [ -n "$LOG_FILE" ]; then
|
|
echo "Tailing SQL Gateway log file..."
|
|
tail -f "$LOG_FILE"
|
|
else
|
|
echo "Log file not found, keeping container alive..."
|
|
# Keep container running without tailing logs
|
|
while true; do
|
|
echo "SQL Gateway is running on port {{ .Values.sqlGateway.port }}"
|
|
sleep 60
|
|
done
|
|
fi
|
|
env:
|
|
- name: FLINK_CONF_DIR
|
|
value: "/opt/flink/conf"
|
|
{{- with .Values.sqlGateway.env }}
|
|
{{- toYaml . | nindent 12 }}
|
|
{{- end }}
|
|
ports:
|
|
- name: rest
|
|
containerPort: {{ .Values.sqlGateway.port }}
|
|
protocol: TCP
|
|
volumeMounts:
|
|
{{- with .Values.sqlGateway.volumeMounts }}
|
|
{{- toYaml . | nindent 12 }}
|
|
{{- end }}
|
|
- name: sql-gateway-config
|
|
mountPath: /opt/flink/conf/sql-gateway-defaults.yaml
|
|
subPath: sql-gateway-defaults.yaml
|
|
readOnly: true
|
|
resources:
|
|
{{- toYaml .Values.sqlGateway.resources | nindent 12 }}
|
|
{{- with .Values.sqlGateway.livenessProbe }}
|
|
livenessProbe:
|
|
{{- toYaml . | nindent 12 }}
|
|
{{- end }}
|
|
{{- with .Values.sqlGateway.readinessProbe }}
|
|
readinessProbe:
|
|
{{- toYaml . | nindent 12 }}
|
|
{{- end }}
|
|
volumes:
|
|
{{- with .Values.sqlGateway.volumes }}
|
|
{{- toYaml . | nindent 8 }}
|
|
{{- end }}
|
|
- name: sql-gateway-config
|
|
configMap:
|
|
name: sql-gateway-config
|
|
{{- end }} |