Spring boot uygulamasının Kubernetes üzerinde yürütülmesi

eray erdem
2 min readNov 20, 2019

--

Minikube, Kubernetes’i yerel olarak çalıştırmayı kolaylaştıran bir araçtır. Minikube, sanal makina içinde tek düğümlü bir kubernetes cluster oluşturur.

Virtual Box kurulumu

sudo add-apt-repository multiverse && sudo apt-get updatesudo apt install virtualbox

Minikube kurulumu

curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
&& chmod +x minikube
sudo mkdir -p /usr/local/bin/
sudo install minikube /usr/local/bin/

Kubectl Kurulumu

kubectl api-serve ile konuşur ve isteklerimizi yerine getirir. docker komutuna çok benzemekte .

curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectlchmod +x ./kubectlsudo mv ./kubectl /usr/local/bin/kubectl

Spring uygulamasını oluşturma

curl https://start.spring.io/starter.tgz -d dependencies=web,actuator  \ -d name=springkubernetes -d baseDir=springkubernetes  | tar -xzvf - && cd springkubernetes

Test için basit bir controller

echo ‘@org.springframework.web.bind.annotation.RestController class HelloController { @org.springframework.web.bind.annotation.
GetMapping(“/hello”) String hello() { return “Hello Kubernetes”; } }’ >> src/main/java/com/example/demo/DemoApplication.java

Dockerfile üretimi

echo "FROM openjdk:8-alpine
VOLUME /tmp
ADD ./target/demo-0.0.1-SNAPSHOT.jar /demo.jar
ENTRYPOINT [\"java\",\"-jar\",\"/demo.jar\"] " > Dockerfile

Docker ortamının tanıtılması

minikube docker-env

Yukarıda ki komut bize sanal makinamızda kurulu olan docker bilgilerini getirir . Ortam değişkenlerini değiştirerek kendi makinamız yerine sanal makinamız içinde ki docker üzerine container oluşturmasını sağlıyoruz.Eval ile kullanmak için çok uygun bir yapıdadır . Kubernetes zaten eval ile kullanmamızı istemekte . Gelen bilgilerini sırayla terminale kopyalarayarak da kullanabiliriz. Anlık kullandığınız terminal kapandığı zaman bu bilgiler gitmektedir.

export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/home/eray/.minikube/certs"
# Run this command to configure your shell:
# eval $(minikube docker-env)

Eval komutunu uygulayalım.

eval $(minikube docker-env)// test edilmesi
echo $DOCKER_HOST

Uygulamanın fat jarının çıkartılması

mvn clean package

Docker container ın oluşturulması

docker build -t eray/springkube:0.0.1 .

Uygulamanın kubernetes üzerinde yürütülmesi

kubectl run kubeapp --image eray/springkube:0.0.1

Uygulamanın test edilmesi

Uygulamamız sanal makina içinde çalışmakta kendi makinamızdan şu an ulaşılamaz . Ulaşmak için farklı yöntemlen bulunmakta ben ssh ile sanal makinaya bağlanıp test edeceğim , bunun için podun ip adresini öğrenmeliyim .

kubectl get pods -o wide  

daha sonra

minikube ssh curl http://172.17.0.4:8080/hello

--

--