Open Shift içinden dosya almak.


Konu şu arkadaşlar ortamlardan yani Open shift ortamınız içinde bulunan Node' lar veya Pod' lar içerisinden dosya alma ihtiyacınız olabiliyor bazen support case için bazen farklı durumlar için olabilir. 

Ben size iki durum içinde örmek yapmaya çalışacağım örnek olarak ise hem node' lardan hemde pod' lardan pcap almak (network trafik) üzerinden devam edeceğiz.

Node' lardan Pcap almak:
İki tane ssh açıyoruz birisinden direk olarak ssh ile node bağlanıyoruz. 


ssh core@worker1.firmaismi.net

Ethernet katlarının listesini alabilirsiniz bunun için komut aşağıda.

ip link show | head 

Pcap almak için bağlandığınızda bir yükleme yapmanız gerekiyor. Komutu yazdığında başarılı bir şekilde yükleme yapmasını sağlamalısınız.

toolbox

Son olarak pcap için tcpdump komutunu kullanıyoruz. Aşağıdaki 1. Örnekte her eth kartından akan 443 trafiğini izlemek için komut aşağıda;

tcpdump -nn -s 0 -vv -i any port 443 -w /host/var/tmp/worker1-443-tcpdump.pcap

2. örnek :  eno49 ve eno50 eth ların tcpdump ile pcap' larının alınması için gerekli olan komut aşağıda.

tcpdump -i eno49 -nn -v -e  vlan -w /host/var/tmp/worker1-eno49-a.pcap
tcpdump -i eno50 -nn -v -e  vlan -w /host/var/tmp/worker1-eno50-a.pcap 

iki örnek' tede dikkat edilmesi gereken konu birinci durum dosya ismi açıklayıcı olmasına dikkat etmenizi tavsiye ederim. İkinci durum ise dosya path durumu burada /host/ path dosyayı kaydederken gerekli ama node üzerinden alırken kullanılmayacak bilginize. 

Buraya kadar yaptığımız süreç tcpdump ile pcap aldık sonrasında ise node üzerinden scp komutu ile bastion makinemize dosyayı aktarmamız gerekiyor.

Basiton makineye dosyayı kopyalamak:
ikinci ssh burası

scp core@worker1.firmaismi.net:/var/tmp/worker1-443-tcpdump.pcap .

scp core@worker1.firmaismi.net:/var/tmp/worker1-eno49-a.pcap .

scp core@worker1.firmaismi.net:/var/tmp/worker1-eno50-a.pcap .

Yukarıdaki 3 pcap için ayrı ayrı komutlar yazdım 3 tane örnek olarak düşünün scp komutu için. Dosya path bölümündeki /host/ alanına dikkat etmelisiniz. 
 

Referans olarak bu adrese bakabilirsiniz: https://access.redhat.com/solutions/5074041

Pod' lardan Pcap almak:
Buradaki durum azıcık farklı yine 2 tane ssh açmanız gerekiyor ve ilk node bağlanıyoruz.

ssh core@worker1.firmaismi.net

Ethernet katlarının listesini alabilirsiniz bunun için komut aşağıda.

ip link show | head 

Pcap almak için bağlandığınızda bir yükleme yapmanız gerekiyor. Komutu yazdığında başarılı bir şekilde yükleme yapmasını sağlamalısınız.

toolbox

Arkasından aşağıdaki komutları sırası ile copy/paste ile yazıp sürece başlamanız ve pcap süreçlerini ilerletmeniz gerekiyor burada tavsiye önce notepad da düzenleyin pod ismi pod namespace kaydedilecek yer vb gibi düzenle yapabilirsiniz. Komut seti aşağıda.

# NAME=<pod-name>
# NAMESPACE=<pod-namespace>
# pod_id=$(chroot /host crictl pods --namespace ${NAMESPACE} --name ${NAME} -q)
# ns_path="/host/$(chroot /host bash -c "crictl inspect $pod_id | jq '.info.runtimeSpec.linux.namespaces[]|select(.type==\"network\").path' -r")"
# nsenter --net=${ns_path} -- tcpdump -nn -i ${INTERFACE_NAME} -w /host/var/tmp/${HOSTNAME}_$(date +%d_%m_%Y-%H_%M_%S-%Z).pcap 

Komut için path sonunda hostname ve ve pcap alınma zamanın ile dosya ismi oluşacak bilginize. Bir not daha bu yukarıda komut OpenShift 4.9 ve sütü için geçerli daha düşük versiyon için altaki referans linkine bakabilirsiniz mantık aynı.

Referans olarak bu adrese bakabilirsiniz : https://access.redhat.com/articles/4365651

Burada bastion makineye dosyayı kopyalama süreci aynı olduğu için dosya adınız var path var elinizde ve yukarıdaki node' lar bölümündeki bastion makineye kopyalama alanı ile aynı o yüzden bir daha yazma gereği duymadım.

Tüm süreçler için hem node hem de pod pcap yada sizin oluşturduğunuz bir dosya ile işiniz bitti ise bunu node üzerinde yada pod içinden silinmesi best partice olarak red hat tarafından öneriliyor. Aşağıdaki komutu kullana bilirisiniz.

rm /host/var/tmp/worker1-443-tcpdump.pcap


Umarım faydalı bir yazı olmuştur. Kolay gelsin.

Daha yeni Daha eski