1. Maven
2. Java 11
3. Kubectl
Use target directory script to build and test sources, code coverage would be available in backend/target/site/jacoco/index.html file
$ ./runner.sh test
Use target directory script to built and run sources, you must provide Kubernetes master url
$ ./runner.sh start https://2FF932E7325FEB73C716CC66C54FD587.gr7.us-east-1.eks.amazonaws.com
You need an installed and properly configured kubectl tool to get access to your K8S cluster. Check access with provided command:
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 145d
You can import POSTMAN collection of API requests from K8S_client.postman_collection.json
file
Requests examples.
Login, obtain JWT token
$ curl -X POST \
http://localhost:8080/api/k8sclient/v1/login \
-H 'Accept: */*' \
-H 'Content-Type: application/json' \
-d '{
"email": "admin@admin.com",
"password": "adminPassword"
}'
Create deployment, by providing namespace name and deployment params:
$ curl -X POST \
http://localhost:8080/api/k8sclient/v1/namespace/default/deployment \
-H 'Accept: */*' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbkBhZG1pbi5jb20iLCJhdXRob3JpdGllcyI6WyJST0xFX0FETUlOIl0sImV4cCI6MTU3NzAxNjUwMX0.Ic-xaPZMKMuPDe5hXevblUidQHe6rmvCap5ePAtYmYYufydtwMY2ZSwHHt3KEQSOG7q02EWXitjzaMOI9k9juQ' \
-d '{
"name": "hello-world",
"image": "gcr.io/hello-minikube-zero-install/hello-node",
"replicasCount": "1",
"port": "8080"
}'
Update deployment replica count:
$ curl -X PUT \
http://localhost:8080/api/k8sclient/v1/namespace/default/deployment/hello-world \
-H 'Accept: */*' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbkBhZG1pbi5jb20iLCJhdXRob3JpdGllcyI6WyJST0xFX0FETUlOIl0sImV4cCI6MTU3NzAxNjUwMX0.Ic-xaPZMKMuPDe5hXevblUidQHe6rmvCap5ePAtYmYYufydtwMY2ZSwHHt3KEQSOG7q02EWXitjzaMOI9k9juQ' \
-d '{
"name": "hello-world",
"image": "gcr.io/hello-minikube-zero-install/hello-node",
"replicasCount": "2",
"port": "8080"
}'
Delete deployment:
$ curl -X DELETE \
http://localhost:8080/api/k8sclient/v1/namespace/default/deployment/hello-world \
-H 'Accept: */*' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbkBhZG1pbi5jb20iLCJhdXRob3JpdGllcyI6WyJST0xFX0FETUlOIl0sImV4cCI6MTU3NzAxNjUwMX0.Ic-xaPZMKMuPDe5hXevblUidQHe6rmvCap5ePAtYmYYufydtwMY2ZSwHHt3KEQSOG7q02EWXitjzaMOI9k9juQ'
Get deployment by name:
$ curl -X GET \
http://localhost:8080/api/k8sclient/v1/namespace/default/deployment/hello-world \
-H 'Accept: */*' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbkBhZG1pbi5jb20iLCJhdXRob3JpdGllcyI6WyJST0xFX0FETUlOIl0sImV4cCI6MTU3NzAxNjUwMX0.Ic-xaPZMKMuPDe5hXevblUidQHe6rmvCap5ePAtYmYYufydtwMY2ZSwHHt3KEQSOG7q02EWXitjzaMOI9k9juQ'
Get namespace deployments:
$ curl -X GET \
http://localhost:8080/api/k8sclient/v1/namespace/default/deployment \
-H 'Accept: */*' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbkBhZG1pbi5jb20iLCJhdXRob3JpdGllcyI6WyJST0xFX0FETUlOIl0sImV4cCI6MTU3NzAxNjUwMX0.Ic-xaPZMKMuPDe5hXevblUidQHe6rmvCap5ePAtYmYYufydtwMY2ZSwHHt3KEQSOG7q02EWXitjzaMOI9k9juQ'
Frontend is available under frontend User Name: admin@admin.com Password: adminPassword
H2 Database console is available under console JDBC URL: jdbc:h2:mem:testdb User Name: sa Password: