Deploy Flow

In this tutorial, you’ll deploy a Flow application using Hazelcast Platform Operator for Kubernetes.

See Flow for more detailed information.

Prerequisites

  • Flow requires the Management Center application to run and be configured properly. The Management Center application should be configured to use FLow.

...
repository: docker.io/hazelcast/management-center-flow (1)
version: 5.6.0
...
hazelcastClusters:
- address: flow (2)
  name: flow (3)
jvm:
  args:
  - "-Dhazelcast.mc.flow.addresses=http://233.252.0.158" (4)
  - "-Dhazelcast.mc.internal.flowAddresses=http://flow:9021" (5)
...
1 Management Center Flow image and version
2 The service name of the Flow application. The same as the Flow Custom Resource (CR) name.
3 Hazelcast cluster name. Should always be flow.
4 Flow Ingress public address.
5 The internal address of Flow in the format of http://<service-name>:9021. The service name is the same as the Flow CR name.
  • To connect to PostgreSQL database you need create a Secret with the DB credentials:

kubectl create secret generic flow-db-secret \
  --from-literal=database=flow \
  --from-literal=username=flow \
  --from-literal=password="strong-password"

In the created secret username and password are required, whereas database field is optional and will default to flow if not provided.

Run Flow

To run Flow on Kubernetes using Hazelcast Platform Operator you need to create a Flow CR.

apiVersion: hazelcast.com/v1alpha1
kind: Flow
metadata:
  labels:
    app.kubernetes.io/name: hazelcast-platform-operator
  name: flow
spec:
  size: 3
  licenseKeySecretName: hazelcast-license-key
  externalConnectivity:
    ingress:
      hostname: ""
      ingressClassName: nginx
      path: "/"
      annotations:
        kubernetes.io/ingress.class: "nginx"
        nginx.ingress.kubernetes.io/ssl-redirect: "false"
        nginx.ingress.kubernetes.io/enable-opentelemetry: "true"
  database:
    host: "flow-database"
    secretName: flow-db-secret
  env:
  - name: OPTIONS
    value: |
      --flow.analytics.persistRemoteCallResponses=true
      --flow.stream-server.enabled=false
      --flow.analytics.persistResults=false
      --flow.toggles.dashboard-enabled=true
      --flow.config.custom.managementCenterUrl=http://233.252.0.158/mc

Additional flow configuration can be achieved by providing additional parameters using the OPTIONS environment variable. See Configure Flow for detailed information.

Parameters managed by the Hazelcast Platform Operator are not allowed in OPTIONS. E.g., the Database configuration can only be done via spec.database in the Flow CR.

Configure OpenID support

You can enable OpenID support with Management Center deployment on Flow. To configure OpenID, provide the required parameters to the OPTIONS environment variable. See Security recommendations to discover all available options.

...
- name: OPTIONS
  value: |
      --flow.security.openIdp.enabled=true
      --flow.security.openIdp.jwks-uri=http://233.252.0.158/mc/oauth2/jwks
      --flow.security.openIdp.issuerUrl=http://233.252.0.158/mc
      --flow.security.openIdp.clientId=flow-client
      --flow.security.openIdp.require-https=false
      --flow.security.openIdp.roles.format=path
      --flow.security.openIdp.roles.path=roles
      --flow.security.openIdp.refreshTokensDisabled=true
      --flow.security.openIdp.executorRoleClientId=application-client
      --flow.security.openIdp.executorRoleClientSecret=${MC_APPLICATION_CLIENT_SECRET}
      --flow.security.openIdp.executorRoleTokenUrl=http://233.252.0.158/mc/oauth2/token
      --flow.security.openIdp.executorRoleAuthenticationType=ClientSecretBasic
- name: FLOW_SECURITY_OPENIDP_EXECUTORROLESCOPES
  value: "openid email profile flow:Admin"
- name: FLOW_SECURITY_OPENIDP_SCOPE
  value: "openid email profile"
...