Odcinek 7 - Flux, ArgoCD - jak zacząc pracę z uzyciem GitOps ?
Czym jest metodyka GitOps ? Jakich narzędzi do tego podejścia moglibyśmy użyć ? Jakie są różnice między dwoma, tytułowymi rozwiązaniami ? Odpowiedzi na te pytania znajdziesz w kolejnym odcinku podcast, zaś kod źródłowy oraz linki do materiałów są dostępne w https://github.com/sebastianczech/podcast-everything-as-a-code/tree/main/episode-007.
Cześć. Witam cię serdecznie w kolejnym odcinku mojego podcastu Everything as a Code. Dzisiaj chciałbym opowiedzieć o tym, czym jest GitOps, a także o dwóch popularnych narzędziach, to jest Flux i ArgoCD. Zacznę jednak od wyjaśnienia, czym w ogóle GitOps jest. GitOps jest metodyką zarządzania infrastrukturą IT, ... która opiera się na wykorzystaniu systemu kontroli wersji Git do automatyzacji procesów wdrażania i zarządzania aplikacjami, a także infrastrukturą. Można by wyróżnić 4 główne założenia metodyki GitOps.
OK. Zostawmy założenia metodyki GitOps. Wiemy czym ona jest. Przejdźmy płynnie do narzędzi jakie możemy wykorzystać by GitOps'a wdrożyć. W tytule podcastu wspomniałem o Fluxie i ArgoCD. Są to wydaje mi się dwa najpopularniejsze narzędzia do tej metodyki. Zaraz opowiem o nich więcej. Jakie są między nimi różnice. Wymienię tylko jeszcze kilka innych narzędzi, które można by zastosować, ale o których tutaj nie będę mówić szerzej. Są to narzędzia takie jak JenkinsX, WaveKitOps czy TofuControl. Linki do każdej z tych narzędzi znajdziecie w opisie do tego odcinka. Przechodząc do tego ArgoCD i Fluxa. Są to dwa najbardziej popularne rozwiązania.
Pierwszy z nich został wydewelopowany przez Weaveworks i jest obecnie częścią CNCF-a, czyli Cloud Native Computing Foundation. ArgoCD również jest częścią CNCFE, ale był na początku dewelopowany przez Intuit. Co łączy oba zarzędzi? Przede wszystkim to, że bardzo mocno integrują się z Kubernetesem, czyli w środowisku, w którym mamy Kubernetesa te narzędzia sprawdzą się na pewno świetnie. Flux wspiera natywnie Helma i Customizer, ArgoCD wspiera troszkę więcej rozwiązań, bowiem Cassoneta, JSONeta oraz zwykłe pliki yamlowe.
Różnicą między tymi dwoma narzędziami jest np. to, że Flux nie posiada żadnego UI, natomiast ArgoCD posiada interfejs webowy, więc jeśli ktoś preferuje taki sposób konfiguracji narzędzi, to ArgoCD do tego wydaje się być lepszy, bo posiada taki interfejs. Ja osobiście wolę robić wszystko za pomocą kodu i skryptów, więc brak UI w Fluxie nie jest argumentem, który neguje użycie tego narzędzia. Oczywiście oba zarzędzi świetnie się zorganizują z serwerem Git, bo przecież to jest podstawą metodyki GitOps. Jeśli chodzi o rozwiązania dla zespółów pracujących w korporacjach, to tutaj wydaje się, że ArgoCD ma troszkę więcej możliwości, takie jak wsparcie do SSO, RBAC-a i możliwość zarządzania wieloma klastrami Kubernetes.
Z racji tego, że w notatkach do tego odcinka umieściłem przykłady, które zrobiłem samodzielnie dla Fluxa. Opowiem teraz w jaki sposób moglibyśmy zacząć pracę z Fluxem. Oczywiście podobne kroki będą przy ArgoCD. Będą to oczywiście niuanse, różnice. Natomiast w linkach do tego odcinka znajdziecie również linki do dokumentacji i Fluxa i ArgoCD, więc na pewno jeśli chcecie zacząć z każdej z nich pracę, odsyłam to w notatek z tego odcinka. Więc co zrobić, by zacząć używać Fluxa? Pierwszym krokiem jest zainstalować sobie narzędzie do naszego CLI. Tutaj bardzo dużo zależy, jakiego systemu pracownego używamy. Gdy mamy już narzędzie Fluxa w CLI, musimy przygotowywać sobie Personal Access Token do GitHuba i wyeksportować go w naszej konsoli.
W narzędziu Flux CLI mamy komendę check, która pozwala nam zweryfikować klaster Kubernetes przed rozpoczęciem instalacji, więc zalecam wykonanie tego checka przed rozpoczęciem wdrożenia Fluxa w klastrze. W kolejnym kroku, gdy już mamy wyosportowane dane do użytkowania w GitHubie, przygotowujemy komendę Flux bootstrap, która instaluje Fluxa w naszym klastrze Kubernetes. Kolejnym krokiem jest to, by aplikację, którą chcemy zarządzać za pomocą GitOps, tą aplikację odpowiednio skonfigurować. I do tego celu służy komenda Flux Create Source, a następnie Flux Create Customization.
Te komendy z wszystkimi opcjami znajdziecie również w notatkach do tego odcinka. Po zintegrowaniu naszej aplikacji, naszego repozytorium z kodem aplikacji z Fluxem, oczywiście warto sprawdzić czy to wdrożenie odbyło się poprawnie i od tego momentu każda zmiana w kodzie i zakomitowanie tej zmiany w Gitie spowoduje to, że Flux automatycznie wdroży te zmiany w naszej infrastrukturze. Wiem, że być może ta ostatnia część tego odcinka może być ciężka, mówiąc, opisując tylko te komendy słownie. Najlepiej je sprawdzić w praktyce.
Pokazano wszystkie 7 dopasowań. Transkrypcja generowana automatycznie i niesprawdzana ręcznie — może zawierać błędy.
Kliknij, aby znaleźć fragmenty, w których pada.
Czym jest metodyka GitOps ? Jakich narzędzi do tego podejścia moglibyśmy użyć ? Jakie są różnice między dwoma, tytułowymi rozwiązaniami ? Odpowiedzi na te pytania znajdziesz w kolejnym odcinku podcast, zaś kod źródłowy oraz linki do materiałów są dostępne w https://github.com/sebastianczech/podcast-everything-as-a-code/tree/main/episode-007.