foundationdb/fdbkubernetesmonitor
John Brownlee 95ad5854be Add a mechanism to post updates from fdb-kubernetes-monitor to pod annotations.
Remove some of the local test data for fdb-kubernetes-monitor in favor of testing through a Kuberentes statefulset.
2021-10-28 17:40:05 -07:00
..
.testdata Add a mechanism to post updates from fdb-kubernetes-monitor to pod annotations. 2021-10-28 17:40:05 -07:00
README.md Add a mechanism to post updates from fdb-kubernetes-monitor to pod annotations. 2021-10-28 17:40:05 -07:00
config.go Add a new process launcher for FDB on Kube. 2021-10-28 17:40:05 -07:00
config_test.go Add a new process launcher for FDB on Kube. 2021-10-28 17:40:05 -07:00
go.mod Add a mechanism to post updates from fdb-kubernetes-monitor to pod annotations. 2021-10-28 17:40:05 -07:00
go.sum Add a mechanism to post updates from fdb-kubernetes-monitor to pod annotations. 2021-10-28 17:40:05 -07:00
kubernetes.go Add a mechanism to post updates from fdb-kubernetes-monitor to pod annotations. 2021-10-28 17:40:05 -07:00
main.go Add a new process launcher for FDB on Kube. 2021-10-28 17:40:05 -07:00
monitor.go Add a mechanism to post updates from fdb-kubernetes-monitor to pod annotations. 2021-10-28 17:40:05 -07:00

README.md

This package provides a launcher program for running FoundationDB in Kubernetes.

To test this, run the following commands from the root of the FoundationDB repository:

	docker build -t foundationdb/foundationdb-kubernetes:latest --build-arg FDB_VERSION=6.3.15 --build-arg FDB_LIBRARY_VERSIONS="6.3.15 6.2.30 6.1.13" -f packaging/docker/kubernetes/Dockerfile .
	kubectl apply -f packaging/docker/kubernetes/config.yaml
	# Wait for the pods to become ready
	ips=$(kubectl get pod -l app=fdb-kubernetes-example -o json | jq -j '[[.items|.[]|select(.status.podIP!="")]|limit(3;.[])|.status.podIP+":4501"]|join(",")')
	cat packaging/docker/kubernetes/config.yaml | sed -e "s/fdb.cluster: \"\"/fdb.cluster: \"test:test@$ips\"/" -e "s/\"serverCount\": 0/\"serverCount\": 1/" | kubectl apply -f -
	kubectl get pod -l app=fdb-kubernetes-example -o name | xargs -I {} kubectl annotate {} foundationdb.org/outdated-config-map-seen=$(date +%s) --overwrite
	# Watch the logs for the fdb-kubernetes-example pods to confirm that they have launched the fdbserver processes.
	kubectl exec -it sts/fdb-kubernetes-example -- fdbcli --exec "configure new double ssd"

You can then make changes to the data in the config map and update the fdbserver processes:

	kubectl apply -f packaging/docker/kubernetes/config.yaml
	kubectl get pod -l app=fdb-kubernetes-example -o name | xargs -I {} kubectl annotate {} foundationdb.org/outdated-config-map-seen=$(date +%s) --overwrite
	# Watch the logs for the fdb-kubernetes-example pods to confirm that they have launched the fdbserver processes.
	kubectl exec -it sts/fdb-kubernetes-example -- fdbcli --exec "kill; kill all; status"

Once you are done, you can tear down the example with the following command:

	kubectl delete -f packaging/docker/kubernetes/config.yaml; kubectl delete pvc -l app=fdb-kubernetes-example