All Projects → rohanKanojia → podsetoperatorinjava

rohanKanojia / podsetoperatorinjava

Licence: Apache-2.0 License
Java Implementation of https://github.com/hrishin/podset-operator using Fabric8 Kubernetes Client

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to podsetoperatorinjava

samsahai
Dependencies verification system with Kubernetes Operator
Stars: ✭ 66 (+20%)
Mutual labels:  kubernetes-operators
k6-operator
An operator for running distributed k6 tests.
Stars: ✭ 170 (+209.09%)
Mutual labels:  kubernetes-operators
grpc-demo
A demo to showcase technologies like Go, gRPC, Istio, Helm and Kubernetes Operators.
Stars: ✭ 32 (-41.82%)
Mutual labels:  kubernetes-operators
cstor-operators
Collection of OpenEBS cStor Data Engine Operators
Stars: ✭ 77 (+40%)
Mutual labels:  kubernetes-operators
theatre
GoCardless' collection of Kubernetes extensions
Stars: ✭ 18 (-67.27%)
Mutual labels:  kubernetes-operators
kubemod
Universal Kubernetes mutating operator
Stars: ✭ 97 (+76.36%)
Mutual labels:  kubernetes-operators

PodSet Operator in Java Using Fabric8 Kubernetes Client

Build License Twitter

Note

This project is a demo project for blog for writing a simple Kubernetes operation in Java using Fabric8 Kubernetes Client. You can find full blog here: Writing a simple Kubernetes Operation in Java

This is a demo operator which implements a simple operator for a custom resource called PodSet which is somewhat equal to ReplicaSet. Here is what this resource looks like:

apiVersion: demo.fabric8.io/v1alpha1
kind: PodSet
metadata:
  name: example-podset
spec:
  replicas: 5

Each PodSet object would have 'x' number of replicas, so this operator just tries to maintain x number of replicas checking whether that number of pods are running in cluster or not.

How to Build

   mvn clean install

How to Run

   mvn exec:java -Dexec.mainClass=io.fabric8.podset.operator.PodSetOperatorMain

Make Sure that PodSet Custom Resource Definition is already applied onto the cluster. If not, just apply it using this command:

kubectl apply -f src/main/resources/crd.yaml

Once everything is set, you can see that operator creating pods in your cluster for PodSet resource: Demo Screenshot

Deploying onto Kubernetes(minikube) using Eclipse JKube

  • Make Sure that PodSet Custom Resource Definition is already applied onto the cluster. If not, just apply it using this command:
kubectl apply -f src/main/resources/crd.yaml
  • Make sure that you have given correct privileges to ServiceAccount that would be used by the Pod, it's default in our case. Otherwise you might get 403 from Kubernetes API server.
kubectl create clusterrolebinding default-pod --clusterrole cluster-admin --serviceaccount=default:default

# In case of some other namespace:
kubectl create clusterrolebinding default-pod --clusterrole cluster-admin --serviceaccount=<namespace>:default
  • Build Docker Image
mvn k8s:build

JKube Build Docker Image

  • Generate Kubernetes Manifests
mvn k8s:resource

JKube Generate Kubernetes Manifests

  • Apply generated Kubernetes Manifests onto Kubernetes
mvn k8s:apply

Once generated resources are applied, try creating one of PodSet objects in src/main/resources

kubectl apply -f src/main/resources/cr.yaml

JKube Apply Generated Kubernetes Manifests

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].