Portainer ile Docker Host ve Kubernetes Cluster Management
Genelde portainer ı docker ve dockerswarm için kullanılmasına aşinasınızdır. Aktif olarak bile kullanıyor olabilirsiniz.
Bu yazımda portainer ile nasıl kubernetes manage edilebilceğinden bahsedeceğim.
öncelikle docker yüklü bir sunucuda portainer ı run edeceğiz. bir volume yaratalım.
mkdir portainer
sonra da 9443 portainer UI erişim ve 8000 agent için expose ederek çalıştıralım.
docker run -d -p 9443:9443 -p 8000:8000 --name portainer-ce `
--restart=always `
-v /var/run/docker.sock:/var/run/docker.sock `
-v ${PWD}/portainer:/data `
portainer/portainer-ce:2.11.1
çalıştıktan sonra https üzerinden 9443 portu ile erişiyoruz.
karşımıza 2 seçenek geliyor get started ile mevcut sunucumuz üzerinde olan bilgileri görebiliriz.
DOCKER HOST
mevcut docker host üzerinde kullanılmayan image ve volumleri hızlıca bulup silebilirsiniz. container start, stop, restart, remove gibi işleri tek tuşla yapabilirsiniz.
add container ile hızlı bir şekilde container ekleyebilirsiniz. published olan portalara erişebilirsiniz.
quick actions bölümünden log bakabilir, container a exec olabilir, ne kadar cpu ve memory harcadığını stats üzerinden görebilirsiniz.
image sekmesinden, web editore dockerfile ı yapıştırabilir yada upload edip kullanabilirsiniz. dockerfile ın olduğu yerin URL sini de verebilirsiniz.
docker-compose yüklemelerinizi “Stack” menüsünden yapabilirsiniz.
tek bir docker sunucunuzu ya da çoklu sunucularınızı yönetmeniz portainer ile çok kolay.
docker swarm ve portainer ile ilgili yazıma aşağıdaki linkten ulaşabilirsiniz.
KUBERNETES
Portainer ile iki türlü kubernetes cluster yönetebilirsiniz. lokal cluster veya cloud kubernetes clusterları. öncelikle portainer — Environments menüsünden add environment diyerek ekleme işlemine başlayabiliriz.
portainer kubernetes ile bağlantısını Portainer Agent ve Portainer Edge Agent ile sağlar.
kubernetes agent
Portainer Agent kubernetes ortamınıza Loadbalancer üzerinden yada Nodeport üzerinden bağlanır.
mesela digitalocean üzerinde docker sunucumda bir kubernetes cluster provision edelim. bunun için lokal kubernetes çözümlerini kullanabilirim.
lokal kubernetes cluster hakkında bilgi almak için yazımı okuyabilirsiniz.
ben Docker üzerinde çalışan kubernetes için Kind kullanacağım.
docker-host üzerinde kurduğumdan loadbalancer mevcut değil metalLB kurarak bir tane yapabiliriz ama ben basit olması için NodePort kullanacağım.
!! docker üzerinde kubernetes kurduğunuz zaman sorunlardan birtanesi port forwarddır bunu cluster kurarken belirtmeniz gerekiyor ki docker üzerinden kubernetes api ye istek yapabilin.
kind için bir yaml file yazılması gerekiyor. cluster.yaml diye bir dosya oluşturalım. portainer agent 30778 nodeportunu kullanacak şekilde ayarlanmış bu yüzden kind cluster kurarken bu portu expose edeceğim.
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
extraPortMappings:
- containerPort: 30778
hostPort: 30778
listenAddress: "0.0.0.0"
- role: worker
daha sonra bu yaml file ile kubernetes create edeceğiz.
kind create cluster --config=cluster.yaml
şimdi portainer agent kurmakta.
ben aynı docker host üzerinde kullandığımdan docker ip sini kullanacağım. docker ipsini bulmak için docker inspect kullanabilirsiniz.
kubernetes edge agent
lokal kubernetes dışında cloud üzerinde olan kubernetes e ekleyebilceğimden bahsetmiştim.
ben kubernetes olarak digital ocean kubernetes kullanacağım.
MANAGEMENT
system resourceları görmek isterseniz table settingden ayarlayabilirsiniz bu sayede bütün namespaceler karşısınıza gelir
kubernetes resourcelarınıza applications menüsünden girip detaylarını yaml manifest olarak incelerken; log dosyalarına bakıp, pod içindeki containerlara console olabilirsiniz.
basit işlemler için kullanışlı bir arayüz sunuyor. docker, docker swarm managemnt ı daha kuvvetli fakat diğer management toollarından ayıran en önemli özelliklerinden biri GITOPS u desteklemesi.
applications sekmesinden, create from manifest dediğiniz anda karşınıza gelen seçeneklerde github mevcut.
yani argocd ve flux gibi verdiğiniz repoyu check ederek kubernetes ortamına deployment yapmanızı sağlıyor.
bir sonraki yazımda görüşmek üzere.
h.a.s.