Function-Mesh
A Kubernetes-Native way to run pulsar functions, connectors and composed function meshes.
Install
curl -sSL https://github.com/streamnative/function-mesh/releases/download/v0.14.0/install.sh | bash
The above command installs all the CRDs, required service account configuration, and all function-mesh operator components. Before you start running a function-mesh example, verify if Function Mesh is installed correctly.
Note:
install.sh is suitable for trying Function Mesh out. If you want to use Function Mesh in production or other serious scenarios, Helm is the recommended deployment method.
Prerequisite
Compatibility
Kubernetes compatibility matrix
This table outlines the supported Kubernetes versions. We have tested these versions in their respective branches. But note that other versions might work as well.
Function Mesh operator | Kubernetes 1.19 | Kubernetes 1.20 | Kubernetes 1.21 | Kubernetes 1.22 | Kubernetes 1.23 | Kubernetes 1.24 | Kubernetes 1.25 |
---|---|---|---|---|---|---|---|
v0.14.0 |
|||||||
v0.13.0 |
|||||||
v0.12.0 |
|||||||
v0.11.2 |
|||||||
v0.10.0 |
|||||||
v0.9.0 |
|||||||
v0.8.0 |
|||||||
v0.7.0 |
|||||||
Master |
Development
- install Git and download the repo
git clone https://github.com/streamnative/function-mesh.git
- install operator-sdk and use it to add CRD, controller or webhooks
Note
The following command will generate the scaffolding files in the
api/<version>/
path, in this caseapi/v1alpha1
, and then you need to move the files contained in it to theapi/<group>/<version>
directory manually, in this caseapi/compute/v1alpha1
.
operator-sdk create api --group compute --version v1alpha1 --kind Function --resource=true --controller=true
operator-sdk create webhook --group compute.functionmesh.io --version v1alpha1 --kind Function --defaulting --programmatic-validation
Deployment
- make sure connected to a kubernetes cluster(gke, mini-kube etc.)
gcloud container clusters get-credentials cluster-1 --region $CLUSTER_REGION --project $PROJECT_ID
- compile the repo to generate related resources in the root dir of the repo.
make generate
- install the CRD into your k8s cluster.
make install
- start the controller locally. Only the controller itself is running in your local terminal, all the resources will be running inside the connected kubernetes cluster
make run
- submit a sample CRD to the cluster. You can also submit other CRDs under the
./config/samples
directorykubectl apply -f config/samples/compute_v1alpha1_function.yaml
- verify your submission with
kubectl
, and you will see the function pod is running$ kubectl get all NAME READY STATUS RESTARTS AGE pod/function-sample-0 1/1 Running 0 77s
- in order for function actually work, you need to have a pulsar cluster available for visiting. you can use the helm-chart to deploy one