Skip to content

DENMROOT/k8sClient

Repository files navigation

Kubernetes client application

Installation requirements

1. Maven
2. Java 11
3. Kubectl

Installation and Run

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

Usage

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

H2 Database console is available under console JDBC URL: jdbc:h2:mem:testdb User Name: sa Password:

About

Kubernetes cluster management client

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published