Installation
This document describes how to install Function Mesh based on your application in Kubernetes.
Install Function Mesh
This section describes how to install Function Mesh through the install.sh script or through the Helm.
Prerequisites
Before installing Function Mesh, ensure to perform the following operations.
- Kubernetes server v1.17 or higher.
- Create and connect to a Kubernetes cluster.
- Create a Pulsar cluster in the Kubernetes cluster.
- Install Helm v3.
- (Optional) enable Role-based Access Control (RBAC).
Install cert-manager
Function Mesh is enabled with the admission control webhook by default. Therefore, you need to prepare the relevant signed certificate. Secrets that contain signed certificates are named with the fixed name function-mesh-admission-webhook-server-cert, which is controlled by the Certificate CRD.
It is recommended to use cert-manager to manage these certificates and you can install the cert-manager as follows.
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install \
cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--version v1.8.0 \
--set installCRDs=true
Install Function Mesh through install.sh script
This example shows how to use the install.sh command to install Function Mesh on your laptop (Linux or Mac OS), including a local kind cluster, all the Custom Resource Definitions (CRDs), required service account configuration, and Function Mesh components.
curl -sSL https://github.com/streamnative/function-mesh/releases/download/v0.4.0/install.sh | bash
After executing the above command, you should be able to see the output indicating that the Function Mesh pod is up and running. For details, see verify installation.
Note
The
install.shcommand is suitable for trying Function Mesh out. If you want to deploy Function Mesh in production or other mission-critical scenarios, it is recommended to install Function Mesh through Helm.
Install Function Mesh through Helm
This example shows how to install Function Mesh through Helm.
Note
- Before installation, ensure that Helm v3 is installed properly.
- For the use of
kubectlcommands, see kubectl command reference.
Add the StreamNative Function Mesh repository.
helm repo add function-mesh http://charts.functionmesh.io/
helm repo updateInstall the Function Mesh Operator.
Let's set some variables for convenient use later.
export FUNCTION_MESH_RELEASE_NAME=function-mesh # change the release name according to your scenario
export FUNCTION_MESH_RELEASE_NAMESPACE=function-mesh # change the namespace to where you want to install Function MeshInstall the Function Mesh Operator via following command.
Note
If no Kubernetes namespace is specified, the
defaultnamespace is used.If the namespace ${FUNCTION_MESH_RELEASE_NAMESPACE} doesn't exist yet, you can add the parameter
--create-namespaceto create it automatically.
helm install ${FUNCTION_MESH_RELEASE_NAME} function-mesh/function-mesh-operator -n ${FUNCTION_MESH_RELEASE_NAMESPACE}This table outlines the configurable parameters of the Function Mesh Operator and their default values.
Parameters Description Default enable-leader-electionWhether the Function Mesh Controller Manager should enable leader election. trueenable-pprofWhether the Function Mesh Controller Manager should enable pprof. falsepprof-addrThe address of the pprof. :8090metrics-addrThe address of the metrics. :8080health-probe-addrThe address of the health probe. :8000config-fileThe configuration file of the Function Mesh Controller Manager, which includes runnerImages,resourceLabels, andresourceAnnotationsconfigurations.
-runnerImage: the runner image to run the Pulsar Function instances. Currently, it supports Java, Python, and Go runner images.
-resourceLabels: set labels for Pulsar Functions, Sources, or Sinks.
-resourceAnnotations: set annotations for Pulsar Functions, Sources, or Sinks./etc/config/configs.yamlFor example, if you want to enable
pproffor the Function Mesh Operator, set thecontrollerManager.pprof.enabletotrue.helm install ${FUNCTION_MESH_RELEASE_NAME} function-mesh/function-mesh-operator -n ${FUNCTION_MESH_RELEASE_NAMESPACE} \
--set controllerManager.pprof.enable=trueCheck whether Function Mesh is installed successfully.
kubectl get pods --namespace ${FUNCTION_MESH_RELEASE_NAMESPACE} -l app.kubernetes.io/instance=function-meshOutput
NAME READY STATUS RESTARTS AGE
function-mesh-controller-manager-5f867557c-d6vf4 1/1 Running 0 8s
Verify installation
This example shows how to verify whether Function Mesh is installed successfully.
Note
${NAMESPACE}indicates the namespace where Function Mesh Operator is installed.kubectl get pods --namespace ${NAMEPSACE} -l app.kubernetes.io/instance=function-meshOutput
NAME READY STATUS RESTARTS AGE
function-mesh-controller-manager-5f867557c-d6vf4 1/1 Running 0 8sThis example shows how to verify whether Function Mesh can run properly.
After installing the Function Mesh Operator and deploying a Pulsar cluster, you can submit a sample CRD to create Pulsar Functions, source, sink, or Function Mesh. In this example, a CRD is submitted to the Pulsar cluster for creating a Pulsar Function. You can also submit other CRDs under the
./config/samplesdirectory.Submit a sample CRD to the Pulsar cluster.
kubectl apply -f config/samples/compute_v1alpha1_function.yamlVerify your submission with the
kubectlcommand, and you can see that the Function pod is running.kubectl get all
NAME READY STATUS RESTARTS AGE
pod/function-sample-0 1/1 Running 0 77s
Uninstall Function Mesh
- Use the following command to uninstall Function Mesh through Helm.
Note
${NAMESPACE}indicates the namespace where Function Mesh Operator is installed.
helm delete function-mesh -n ${NAMESPACE}
- Remove the Secrets that contain the signed certificate.
Note
If the Secrets are not cleaned up, future installations in this environment might behave abnormally. For details about how to automatically clean up the corresponding Secrets when you delete a Certificate, see Cleaning up Secrets when Certificates are deleted.
kubectl delete secret function-mesh-admission-webhook-server-cert -n ${NAMESPACE}