commit | ea8c6b2ad37173b3980094c3a02c5809cc575900 | [log] [tgz] |
---|---|---|
author | Davide Salerno <dsalerno@redhat.com> | Wed Dec 21 10:00:57 2022 +0100 |
committer | GitHub <noreply@github.com> | Wed Dec 21 10:00:57 2022 +0100 |
tree | 4f3d14632d0a907788e59f4d145cb5981b38948d | |
parent | e09cddee285b8ad3b5de4dd89b90a9d208bad926 [diff] |
[KOGITO-8298] Improve the Kaniko build time using a pre-warmed cache and desired resources (#51) Signed-off-by: Davide Salerno <dsalerno@redhat.com>
The Kogito Serverless Operator is built in order to help the Kogito Serverless users to build and deploy easily on Kubernetes/Knative/OpenShift a service based on Kogito that will be able to execute a workflow.
The CustomResources defined and managed by this operator are the following:
You’ll need a Kubernetes cluster to run against. You can use:
to get a local cluster for testing, or run against a remote cluster.
Note: Your controller will automatically use the current context in your kubeconfig file (i.e. whatever cluster kubectl cluster-info
shows).
minikube start --cpus 4 --memory 4096 --addons registry --addons metrics-server --insecure-registry "10.0.0.0/24" --insecure-registry "localhost:5000"
Note: To speed up, you can increase cpus and memory options. For example, use --cpus 12 --memory 16384
.
Tip: If it does work with the default driver, aka docker
, you can try to start with the podman
driver:
minikube start [...] --driver podman
Important: There are some issues with the crio
container runtime and Kaniko that the operator is using. Reference: https://github.com/GoogleContainerTools/kaniko/issues/2201
make install
IMG
:make docker-build docker-push IMG=<some-registry>/kogito-serverless-operator:tag
IMG
:make deploy IMG=<some-registry>/kogito-serverless-operator:tag
This will deploy the operator into the kogito-serverless-operator-system
namespace.
A good starting point to check that everything is working well, it is the Greeting workflow.
Follow these steps to create a container that you can than deploy as a Service on Kubernetes or KNative.
kubectl create namespace kogito-workflows
kubectl create secret docker-registry regcred --docker-server=<registry_url> --docker-username=<registry_username> --docker-password=<registry_password> --docker-email=<registry_email> -n kogito-workflows
or you directly import your local docker config into your kubernetes cluster:
kubectl create secret generic regcred --from-file=.dockerconfigjson=${HOME}/.docker/config.json --type=kubernetes.io/dockerconfigjson -n kogito-workflows
You can find a basic Platform CR example in the config folder.
kubectl apply -f config/samples/sw.kogito_v1alpha08_kogitoserverlessplatform.yaml -n kogito-workflows
Note: In this Custom Resource, spec.platform.registry.secret
is the name of the secret you created just before.
Tip: You can also update “on-the-fly” the platform CR registry field with this command (change <YOUR_REGISTRY>
):
cat config/samples/sw.kogito_v1alpha08_kogitoserverlessplatform.yaml | sed "s|address: .*|address: <YOUR_REGISTRY>|g" | kubectl apply -n kogito-workflows -f -
kubectl apply -f config/samples/sw.kogito_v1alpha08_kogitoserverlessworkflow.yaml -n kogito-workflows
kubectl logs kogito-greeting-builder -n kogito-workflows
The final pushed image should be printed into the logs at the end of the build.
You will need to remove the different resources you created.
kubectl delete -f config/samples/sw.kogito_v1alpha08_kogitoserverlessworkflow.yaml -n kogito-workflows
kogito-workflows
namespacekubectl delete namespace kogito-workflows
make undeploy
You can find some scripts in the hack folder.
greeting_example_deploy.sh
will install operator and deploy all resources in your current clustergreeting_example_remove.sh
will remove the created workflow resource from greeting_example_deploy.sh
script.-A
or --all
option, it will also remove the operator from the cluster.Contributing is easy, just take a look at our contributors'guide.