Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/54 Google Cloud inclusive properties-local.mk #55

Open
wants to merge 17 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 3 additions & 7 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,6 @@ azure/ingress/nginx/tls/dns/camunda-values-nginx-tls.yaml
azure/ingress/nginx/tls/secure-zeebe-ingress/camunda-values-nginx-tls.yaml
azure/ingress/nginx/tls/camunda-platform
azure/ingress/nginx/tls/camunda-values-nginx-all.yaml
google/ingress/nginx/camunda-values-ingress.yaml
google/ingress/nginx/tls/camunda-values-nginx.yaml
google/ingress/nginx/tls/camunda-values-nginx-all.yaml
google/keycloak/camunda/camunda-values-ext-keycloak.yaml
google/external-keycloak/keycloak-secrets.yaml
aws/cluster.yaml
aws/camunda-values-aws.yaml
**/ebs-csi-driver-trust-policy.json
Expand Down Expand Up @@ -43,5 +38,6 @@ keycloak/keycloak-values.yaml
**/tasklist-service-webapp.yaml
**/tasklist-tasklist-ingress.yaml
**/tasklist-camunda-ingress.yaml


aws/config/properties.mk
aws/config/properties-dns.mk
**/.DS_Store
21 changes: 21 additions & 0 deletions aws/config/properties-dns.sample.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Configure the fully qualified domain name
# The dnsLabel is the first part of the domain address. It will be used no matter what baseDomain you configure below
# The fully qualified domain name will look something like <dnsLabel>.<baseDomainName>
# Sample value:
#dnsLabel ?= YOUR_SUB_DOMAIN

ifndef dnsLabel
$(error 'dnsLabel' is mandatory. To fix, edit file: $(root)/aws/config/properties-dns.mk )
endif

# By default, we'll use nip.io (See more at [https://nip.io](http://nip.io) )
# The fully qualified domain name will look something like <dnsLabel>.<ip address>.nip.io
# baseDomainName ?= nip.io

# Another option is to replace baseDomainName with your own domain name
# In this case, the fully qualified domain name will look like <dnsLabel>.<baseDomainName>
#baseDomainName ?= YOUR_DOMAIN

ifndef baseDomainName
$(error 'baseDomainName' is mandatory. To fix, edit file: $(root)/aws/config/properties-dns.mk )
endif
130 changes: 130 additions & 0 deletions aws/config/properties.sample.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
# Set the following for your specific environment
# Already have a Cluster? Set these values to point to your existing environment
# Otherwise, these values will be used to create a new Cluster


# Set which AWS region to use
# see: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html
# Sample value:
region ?= us-east-1

ifndef region
$(error 'region' is mandatory. To fix, edit file: $(root)/aws/config/properties.mk )
endif

# Set AWS zones
# see: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html
# Sample value:
zones ?= ['us-east-1a', 'us-east-1b']

ifndef zones
$(error 'zones' is mandatory. To fix, edit file: $(root)/aws/config/properties.mk )
endif

# Set 'clusterName'
# This controls the name of the GKE cluster in use.
# If you already have a GKE cluster that you want to use, set the name of the existing GKE cluster here.
# If you do not yet have a GKE cluster, then running `make kube` will create a new GKE cluster with the name set here
# Sample value:
#clusterName ?= camunda-01

ifndef clusterName
$(error 'clusterName' is mandatory. To fix, edit file: $(root)/aws/config/properties.mk )
endif

# Set 'clusterVersion'
# This controls the name of the Kubernetes cluster in use.
# If you already have a cluster that you want to use, set the name of the existing cluster here.
# If you do not yet have a cluster, then running `make kube` will create a new cluster with the name set here
# Sample value:
clusterVersion ?= 1.25

ifndef clusterVersion
$(error 'clusterVersion' is mandatory. To fix, edit file: $(root)/aws/config/properties.mk )
endif

# Set 'machineType'
# This controls the machine types of nodes in the cluster. It will only be used when creating a new cluster
machineType ?= c6i.4xlarge

ifndef machineType
$(error 'machineType' is mandatory. To fix, edit file: $(root)/aws/config/properties.mk )
endif

# Note: Currently, auto scaling configuration using these scripts for AWS doesn't seem to be reliable

# Set 'desiredSize'
# Desired number of nodes in the cluster in the context of autoscaling
desiredSize ?= 3

ifndef desiredSize
$(error 'desiredSize' is mandatory. To fix, edit file: $(root)/aws/config/properties.mk )
endif

# Set 'minSize'
# Minimum number of nodes in the cluster in the context of autoscaling
minSize ?= 1

ifndef minSize
$(error 'minSize' is mandatory. To fix, edit file: $(root)/aws/config/properties.mk )
endif

# Set 'maxSize'
# Max number of nodes in the cluster in the context of autoscaling
maxSize ?= 3

ifndef maxSize
$(error 'maxSize' is mandatory. To fix, edit file: $(root)/aws/config/properties.mk )
endif

# Set 'namespace'
# Camunda components will be installed into the following Kubernetes namespace
namespace ?= camunda

ifndef namespace
$(error 'namespace' is mandatory. To fix, edit file: $(root)/aws/config/properties.mk )
endif

# Set 'camundaDockerRegistryUrl'
# Note: this is not used unless you're using a profile that installs Web Modeler
# This controls the url to the camunda registry.
# Camunda Enterprise customers need access to this registry in order to install Web Modeler
# https://github.com/camunda/camunda-platform-helm/tree/main/charts/camunda-platform#web-modeler
camundaDockerRegistryUrl ?= https://registry.camunda.cloud/

ifndef camundaDockerRegistryUrl
$(error 'camundaDockerRegistryUrl' is mandatory. To fix, edit file: $(root)/aws/config/properties.mk )
endif

# Set 'camundaDockerRegistryUsername'
# Note: this is not used unless you're using a profile that installs Web Modeler
# This controls the username used to connect to the camunda registry.
# Camunda Enterprise customers need access to this registry in order to install Web Modeler
# https://github.com/camunda/camunda-platform-helm/tree/main/charts/camunda-platform#web-modeler
camundaDockerRegistryUsername ?= YOUR_USERNAME

ifndef camundaDockerRegistryUsername
$(error 'camundaDockerRegistryUsername' is mandatory. To fix, edit file: $(root)/aws/config/properties.mk )
endif

# Set 'camundaDockerRegistryPassword'
# Note: this is not used unless you're using a profile that installs Web Modeler
# This controls the password used to connect to the camunda registry.
# Camunda Enterprise customers need access to this registry in order to install Web Modeler
# https://github.com/camunda/camunda-platform-helm/tree/main/charts/camunda-platform#web-modeler
camundaDockerRegistryPassword ?= YOUR_PASSWORD

ifndef camundaDockerRegistryPassword
$(error 'camundaDockerRegistryPassword' is mandatory. To fix, edit file: $(root)/aws/config/properties.mk )
endif

# Set 'camundaDockerRegistryEmail'
# Note: this is not used unless you're using a profile that installs Web Modeler
# This controls the email used to connect to the camunda registry.
# Camunda Enterprise customers need access to this registry in order to install Web Modeler
# https://github.com/camunda/camunda-platform-helm/tree/main/charts/camunda-platform#web-modeler
camundaDockerRegistryEmail ?= YOUR_EMAIL

ifndef camundaDockerRegistryEmail
$(error 'camundaDockerRegistryEmail' is mandatory. To fix, edit file: $(root)/aws/config/properties.mk )
endif
37 changes: 5 additions & 32 deletions aws/ingress/nginx/tls/Makefile
Original file line number Diff line number Diff line change
@@ -1,33 +1,4 @@
# ------------------------------------
# Set the following for your specific environment
# Already have a Cluster? Set these values to point to your existing environment
# Otherwise, these values will be used to create a new Cluster

#region ?= us-east-1
region ?= YOUR_AWS_REGION
zones ?= ['us-east-1a', 'us-east-1b']
clusterName ?= CLUSTER_NAME
clusterVersion ?= 1.25

machineType ?= c6i.4xlarge
# TODO: Currently, auto scaling configuration using these scripts for AWS is not working
# desiredSize is used as the starting size of the cluster
desiredSize ?= 3
minSize ?= 1
maxSize ?= 6
certEmail ?= [email protected]

# Configure the fully qualified domain name
# The dnsLabel is the first part of the domain address. It will be used no matter what baseDomain you configure below
dnsLabel ?= YOUR_DNS_LABEL

# By default, we'll use nip.io (See more at [https://nip.io](http://nip.io) )
# The fully qualified domain name will look something like <dnsLabel>.<ip address>.nip.io
#baseDomainName ?= nip.io

# Another option is to replace baseDomainName with your own domain name
# In this case, the fully qualified domain name will look like <dnsLabel>.<baseDomainName>
baseDomainName ?= upgradingdave.com
# Edit the files inside the `config` directory to configure your own local properties

# ------------------------------------
# The following variables should not be changed except for advanced use cases
Expand All @@ -37,8 +8,10 @@ else
root ?= $(shell pwd)/../../../..
endif

# Camunda components will be installed into the following Kubernetes namespace
namespace ?= camunda
# Edit the following to configure your own local properties
include $(root)/aws/config/properties.mk
include $(root)/aws/config/properties-dns.mk

# Helm release name
release ?= camunda
# Helm chart coordinates for Camunda
Expand Down
58 changes: 58 additions & 0 deletions bpmn/hello_webhook.bpmn
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:zeebe="http://camunda.org/schema/zeebe/1.0" xmlns:modeler="http://camunda.org/schema/modeler/1.0" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1pqt1qk" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.14.0-nightly.20230715" modeler:executionPlatform="Camunda Cloud" modeler:executionPlatformVersion="8.2.0" camunda:diagramRelationId="13644463-c173-4591-ab55-860357257474">
<bpmn:process id="Process_helloWebhook" name="Hello Webhook" isExecutable="true">
<bpmn:sequenceFlow id="Flow_04etmae" sourceRef="StartEvent_1" targetRef="Activity_03qdunh" />
<bpmn:scriptTask id="Activity_03qdunh" name="Hello World!">
<bpmn:extensionElements>
<zeebe:script expression="=&#34;Hello World&#34;" resultVariable="result" />
</bpmn:extensionElements>
<bpmn:incoming>Flow_04etmae</bpmn:incoming>
<bpmn:outgoing>Flow_1qc9l7g</bpmn:outgoing>
</bpmn:scriptTask>
<bpmn:endEvent id="Event_0ngzdxx" name="end">
<bpmn:incoming>Flow_1qc9l7g</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_1qc9l7g" sourceRef="Activity_03qdunh" targetRef="Event_0ngzdxx" />
<bpmn:startEvent id="StartEvent_1" name="hello" zeebe:modelerTemplate="io.camunda.connectors.webhook.WebhookConnector.v1" zeebe:modelerTemplateVersion="6" zeebe:modelerTemplateIcon="data:image/svg+xml,%3Csvg id=&#39;icon&#39; xmlns=&#39;http://www.w3.org/2000/svg&#39; width=&#39;18&#39; height=&#39;18&#39; viewBox=&#39;0 0 32 32&#39;%3E%3Cdefs%3E%3Cstyle%3E .cls-1 %7B fill: none; %7D %3C/style%3E%3C/defs%3E%3Cpath d=&#39;M24,26a3,3,0,1,0-2.8164-4H13v1a5,5,0,1,1-5-5V16a7,7,0,1,0,6.9287,8h6.2549A2.9914,2.9914,0,0,0,24,26Z&#39;/%3E%3Cpath d=&#39;M24,16a7.024,7.024,0,0,0-2.57.4873l-3.1656-5.5395a3.0469,3.0469,0,1,0-1.7326.9985l4.1189,7.2085.8686-.4976a5.0006,5.0006,0,1,1-1.851,6.8418L17.937,26.501A7.0005,7.0005,0,1,0,24,16Z&#39;/%3E%3Cpath d=&#39;M8.532,20.0537a3.03,3.03,0,1,0,1.7326.9985C11.74,18.47,13.86,14.7607,13.89,14.708l.4976-.8682-.8677-.497a5,5,0,1,1,6.812-1.8438l1.7315,1.002a7.0008,7.0008,0,1,0-10.3462,2.0356c-.457.7427-1.1021,1.8716-2.0737,3.5728Z&#39;/%3E%3Crect id=&#39;_Transparent_Rectangle_&#39; data-name=&#39;&#38;lt;Transparent Rectangle&#38;gt;&#39; class=&#39;cls-1&#39; width=&#39;32&#39; height=&#39;32&#39;/%3E%3C/svg%3E">
<bpmn:extensionElements>
<zeebe:properties>
<zeebe:property name="inbound.type" value="io.camunda:webhook:1" />
<zeebe:property name="inbound.subtype" value="ConfigurableInboundWebhook" />
<zeebe:property name="inbound.method" value="any" />
<zeebe:property name="inbound.context" value="hello" />
<zeebe:property name="inbound.shouldValidateHmac" value="disabled" />
<zeebe:property name="inbound.auth.type" value="NONE" />
</zeebe:properties>
</bpmn:extensionElements>
<bpmn:outgoing>Flow_04etmae</bpmn:outgoing>
</bpmn:startEvent>
</bpmn:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_helloWebhook">
<bpmndi:BPMNShape id="Activity_0a7ok2r_di" bpmnElement="Activity_03qdunh">
<dc:Bounds x="270" y="77" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_0ngzdxx_di" bpmnElement="Event_0ngzdxx">
<dc:Bounds x="432" y="99" width="36" height="36" />
<bpmndi:BPMNLabel>
<dc:Bounds x="441" y="142" width="19" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_0qybff8_di" bpmnElement="StartEvent_1">
<dc:Bounds x="179" y="99" width="36" height="36" />
<bpmndi:BPMNLabel>
<dc:Bounds x="185" y="142" width="24" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="Flow_04etmae_di" bpmnElement="Flow_04etmae">
<di:waypoint x="215" y="117" />
<di:waypoint x="270" y="117" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1qc9l7g_di" bpmnElement="Flow_1qc9l7g">
<di:waypoint x="370" y="117" />
<di:waypoint x="432" y="117" />
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>
9 changes: 9 additions & 0 deletions google/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
camunda-values-google.yaml
config/properties.mk
config/properties-dns.mk
ingress/nginx/camunda-values-ingress.yaml
ingress/nginx/tls/camunda-values-nginx.yaml
ingress/nginx/tls/camunda-values-nginx-all.yaml
keycloak/camunda/camunda-values-ext-keycloak.yaml
external-keycloak/keycloak-secrets.yaml

22 changes: 5 additions & 17 deletions google/Makefile
Original file line number Diff line number Diff line change
@@ -1,17 +1,4 @@
# ------------------------------------
# Set the following for your specific environment
# Already have a Cluster? Set these values to point to your existing environment
# Otherwise, these values will be used to create a new Cluster

#project ?= camunda-researchanddevelopment
project ?= YOUR_GCP_PROJECT
#region ?= us-east1-b # see: https://cloud.withgoogle.com/region-picker/
region ?= YOUR_GCP_REGION
clusterName ?= YOUR_CLUSTER_NAME

machineType ?= n1-standard-16
minSize ?= 1
maxSize ?= 6
# Edit the files inside the `config` directory to configure your own local properties

# ------------------------------------
# The following variables should not be changed except for advanced use cases
Expand All @@ -21,8 +8,9 @@ else
root ?= $(shell pwd)/..
endif

# Camunda components will be installed into the following Kubernetes namespace
namespace ?= camunda
# Edit the following to configure your own local properties
include $(root)/google/config/properties.mk

# Helm release name
release ?= camunda
# Helm chart coordinates for Camunda
Expand All @@ -34,7 +22,7 @@ chartValues ?= camunda-values-google.yaml
.PHONY: all
all: camunda-values-google.yaml camunda external-urls

# 0 kube from aks.mk: Create Kubernetes cluster. (No aplication gateway required)
# 0 Create Kubernetes cluster. (No application gateway required)
.PHONY: kube
kube: kube-gke

Expand Down
36 changes: 32 additions & 4 deletions google/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Helm Profiles for Camunda 8 on Google Cloud Platform (GCP)

Create a Camunda 8 self-managed Kubernetes Cluster in 3 Steps:
Create a Camunda 8 self-managed Kubernetes Cluster using the following steps:

Step 1: Setup some [global prerequisites](../README.md#prerequisites)

Expand All @@ -18,6 +18,34 @@ Step 2: Setup command line tools for GCP:

gcloud components install gke-gcloud-auth-plugin

6. Go into one of the profiles in the `google` folder and use the `Makefile` to create a GKE cluster

e.g. `cd` into the `ingress/nginx/tls` directory and see the [README.md](./ingress/nginx/tls/README.md) for more.
4. Check installation

gcloud components list
gcloud components list | grep gke-gcloud-auth-plugin

5. Go into one of the profiles in the `google` folder and use the `Makefile` to create a GKE cluster

```
# Edit the files inside `config` director with values specific to your installation

make login # ensure you are logged into Google Cloud
make kube # establish kubernetes cluster on Google Cloud (5-10 minutes run)

# Default Simple Camunda 8 you must operate with port-forward
make all # deploying camunda 8 as "simple" individual "pods". Useful for developer.
kubectl get pods # List running kubernetes 'deployments' (running at Google Cloud)

# .. have a lot of fun..

make clean # remove Camunda 8, but "kube" is not deleted
make clean-kube # remove kube (save money)
```

6. Selecting configuration

Sub configurations at Google
* [Ingress/tls](./ingress/nginx/tls/README.md) : nginx+TLS `cd` into the `ingress/nginx/tls` directory.
* [Benchmark](./benchmark/README.md) : benchmark `cd` into the `benchmark` directory.
* [Keycloak](./keycloak/README.md) : keycloak `cd` into the `keycloak` directory.
* [Keycloak/camunda](./keycloak/camunda/README.md) : keycloak+Camunda `cd` into the `keycloak` directory.
* Default: Directory 'google' (see above) and see make's comments in terminal
16 changes: 16 additions & 0 deletions google/config/properties-dns.sample.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Configure the fully qualified domain name
# The dnsLabel is the first part of the domain address. It will be used no matter what baseDomain you configure below
# Sample value:
# dnsLabel ?= your_dns_label

ifndef dnsLabel
$(error 'dnsLabel' is mandatory. To fix, edit file: $(root)/google/config/properties-dns.mk )
endif

# By default, we'll use nip.io (See more at [https://nip.io](http://nip.io) )
# The fully qualified domain name will look something like <dnsLabel>.<ip address>.nip.io
baseDomainName ?= nip.io

# Another option is to replace baseDomainName with your own domain name
# In this case, the fully qualified domain name will look like <dnsLabel>.<baseDomainName>
# baseDomainName ?= your_base_domain_name
Loading