Ansible Kubernetes (K8s) Envanter Kaynağı

Ansible Kubernetes K8s Envanter Kaynagi



Bu gönderide, Kubernetes eklentisini Ansible aracında nasıl kullanacağımızı öğreniyoruz. Ansible'da çok sayıda konteyneri yönetmek zordur. Ancak, kapsayıcıları yönetirken Ansible'da Kubernetes kullanmak faydalıdır. Bu kılavuzda, Kubernetes envanter kaynağının ne olduğunu ve Ansible'da nasıl çalıştığını öğreneceğiz.

Google, Kubernetes eklentisine son derece uyarlanabilir bir özellik sağlayan sıfır kesintili kurulum özellikleri, otomatik geri döndürme ve ölçeklenebilirlik ile uzak bir makine grubu üzerinden sanallaştırılmış yapılandırmaları yönetmek için kullanılan ve K8 olarak da bilinen Kubernetes adlı, kolayca erişilebilen yönetim yazılımını piyasaya sürdü. Ansible'da mimari. Gerekli işlevsellik için REST API'lerinin kullanılabilirliği sayesinde, Kubernetes'in birincil hedefi, bir dizi kapsayıcıyı kontrol etmeyle ilişkili karmaşıklıkları gizlemektir.







Kubernetes yapılandırması, istemci-sunucuya dayalıdır. Ancak, varsayılan olarak, kontrol eden ana makine olarak hizmet veren yalnızca bir ana sunucu vardır. Kubernetes'te, Kubernetes'in yapılandırması için çok ana denetleyicileri de kullanabiliriz. K8s envanter kaynağı bazen kontrol sistemleri için gereklidir ve uzak ana bilgisayardaki servisleri kontrol bölmeleri için yapılandırır. Ancak bunun nasıl yapılacağına dair özel talimatlar almanın zorlukları vardır. Sonuç olarak, bir etki alanındaki bölmeleri ayıklayan ve bir Kubernetes envanter kaynağı oluşturan bir Ansible Playbook'un nasıl yapılacağına ilişkin bu öğreticiyi uyguluyoruz.



Ansible'da Kubernetes Envanter Kaynağını Kullanmanın Ön Koşulları

Ansible'da Kubernetes envanter kaynağını kullanmak için, bu kılavuz boyunca aşamalı işlem yönergeleri veya komutları vardır. İlerlemek istiyorsanız gerekli hazırlığa sahip olduğunuzdan emin olun:



  • Bir Ansible senaryosunda çalışmak için öncelikle sunucuda Ansible aracını kuruyoruz ve Kubernetes eklentisini kolayca kullanabilmemiz için Ansible 2.11.7 sürümüne sahip olduğunuzdan emin oluyoruz.
  • Kubernetes eklentisini değerlendirmek için yerleşik bir Kubernetes kümesine sahip bir uzak sunucu cihazına ihtiyacımız var.
  • Uzak ana bilgisayar şu anda Ansible talimatlarını ve çalışma kitaplarını ve yerleşik bir envanter dosyasını yürütmek üzere yapılandırılmıştır. Hedef uzak cihazın adı K8s Master Node'dur.
  • Python sürümü, Ansible denetleyicisinin cihazına yüklenmesi gereken 3.6 veya üzeridir. Ayrıca hedef uzak ana cihazda da olabilir.
  • Python'un openshift modülünün sürümü 0.6 veya üzeridir. Ayrıca sürüm 3.11 veya üzeri bir pyYAML modülüne ihtiyacımız var. Her iki modül de kontrol cihazının yanı sıra uzak sunucu cihazında kurulmalıdır.

Örnek:





İşte Kubernet'leri Ansible'da uyguladığımız ilk örnek. Bunu yapmak için Kubernetes envanter kaynağını uygulamak üzere herhangi bir Ansible ortamını kullanırız. Aşağıdaki listelenen işlemler, Kubernetes Envanter Eklentisi kullanılarak aşağıdaki senaryoda gerçekleştirilir:

  • Ansible'daki K8s kümesindeki yeni ad alanının uygulanması.
  • Ansible başucu kitabı kullanılarak nginx bölmesinin oluşturulması.
  • Ansible'da nginx dağıtımının oluşturulması.

Kavramların ve yürütmenin anlaşılmasını kolaylaştırmak için örneği birkaç adımda uyguluyoruz.



1. Adım: Yeni Ad Alanını Ansible'daki K8s Kümesine uygulayın

İlk adımda içeriği Ansible'da “.yml” formatında yazabilmemiz için başucu kitabını oluşturuyoruz. Oyun kitabını oluşturmak için kullandığımız komut aşağıdadır:

[ kök @ usta sorumlu ] # nano nginx_pod.yml

Şimdi, 'pod.yml' çalışma kitabı oluşturuldu ve Ansible'ın yeni terminalinde başlatıldı. Senaryoyu yazmaya başlıyoruz. Playbook'ta ilk olarak Ansible pod'unda kullandığımız API versiyonunu “v1” olarak tanımlıyoruz. Tanımladığımız isim alanı “ansible-namespace” dir. Ardından, ansible-namespace'in meta verilerini listeleriz. Meta verilerde, nginx yazılımını ve içinde bir değer katmanı içeren etiketi kullanıyoruz. Başucu kitabının özelliklerinde, kapsayıcıda saklanan adı ve resmi listeleriz; her ikisi de içinde nginx içerir.

Adım 2: Ansible'da Manifest Belgesini Oluşturun

Şimdi, Ansible'ın aynı dizininde “.yml” formatında dağıtım belgesi olan başka bir belge oluşturuyoruz. Bildirim belgesini oluşturmak için Ansible terminalinde aşağıdaki komutu kullanın:

[ kök @ usta sorumlu ] # nano nginx_deployment.yml

Manifest belgesinde, önce 'app/v1' olan uygulama sürümünü yeniden tanımlıyoruz. Ardından ne tür bir dosya olduğunu, bir dağıtım dosyası olup olmadığını söylüyoruz. Ardından, ansible-namespace olan ad alanını tanımlarız. Uygulamayı oluşturmak için, ansible-namespace içindeki iki replika bölmenin numarasını gösterir. Nginx görüntüleri, bölmede başlatılan 1.14.2'dir. matchLabels parametresi, spec parametresi altında bölmeler için etiketleri ve özelliklerini sağlar. Kapsüllerdeki etiketler, yapılandırma bilgilerinde belirtilenlerle bir şekilde eşleşirse uygulama, Ansible'daki manifest belgesinde gerçekleşir.

3. Adım: Ansible'da Kubernetes Uygulaması için Başucu Kitabı Oluşturun

Şimdi, Ansible'da başka bir başucu kitabı oluşturmak istiyoruz. Bu başucu kitabında, Kubernetes'in işlevselliğini içinde uyguluyoruz. Oyun kitabını oluşturmak için aşağıdaki komutu kullanın:

[ kök @ usta sorumlu ] # nano kubernetes_main.yml

Çalışma kitabı, önceki çalışma kitabı ve bildirim belgesinin Ansible'da depolandığı aynı dizinde oluşturulur. Başucu kitabında, önce uygulamak istediğimiz başucu kitabının işlevselliğini tanımlarız. Bağlantıyı kurmak için, hedeflemek istediğimiz uzak ana bilgisayarları sağlıyoruz. Burada 'tüm' ana bilgisayarları hedefliyoruz. Ardından, depolandığı yolu kullanarak Ansible'daki Python yorumlayıcısını kontrol etmek için değişkeni tanımlarız. Şimdi, oyun kitabındaki görevleri tanımlıyoruz. Öncelikle minikube cihazının durumunu kontrol ediyoruz. Ardından, çalışma kitabında yeni bir Kubernetes ad alanı oluşturuyoruz. Ardından, nginx_pod.yml ve nginx_deployment .yml'yi uzak aygıta çoğaltın.

Bu yml belgeleri aracılığıyla, uzak cihazda pod uygulamasını oluşturuyoruz. Ardından, uzak cihazda belirtilen konumda Kubernetes pod'unun var olup olmadığını kontrol ediyoruz.

Başucu kitabı sonlandırıldıktan sonra, Ansible denetleyicisi ile hedef uzak ana bilgisayar arasında bağlantı kurabilmemiz için envanter dosyasını oluşturuyoruz.

Tüm:
ev sahipleri:
k8s_Master_Node:
ansible_host: 192.168.3.229
ansible_user: yanıtlanabilir
ansible_password: ********
ansible_connection: ssh
ansible_port: 22

[ kök @ usta sorumlu ] # ansible-playbook kubernates_main.yml

İşte görevlerin hedef makineye başarıyla yerleştirildiğini gördüğümüz istenen çıktı:

Görev hedef makineye yerleştirildikten sonra “ansible-namespace”in Kubernetes kümesinde olup olmadığını kontrol ediyoruz. Aşağıdaki “grep” komutunu kullanıyoruz:

[ kök @ usta sorumlu ] # kubectl ad alanını al | grep yanıtlanabilir-ad alanı

Oluşturulan bölmeyi Kubernetes kümesinin ad alanında kontrol etmek istiyorsanız, kontrol etmek için aşağıdaki komutu yazın:

[ kök @ usta sorumlu ] # kubectl bölmeleri al --namespace ansible-namespace

Bir önceki çıktıda gördüğünüz gibi cihazda çalışan podları alıyoruz. Şimdi Kubernetes kümesinde yaptığımız dağıtımı kontrol ediyoruz. Halihazırda yapılmış dağıtımları kontrol etmek için aşağıdaki ifadeyi kullanın:

[ kök @ usta sorumlu ] # kubectl dağıtımları al --namespace ansible-namespace

Çözüm

Ansible'da Kubernetes envanter kaynağının ne olduğunu öğrendik. Ansible'da Kubernetes envanterini nasıl kullanacağımızı da öğrendik. Ardından, Kubernetes envanter kaynağının Ansible'da nasıl çalıştığını daha net öğrenebilmemiz için bir örnek uyguladık.