Integracja Gitlab z AWX - Automatyzacja playbooków Ansible
W poniższych filmach wyjaśniam, jak zainstalować, skonfigurować i usunąć Argo CD za pomocą Bash i Ansible.
Samouczek: Instalacja, konfiguracja i usuwanie Argo CD za pomocą Bash i Ansible
W tym samouczku omówimy, jak zainstalować, skonfigurować i usunąć Argo CD, deklaratywne narzędzie do ciągłej dostawy GitOps dla Kubernetes, używając skryptów Bash i playbooków Ansible.
Część 1: Instalacja i konfiguracja Argo CD
Instalacja Git i Helm:
Zacznij od zainstalowania Git i Helm w swoim środowisku. Helm to menedżer pakietów dla Kubernetes, który upraszcza wdrażanie aplikacji i usług.
|
|
Włącz autouzupełnianie dla Helm:
Aby uczynić twoje doświadczenie z Helmem bardziej efektywnym, włącz autouzupełnianie dla twojej powłoki bash:
|
|
Utwórz przestrzeń nazw dla Argo CD:
Przestrzenie nazw pomagają organizować zasoby w Kubernetes. Utwórz przestrzeń nazw specjalnie dla Argo CD:
|
|
Dodaj repozytorium Helm dla Argo CD:
Repozytoria Helm przechowują zapakowane wykresy Helm. Dodaj repozytorium Argo CD do Helm:
|
|
Zaktualizuj swoje repozytoria Helm:
Upewnij się, że masz najnowsze informacje o wykresach ze wszystkich dodanych repozytoriów:
|
|
Zainstaluj Argo CD za pomocą Helm:
Wdroż Argo CD w swoim klastrze Kubernetes w przestrzeni nazw argocd
:
|
|
Utwórz zasób Ingress dla Argo CD:
Ingress udostępnia trasy HTTP i HTTPS z zewnątrz klastra do usług wewnątrz klastra. Utwórz ingress, aby uzyskać dostęp do Argo CD z zewnątrz:
Najpierw utwórz plik o nazwie argocd-ingress.yml
:
|
|
Następnie wstaw poniższą zawartość YAML:
|
|
Zastosuj konfigurację ingress:
|
|
Pobierz początkowe hasło administratora:
Argo CD generuje początkowe hasło administratora, które będziesz potrzebować do logowania:
|
|
Następnie powinieneś usunąć początkowy sekret, jak sugeruje Przewodnik dla Początkujących
Modyfikuj konfigurację Argo CD w przypadku problemów z wylogowaniem:
Jeśli napotkasz problemy związane z błędem wylogowania, zaktualizuj konfigurację Argo CD:
|
|
Część 2: Automatyzacja instalacji za pomocą Bash
Aby zautomatyzować proces instalacji za pomocą Bash,
wykonaj następujące kroki:
- Utwórz skrypt o nazwie
argocd-install.sh
:
|
|
- Wstaw do pliku dostarczoną zawartość skryptu Bash, która odzwierciedla wcześniej omówione kroki instalacji ręcznej.
|
|
- Zapisz plik i nadaj mu prawa do wykonywania:
|
|
- Wykonaj skrypt:
|
|
- Pobierz początkowe hasło administratora:
Argo CD generuje początkowe hasło administratora, które będziesz potrzebować do logowania:
|
|
- Następnie powinieneś usunąć początkowy sekret, jak sugeruje Przewodnik dla Początkujących
Część 3: Automatyzacja instalacji za pomocą Ansible
Dla osób, które preferują Ansible, samouczek zawiera kroki umożliwiające automatyzację wdrożenia Argo CD za pomocą playbooka Ansible:
- Utwórz playbook Ansible o nazwie
argocd-install.yml
:
|
|
- Skopiuj dostarczoną zawartość playbooka Ansible do pliku. Playbook automatyzuje kroki z procesu instalacji ręcznej.
|
|
- Zapisz plik i uruchom playbook:
|
|
Powinieneś zobaczyć podobne wyjście:
|
|
- Pobierz początkowe hasło administratora:
Argo CD generuje początkowe hasło administratora, którego będziesz potrzebować do logowania:
|
|
- Następnie powinieneś usunąć początkowy sekret, jak sugeruje Przewodnik dla Początkujących
Powyższy playbook Ansible jest zorganizowany w celu automatyzacji wdrożenia i konfiguracji Argo CD w środowisku Kubernetes. Poniżej znajduje się szczegółowy opis jego komponentów i zadań:
-
Ogólna struktura: Playbook rozpoczyna się od front matter YAML (
---
) i definiuje pojedynczą rozgrywkę nazwaną “Install Argo CD”. Jest przeznaczona do wykonania na lokalnej maszynie (oznaczonej przezhosts: localhost
) i wymaga podniesionych uprawnień (become: yes
), co jest podobne do uruchamiania poleceń z sudo. -
Zadania: Playbook składa się z kilku zadań, z których każde jest zaprojektowane do wykonania określonego kroku w procesie konfiguracji:
-
Utwórz przestrzeń nazw argocd: To zadanie używa polecenia
kubectl create namespace argocd
do utworzenia nowej przestrzeni nazw Kubernetes o nazwieargocd
. Ta przestrzeń nazw jest przeznaczona dla wszystkich zasobów związanych z Argo CD. Dyrektywaignore_errors: yes
zapewnia, że playbook kontynuuje działanie nawet jeśli to polecenie napotka na błąd, co może być przydatne, jeśli przestrzeń nazw już istnieje. -
Dodaj repozytorium Argo CD: Wykonuje
helm repo add argo https://argoproj.github.io/argo-helm
aby dodać repozytorium wykresów Argo CD do Helm, umożliwiając Helmowi instalację Argo CD z tego repozytorium. -
Aktualizuj repozytorium przy użyciu Helm: Uruchamia
helm repo update
aby zaktualizować lokalną pamięć podręczną wykresów ze wszystkich dodanych repozytoriów, zapewniając, że najnowsze wersje są dostępne do instalacji. -
Zainstaluj Argo CD przy użyciu Helm: To zadanie używa Helm do zainstalowania Argo CD w wcześniej utworzonej przestrzeni nazw
argocd
. Ustawia zmienną środowiskowąKUBECONFIG
jawnie na plik kubeconfig, zapewniając, że Helm wchodzi w interakcje z odpowiednim klasterem Kubernetes. -
Utwórz Ingress dla Argo CD: Stosuje zasób Ingress do zewnętrznego udostępnienia serwera Argo CD. Zasób jest zdefiniowany w linii i stosowany przy użyciu
kubectl apply
. Ingress jest skonfigurowany do używania HTTPS i kieruje ruch do usługiargocd-server
. -
Pauza na 3 minuty, aby pozwolić Argo CD zainicjować: Wykorzystuje moduł
pause
do zatrzymania wykonania playbooka na trzy minuty. Ten czas oczekiwania pozwala Argo CD na pełne uruchomienie się i osiągnięcie gotowości operacyjnej przed kontynuacją z dalszymi konfiguracjami. -
Pobierz configmap argocd-cm: Pobiera ConfigMap
argocd-cm
z przestrzeni nazwargocd
i zapisuje go do pliku (/tmp/argocd-cm.yml
). Ta ConfigMap zawiera ustawienia konfiguracyjne dla Argo CD. -
Zaktualizuj configmap argocd-cm: Wykorzystuje moduł
replace
do modyfikacji zapisanego pliku ConfigMap, zmieniając wystąpieniaexample.com
nasysadmin.homes
. To zadanie dostosowuje ustawienia domeny Argo CD do pasującego środowiska. -
Zastosuj zmodyfikowaną configmap argocd-cm: Stosuje zmiany do ConfigMap
argocd-cm
z powrotem do klastra Kubernetes przy użyciukubectl apply
, aktualizując konfigurację Argo CD.
Każde zadanie zawiera opcję ignore_errors: yes
, aby kontynuować wykonanie nawet jeśli wystąpią błędy. Może to być przydatne w skryptach, gdzie można przewidzieć błędy w niektórych operacjach lub są one nieistotne, ale może to także ukryć ważne problemy, więc zazwyczaj używa się tego z ostrożnością.
Łącząc te zadania, playbook automatyzuje konfigurację i początkowe ustawienie Argo CD, ułatwiając ciągłe wdrażanie i zarzą
dzanie aplikacjami w środowiskach Kubernetes.
Następnie powinieneś usunąć początkowy sekret, jak sugeruje Przewodnik dla Początkujących
Część 4: Usuwanie Argo CD z Ansible
Gdy potrzebujesz usunąć Argo CD ze swojego klastra, użyj dostarczonego playbooka Ansible zaprojektowanego do czystego usunięcia:
- Utwórz playbook usuwania o nazwie
remove-argocd.yml
:
|
|
- Wprowadź dostarczoną zawartość mającą na celu systematyczne usuwanie komponentów Argo CD.
|
|
- Wykonaj playbook usuwania:
|
|
Ten playbook obniża skalę, usuwa wdrożenia, usługi, statefulsety, konta usługowe, powiązania ról, role, ingressy i w końcu całą przestrzeń nazw argocd
, skutecznie czyści wszystkie komponenty Argo CD z twojego klastra.
Więcej szczegółów poniżej:
Ten playbook Ansible jest zaprojektowany do systematycznego usuwania Argo CD i jego powiązanych zasobów z klastra Kubernetes. Każde zadanie w playbooku używa modułu shell
do bezpośredniego wykonania poleceń kubectl
, wchodząc w interakcje z klastrem w celu usunięcia określonych komponentów Argo CD. Playbook działa na lokalnej maszynie (hosts: localhost
) i wymaga podniesionych uprawnień (become: yes
). Oto szczegółowy podział:
-
skaluje wszystkie wdrożenia w przestrzeni nazw argocd do zera replik: To zadanie obniża skalę wszystkich wdrożeń w przestrzeni nazw
argocd
do zera replik, skutecznie zatrzymując wszystkie działające komponenty Argo CD. Jest to często robione jako wstępny krok przed usunięciem, aby zapewnić łagodne zamknięcie usług. -
Usuń wdrożenia Argo CD: Usuwa określone wdrożenia Argo CD, w tym serwer repozytorium, kontroler ApplicationSet, kontroler powiadomień, serwer Redis, serwer Dex i główny serwer Argo CD, wszystko w przestrzeni nazw
argocd
. -
Usuń usługi Argo CD: Usuwa usługi związane z tymi samymi komponentami wymienionymi powyżej. W Kubernetes usługi zapewniają dostęp do sieci do zestawu podów, więc usuwając te usługi, odetniesz dostęp do sieci do odpowiadających komponentów Argo CD.
-
Usuń statefulsety Argo CD: Usuwa StatefulSet
argocd-application-controller
. W Argo CD, kontroler aplikacji zarządza cyklem życia aplikacji i ciągle monitoruje stany aplikacji. Ponieważ jest wdrożony jako StatefulSet, wymaga osobnego polecenia od Wdrożeń. -
Usuń konta usługowe Argo CD: Usuwa konta usługowe Kubernetes używane przez komponenty Argo CD. Konta usługowe zapewniają tożsamość procesom, które działają w Podzie i pozwalają komponentom Argo CD na interakcje z interfejsem API Kubernetes.
-
Usuń powiązania ról Argo CD: Usuwa RoleBinding w przestrzeni nazw
argocd
. RoleBinding łączą Role z użytkownikami lub grupami, przyznając uprawnienia do zasobów opisanych w rolach. Ten krok usuwa uprawnienia, które komponenty Argo CD miały w przestrzeni nazw. -
Usuń role Argo CD: Usuwa Role w przestrzeni nazw
argocd
. Role definiują zestaw uprawnień, takich jak jakie operacje są dozwolone na zestawie zas
obów. Ten krok skutecznie usuwa te zdefiniowane uprawnienia.
-
Usuń ingress Argo CD w przestrzeni nazw argocd: Usuwa zasób Ingress dla Argo CD, który był używany do udostępnienia serwera Argo CD światu zewnętrznemu za pomocą URL.
-
Usuń przestrzeń nazw argocd: Na końcu usuwa całą przestrzeń nazw
argocd
, co usuwa wszystkie pozostałe zasoby pod przestrzenią nazw, czyści środowisko. Jest to ostateczny krok, aby upewnić się, że wszystkie komponenty, w tym te możliwie pominięte przez wcześniejsze zadania, zostaną usunięte.
Każde zadanie jest ustawione z ignore_errors: yes
, co oznacza, że playbook będzie kontynuowany, nawet jeśli wystąpią błędy w jakichkolwiek zadaniach. Może to być przydatne, gdy nie jesteś pewien, czy wszystkie komponenty są obecne, lub jeśli chcesz zapewnić, że playbook przebiegnie do końca bez względu na indywidualne błędy poleceń. Jednak ważne jest, aby być ostrożnym z tym ustawieniem, ponieważ może to również oznaczać, że prawdziwe błędy są ignorowane, co może prowadzić do niekompletnego czyszczenia.
Gratulacje! Pomyślnie nauczyłeś się, jak instalować, konfigurować, automatyzować i usuwać Argo CD w klastrze Kubernetes, używając zarówno skryptów Bash, jak i playbooków Ansible. Ten samouczek dostarcza narzędzi niezbędnych zarówno do ręcznego, jak i zautomatyzowanego zarządzania Argo CD, zaspokajając różnorodne preferencje operacyjne.