W projekcie, w którym mieliśmy problem z Ingress także popełniliśmy kilka innych pomniejszych „błędów” które utrudniały nam współpracę pomiędzy dwoma różnymi zespołami w Europie. Jeden z problemów polegał na tym, iż klient chciał wdrażać rozwiązanie pod zupełnie innym namespace niż my. Co gorsza, za każdym razem, kiedy przekazywaliśmy nasze rozwiązanie do klienta, ktoś z nas zamieniał abc na cba we wszystkich plikach Yaml – wydajne? nie wydaje mnie się!

Dosłownie mówiąc mając taką definicję:

apiVersion: v1
namespace: abc
kind: Service
metadata:
  name:  dumpster-svc
  labels:
    app: boss
spec:
  type: ClusterIP
  selector:
    app: boss
  ports:
  - name: http
    port: 80
    targetPort: 8080

Zamienialiśmy ją na:

apiVersion: v1
namespace: cba
kind: Service
metadata:
  name:  dumpster-svc
  labels:
    app: boss
spec:
  type: ClusterIP
  selector:
    app: boss
  ports:
  - name: http
    port: 80
    targetPort: 8080

Proces był “automatyzowany” jednak podczas wsparcia i próbowania rozwiązania konfliktów u klienta nie każdy wiedział o tej zamianie namespace. Przekazywanie plików więc zawsze stanowiło „problem”. Nawet CI/CD tutaj by nie pomógł poprzez zmianę namespace na odpowiednie wartości gdyż wciąż przy wsparciu technicznym trzeba by było pamiętać o aktualizacji tej wartości.

Nagle stanęliśmy przez beznadziejnie błahym problemem, który został wprowadzony na początku projektu w celu uchronienia zespołu przed błędnym wgrywaniem aplikacji w nieodpowiednią przestrzeń nazw. Nagle konwencja którą wprowadziliśmy by nam ułatwiła stała się piątym kołem u wozu :)

Rozwiązanie problemu było bardzo proste – wystarczyło usunąć namespace z deklaracji w yaml i przejść na parametr -n (--namespace) w poleceniu kubectl apply. Umożliwiło nam to przekazywanie plików pomiędzy dwoma zespołami bez dodatkowej pracy – bonusowo dostaliśmy dużo prostszą wymianę plików w trakcie wsparcia.

Tutaj warto zaznaczyć, że parametr --namespace nie jest wymagany – jeżeli go nie podamy, apply zadziała na przestrzeni nazw na którą aktualnie wskazuje nasz kontekst w kubectl. namespace w danym kontekście możemy zmienić poleceniem:

kubectl config set-context --current --namespace=cba

Zamiast “skomplikowanego” polecenia, możemy skorzystać z narzędzia kubens – które pozwoli nam zmienić namespace za pomocą polecenia:

kubens cba 

prościej się już chybe nia da ;)

Interesuje Cię temat konteneryzacji i Kubernetes? Potrzebujesz tej wiedzy w projekcie? Nie czekaj dołącz do kursu Poznaj Kubernetes – Właśnie trwa przedsprzedaż, która kończy się 18 września o godzinie 21:00 – KLINIJ W TEN LINK BY KUPIĆ KURS

1 KOMENTARZ

Comments are closed.