kubevirt.kubevirt-modules

Moduły Ansible KubeVirt

Moduły Ansible KubeVirt umożliwiają automatyzację zarządzania następującymi typami obiektów w klastrze Kubernetes:

  • Maszynami Wirtualnymi (a także szablonami maszyn wirtualnych i presetami maszyn wirtualnych),
  • Zestawami Replik Maszyn Wirtualnych,
  • oraz Żądaniami Perynsyjnych Wolumenów (w tym funkcjonalnością Containerized Data Importer).

Od wersji Ansible 2.8, moduły, wtyczka inwentarza oraz odpowiednie testy jednostkowe są częścią głównego repozytorium Ansible, podczas gdy to repozytorium zawiera tylko testy integracyjne i przykładowe playbooki.

Spis Treści

Szybkie Wprowadzenie

Aby szybko się zapoznać, proszę zobaczyć następujące posty na blogu kubevirt.io:

Wymagania

Kod Źródłowy

Testowanie

Istnieją dwa typy testów, które można znaleźć tutaj:

Aby przeprowadzić pełny zestaw testów dla danego celu, należy użyć odpowiedniego playbooka all.yml.

Testowanie automatyczne

Testy jednostkowe

Główne repozytorium ansible zawiera testy jednostkowe obejmujące moduły kubevirt.

Testy integracyjne

Testy modułów (tests/playbooks/all.yml) są uruchamiane na rzeczywistych klastrach z zainstalowanymi zarówno KubeVirt, jak i CDI, na:

  • TravisCI (maszyny wirtualne Ubuntu wspierające tylko minikube; brak akceleracji kvm dla maszyn wirtualnych KubeVirt)
  • Jenkins oVirt (fizyczne serwery obsługujące wszelkie klastry wspierane przez kubevirtci)

Testy modułów są uruchamiane z użyciem:

  • najnowszej wydanej wersji ansible (cokolwiek dostanie się z pip install ansible)
  • stabilnych gałęzi ansible
  • gałęzi deweloperskiej ansible

Testy ról (tests/roles/all.yml) są uruchamiane tylko na TravisCI, korzystając z gałęzi deweloperskiej.

Aby wczesniej wykrywać regresje, Travis uruchamia wszystkie testy co 24 godziny na świeżym klonie ansible.git i wysyła e-maile do deweloperów modułów kubevirt, jeśli testy się nie powiodą.

Testowanie ręczne

  1. Sklonuj to repozytorium na maszynie, z której możesz zalogować się do klastra:

    $ git clone https://github.com/kubevirt/ansible-kubevirt-modules.git
    $ cd ./ansible-kubevirt-modules
    
  2. (Opcjonalnie) Skonfiguruj wirtualne środowisko, aby odizolować zależności:

    $ python3 -m venv env
    $ source env/bin/activate
    
  3. Zainstaluj zależności:

    $ pip install openshift
    

    Jeśli pominiesz poprzedni krok, możesz potrzebować dodać sudo przed tym poleceniem.

  4. Zainstaluj ansible (w jeden z wielu sposobów):

    • Zainstaluj najbardziej aktualną wersję:

      $ pip install ansible
      

      Ponownie, może być wymagane sudo.

    • Zbuduj RPM z gałęzi deweloperskiej:

      $ git clone https://github.com/ansible/ansible.git
      $ cd ./ansible
      $ make rpm
      $ sudo rpm -Uvh ./rpm-build/ansible-*.noarch.rpm
      
    • Sprawdź PR-y lokalnie

  5. Uruchom testy:

    $ ansible-playbook tests/playbooks/all.yml
    

    Uwaga: Przykłady playbooków zawierają konfigurację cloud-init, aby móc uzyskać dostęp do utworzonych VMI.

    1. Aby użyć SSH, wykonaj następujące kroki:

      $ kubectl get all
      NAME                             READY     STATUS    RESTARTS   AGE
      po/virt-launcher-bbecker-jw5kk   1/1       Running   0          22m
      
      $ kubectl expose pod virt-launcher-bbecker-jw5kk --port=27017 --target-port=22 --name=vmservice
      $ kubectl get svc vmservice
      NAME        TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)     AGE
      vmservice   ClusterIP   172.30.133.9   <none>        27017/TCP   19m
      
      $ ssh -i tests/test_rsa -p 27017 [email protected]
      

      Może zająć chwilę, zanim maszyna wirtualna uruchomi się przed użyciem SSH.

    2. Aby użyć virtctl:

      $ virtctl console <vmi_name>
      

      Lub

      $ virtctl vnc <vmi_name>
      

      Użyj nazwy użytkownika kubevirt i hasła kubevirt.

  6. (Opcjonalnie) Opuszczając wirtualne środowisko, usuń je:

    $ deactivate
    $ rm -rf env/
    

Uwagi dotyczące modułu kubevirt_cdi_upload

Aby przesłać obraz z localhost, korzystając z modułu kubevirt_cdi_upload, Twój system musi być w stanie połączyć się z podem proxy do przesyłania CDI. Można to osiągnąć na dwa sposoby:

  1. Ekspozycja usługi cdi-uploadproxy z przestrzeni nazw cdi, lub

  2. Używając kubectl port-forward, aby ustawić tymczasowe przekierowanie portów przez serwer API Kubernetes: kubectl port-forward -n cdi service/cdi-uploadproxy 9443:443

Uwagi dotyczące modułu k8s_facts

Następujące polecenie zbierze fakty o istniejących maszyna wirtualnych, jeśli takie istnieją, i wydrukuje dokument JSON oparty na specyfikacji VM KubeVirt:

$ ansible-playbook examples/playbooks/k8s_facts_vm.yml

Uwagi dotyczące wtyczki inwentarza KubeVirt

Wtyczki inwentarza pozwalają użytkownikom wskazywać źródła danych, aby skompilować inwentarz hostów, które Ansible używa do celów zadań, za pomocą parametrów wiersza poleceń -i /path/to/file i/lub -i 'host1, host2' lub z innych źródeł konfiguracyjnych.

Włączanie wtyczki KubeVirt inwentarza

Aby włączyć wtyczkę KubeVirt, dodaj następującą sekcję w pliku tests/ansible.cfg:

[inventory]
enable_plugins = kubevirt

Konfiguracja wtyczki inwentarza KubeVirt

Zdefiniuj konfigurację wtyczki w tests/playbooks/plugin/kubevirt.yaml w następujący sposób:

plugin: kubevirt
connections:
  - namespaces:
      - default
    interface_name: default

W tym przykładzie wtyczka KubeVirt wylistuje wszystkie VMI z przestrzeni nazw default i użyje nazwy interfejsu default.

Użycie wtyczki inwentarza KubeVirt

Aby użyć wtyczki w playbooku, uruchom:

$ ansible-playbook -i kubevirt.yaml <playbook>

Uwaga: Wtyczka inwentarza KubeVirt jest zaprojektowana do pracy z Multus. Może być używana tylko dla VMI, które są połączone z mostem i wyświetlają adres IP w polu Status. Dla VMI eksponowanych przez usługi Kubernetes proszę użyć modułu Ansible k8s.

Zainstaluj
ansible-galaxy install kubevirt.kubevirt-modules
Licencja
apache-2.0
Pobrania
86
Właściciel
Managing virtualization workloads on Kubernetes