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