Kubernetes – konfiguracja deployment

Konfiguracja deploymentu pozwala na zdefiniowanie podstawowej konfiguracji aplikacji w ramach klastra Kubernetes. Pozwala ona na uruchomienie aplikacji ale tylko w ramach klastra. Lecz taka aplikacja nie będzie widoczna z zewnątrz – nie jest możliwe dotarcie do takiej aplikacji za pomocą adresu IP (aby udostępnić ją na zewnątrz, należy utworzyć konfigurację serwisu).

Podejście imperatywne

Aby skonfigurować deployment możemy użyć wprost narzędzia kubectl, przykładowo:

kubectl create deployment your-deployment-name --image=docker-image

Polecenie to spowoduje stworzenie deploymentu o nazwie your-deployment-name na podstawie obrazu docker-image.

Podejście deklaratywne

Możliwe jest także stworzenie pliku zawierające informacje o deployment’cie i następnie posłużenie się nim w celu stworzenia deploymentu.

Stworzenie pliku konfiguracyjnego

Jest to trochę bardziej skomplikowane niż w ramach podejście imperatywnego. Pełną specyfikację możliwości można znaleźć tutaj. Plik konfiguracyjny musi używać składni YAML. Przykładowa konfiguracja:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: your-deployment-name
spec:
  replicas: 1
  selector:
    matchLabels:
      app: my-app
  template:
    metadata: 
      labels:
        app: my-app
    spec:
      containers:
        - name: your-app-name
          image: docker-image

apiVersion

Określa z jakiej wersji konfiguracji korzystamy. Możliwości konfiguracyjne ewoluują, stąd aby uprościć sprawę kompatybilności wstecznej zastosowane takie rozwiązanie. Więcej na ten temat można przeczytać tutaj.

kind

Tutaj określamy typ konfiguracji. W naszym wypadku jest to deployment.

metadata

Sekcja pozwalająca na uzupełnienie metadanych deploymentu. Obowiązkowym polem jest pole name.

spec

Sekcja spec pozwala na zdefiniowanie tego co chcemy żeby się działo – czyli przechodzimy do „mięsa” całego deploymentu.

replicas

Określa ile chcemy mieć replik naszego deploymentu – ile powstanie podów.

selector

Służy do określenia które (patrz sekcja metadata w template) pody chcemy brać pod uwagę w ramach tego deploymentu.

template

Sekcja template służy do opisywania podów (możliwe jest zdefiniowanie podów w oddzielnym pliku konfiguracyjnym, ale najczęściej robi się to właśnie przy okazji deploymentu).

metadata
Sekcja pozwalająca na uzupełnienie metadanych podu. To etykiety (label) muszą pasować do tych podanych w sekcji spec.selector.

spec

Tutaj określane są nazwy kontenerów (name) oraz nazwa obrazu (image) na podstawie którego powstanie aplikacja.

Zaaplikowanie konfiguracji

Posiadając już plik konfiguracyjny wystarczy go zaaplikować używają polecenia:

kubectl apply -f your_deployment_configuration.yaml

Pozostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *