################################################################################ # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. ################################################################################ apiVersion: flink.apache.org/v1alpha1 kind: FlinkDeployment metadata: namespace: default name: flink-example-statemachine spec: image: flink:1.14.3 flinkVersion: v1_14 ingress: template: "/{{namespace}}/{{name}}(/|$)(.*)" className: "nginx" annotations: nginx.ingress.kubernetes.io/rewrite-target: "/$2" flinkConfiguration: taskmanager.numberOfTaskSlots: "2" high-availability: org.apache.flink.kubernetes.highavailability.KubernetesHaServicesFactory high-availability.storageDir: file:///opt/flink/volume/flink-ha state.checkpoints.dir: file:///opt/flink/volume/flink-cp state.savepoints.dir: file:///opt/flink/volume/flink-sp serviceAccount: flink podTemplate: apiVersion: v1 kind: Pod metadata: name: pod-template spec: initContainers: - name: artifacts-fetcher image: busybox:latest imagePullPolicy: IfNotPresent # Use wget or other tools to get user jars from remote storage command: [ 'wget', 'https://repo1.maven.org/maven2/org/apache/flink/flink-examples-streaming_2.12/1.14.3/flink-examples-streaming_2.12-1.14.3.jar', '-O', '/flink-artifact/myjob.jar' ] volumeMounts: - mountPath: /flink-artifact name: flink-artifact containers: # Do not change the main container name - name: flink-main-container resources: requests: ephemeral-storage: 2048Mi limits: ephemeral-storage: 2048Mi volumeMounts: - mountPath: /opt/flink/usrlib name: flink-artifact - mountPath: /opt/flink/volume name: flink-volume volumes: - name: flink-artifact emptyDir: { } - name: flink-volume persistentVolumeClaim: claimName: flink-example-statemachine jobManager: replicas: 1 resource: memory: "1024m" cpu: 0.5 taskManager: resource: memory: "1024m" cpu: 0.5 job: jarURI: local:///opt/flink/usrlib/myjob.jar entryClass: org.apache.flink.streaming.examples.statemachine.StateMachineExample parallelism: 2 upgradeMode: last-state --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: flink-example-statemachine spec: accessModes: - ReadWriteOnce volumeMode: Filesystem resources: requests: storage: 1Gi --- apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: annotations: ingressclass.kubernetes.io/is-default-class: "true" labels: app.kubernetes.io/component: controller name: nginx spec: controller: k8s.io/ingress-nginx