Spring boot uygulamasının Kubernetes üzerinde yürütülmesi
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 minikubesudo 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