Temporal Provider
Provider Temporal is a Crossplane provider. It was build based on the Crossplane Template. It is used to manage and configure Temporal. It uses the Temporal Go SDK
How to use
Repository and package:
xpkg.upbound.io/denniskniep/provider-temporal:<version>
Provider Credentials:
{
"HostPort": "temporal:7233"
}
Example:
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
name: provider-temporal
spec:
package: xpkg.upbound.io/denniskniep/provider-temporal:v1.1.0
packagePullPolicy: IfNotPresent
revisionActivationPolicy: Automatic
---
apiVersion: v1
kind: Secret
metadata:
name: provider-temporal-config-creds
namespace: crossplane-system
type: Opaque
stringData:
credentials: |
{
"HostPort": "temporal:7233"
}
---
apiVersion: temporal.crossplane.io/v1alpha1
kind: ProviderConfig
metadata:
name: provider-temporal-config
spec:
credentials:
source: Secret
secretRef:
namespace: crossplane-system
name: provider-temporal-config-creds
key: credentials
Troubleshooting
Create a DeploymentRuntimeConfig and set the arg --debug
on the package-runtime container:
apiVersion: pkg.crossplane.io/v1beta1
kind: DeploymentRuntimeConfig
metadata:
name: debug-config
spec:
deploymentTemplate:
spec:
selector: {}
template:
spec:
containers:
- name: package-runtime
args:
- --debug
---
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
name: provider-temporal
spec:
package: xpkg.upbound.io/denniskniep/provider-temporal:v1.1.0
packagePullPolicy: IfNotPresent
revisionActivationPolicy: Automatic
runtimeConfigRef:
name: debug-config
Covered Managed Resources
Currently covered Managed Resources
TemporalNamespace
A Namespace is a unit of isolation within the Temporal Platform
temporal docs
temporal cli
Example:
apiVersion: core.temporal.crossplane.io/v1alpha1
kind: TemporalNamespace
metadata:
name: ns1
spec:
forProvider:
name: "Test 1"
description: "Desc 1"
ownerEmail: "Test@test.local"
workflowExecutionRetentionDays: 30
data:
- key1: value1
- key2: value2
historyArchivalState: "Disabled"
historyArchivalUri: ""
visibilityArchivalState: "Disabled"
visibilityArchivalUri: ""
providerConfigRef:
name: provider-temporal-config
Contribute
Developing
- Add new type by running the following command:
export provider_name=temporal
export group=core # lower case e.g. core, cache, database, storage, etc.
export type=MyType # Camel casee.g. Bucket, Database, CacheCluster, etc.
make provider.addtype provider=${provider_name} group=${group} kind=${type}
-
Replace the core group with your new group in apis/{provider}.go
-
Replace the MyType type with your new type in internal/controller/{provider}.go
-
Run make reviewable
to run code generation, linters, and tests.
-
Run make build
to build the provider.
Refer to Crossplane's CONTRIBUTING.md file for more information on how the
Crossplane community prefers to work. The Provider Development
guide may also be of use.
Tests
Start temporal environment for tests
sudo docker-compose -f tests/docker-compose.yaml up