Kubernetes – konfiguracja serwisu (service)

Serwis pozwala na „wypuszczenie” aplikacji na zewnątrz – sprawienie że będzie ona dostępna pod skonfigurowanym adresem IP. Najczęściej serwisy są definiowane na podstawie wcześniej już stworzonych konfiguracji deploymentu.

Podejście imperatywne

Aby stworzyć serwis na podstawie istniejącego już deploymentu, należy użyć następującej komendy:

kubectl expose deployment your-deployment-name --port=8080 --type=LoadBalancer

Polecenie to tworzy serwis na podstawie deploymentu o nazwie your-deployment-name, wystawia aplikację na porcie 8080 i korzysta z LoadBalancera w celu upublicznienia serwisu (LoadBalancer jest to usługa dostarczana poprzez dostarczyciela chmur np. AWS, Azure i to ona de facto steruje cały load balancingiem – do którego podu pójdzie żądanie; niektórzy usługodawcy pozwalają na wymuszenie adresu IP poprzez użycie opcji loadBalancerIP; więcej na temat LoadBalancer można znaleźć tutaj). Inne typy (ClusterIP, NodePort, ExternalName) nie pozwalają na wyjście poza klaster Kubernetesa.

Podejście deklaratywne

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

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: v1
kind: Service
metadata:
  name: second-service
spec:
  selector:
    app: second-app
  ports:
    - protocol: 'TCP'
      port: 80
      targetPort: 8080
  type: LoadBalancer
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 service.

metadata

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

spec

Tutaj definiowane są najważniejsze elementy serwisu takie jak to które pody będą wchodziły w skład serwisu czy też port czy typ serwisu.

selector

Selektor określa, które pody będą zaciągnięte do tego serwisu (patrz konfiguracja deploymentu spec.template.metadata.labels).

ports

Definicja protokołu oraz portów.

type

Typ serwisu, więcej na ten temat znajdziesz tutaj.

Zaaplikowanie konfiguracji

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

kubectl apply -f your_service_configuration.yaml

Pozostaw komentarz

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