The instructions provide a guidance on how to build and test Ignite Kubernetes IP finder in Kubernetes environment.
To test the IP finder you have to build the whole Apache Ignite project, package the binary as a Docker image and feed the image to your kubernetes environment.
To assemble an Apache Ignite binary use instructions from DEVNOTES.txt file in the root of the repository.
Note, if you alter the build instruction somehow make sure to update the files under ‘config’ folder if needed.
Install Docker and Minikube for testing purpose in your development environment.
Once this is done, make sure that Minikube sees Docker images registered locally: eval $(minikube docker-env)
Start Minikube: minikube start
Create a folder for all the files to be placed in the Docker image and copy the following there: - Apache Ignite binary in a zip form built at the step above. - Dockerfile from ignite-kubernetes/config/Dockerfile
. - Ignite configuration with enabled Kubernetes IP finder from ignite-kubernetes/config/example-kube.xml
. - The executable file that starts the Ignite node process from ignite-kubernetes/config/run.sh
To prepare the image, navigate to the folder and execute the following command: docker build -t ignite-kube:v1 --build-arg IGNITE_VERSION=2.10.0-SNAPSHOT .
Create the Kuberenetes role that provides access to endpoints of pods to provide communication between Ignite nodes: kubectl apply -f {path_to}/ignite-account-role.yaml
Create the Kubernetes service account to bind the role: kubectl apply -f {path_to}/ignite-service-account.yaml kubectl apply -f {path_to}/ignite-role-binding.yaml
Start the Kubernetes service that is used for IP addresses lookup. Use ignite-kubernetes/config/ignite-service.yaml
: kubectl create -f {path_to}/ignite-service.yaml
Create and deploy Ignite pods using ignite-kubernetes/config/ignite-deployment.yaml
configuration: kubectl create -f {path_to}/ignite-deployment.yaml
Make sure that the pods were deployed and running properly: kubectl get pod kubectl logs {pod name}
Increase or decrease number of Ignite pods checking that Kubernetes IP finder works as expected: kubectl scale --replicas=4 -f {path_to}/ignite-deployment.yaml
If you need to redeploy the docker image after it gets updated and you prefer not to change the image version then delete a current Kubernetes Ignite deployment (don't delete the service): kubectl delete deployment ignite-cluster
After that you are free to build and deploy an updated docker image using the same commands as listed above.