Skip to main content

Website | Hoe rancher te gebruiken - Howto use rancher

Er zijn verschillende manieren om een container te deployen in Rancher, afhankelijk van je use case en de complexiteit van de applicatie. Hier zijn de meest gebruikelijke methoden:

Deployen via de Rancher UI (de meest gebruikelijke methode):

Dit is de eenvoudigste en meest visuele manier om containers te deployen.

  1. Je krijgt via een reactie op het aanvraag formulier te horen welke url je moet gebruiken en welk cluster en namespace voor jou zijn aangemaakt.
  2. Login op https://prod.k8s.rug.nl de Rancher UI.
  3. Selecteer het cluster waarin je wilt deployen.
  4. Navigeer in het linkermenu naar "Workload" en selecteer het type workload dat je wilt deployen (meestal "Deployment" voor stateless applicaties of "StatefulSet" voor stateful applicaties). Je kunt ook kiezen voor "DaemonSet" om een pod op elke node te draaien of "Job/CronJob" voor batch- of periodieke taken.
  5. Selecteer de namespace waarin je de workload wilt deployen in het dropdown menu rechtsboven.
  6. Klik op "Create": Klik op de knop "Create" (of "+ Add Workload").
  7. Configureer de Workload: Je krijgt een formulier te zien waarin je de details van je container kunt configureren:
    a. Name: Geef een naam op voor je workload.
    b. Namespace: Controleer of de juiste namespace is geselecteerd.
    c. Deployment Strategy: Kies een strategie voor updates (Rolling Update of Recreate).
    d. Number of Replicas: Stel het gewenste aantal instances (pods) van je container in.
    e Containers:
    f. Add Container: Klik op "Add Container" om de container specificaties in te vullen.
    g. Image: Voer de naam van de Docker image in (bijvoorbeeld nginx:latest of your-registry.example.com/your-project/your-image:tag).
    h. Image Pull Policy: Kies hoe Kubernetes de image moet ophalen (Always, IfNotPresent, Never).
    i. Ports: Configureer poort mappings als je de container wilt blootstellen aan het netwerk. Je kunt de containerpoort en de hostpoort opgeven (als je hostPort gebruikt, wat over het algemeen wordt afgeraden in productie).
    j. Environment Variables: Stel omgevingsvariabelen in die je container nodig heeft.
    k. Volumes: Koppel persistent volumes of host paths aan je container voor dataopslag.
    l. Health Checks (Probes): Configureer liveness en readiness probes om de gezondheid van je container te bewaken.
    m. Resource Limits en Requests: Stel CPU- en geheugenlimieten en -requests in voor je container.
    n. Security Context: Configureer beveiligingsinstellingen voor de container.
    o. Service Discovery: Als je je workload via een service wilt blootstellen, kun je hier een service configureren (LoadBalancer, ClusterIP, NodePort).
    p. Labels en Annotations: Voeg labels en annotaties toe om je workload te organiseren en te voorzien van metadata.
    q. Node Scheduling: Configureer op welke nodes je pods mogen draaien met behulp van node selectors, node affinity, of taints en tolerations.
  8. Klik op "Create": Nadat je alle benodigde configuraties hebt ingevuld, klik je op de knop "Create" om de deployment te starten.

Deployen via YAML (Kubernetes Manifesten):

Je kunt ook Kubernetes deployment manifesten (YAML-bestanden) gebruiken om je containers te deployen. Dit geeft je meer controle over de configuratie.

Maak een YAML-bestand: Definieer je deployment, service (indien nodig), en andere Kubernetes objecten in een YAML-bestand (bijvoorbeeld deployment.yaml). Ga naar het Cluster en de Namespace: Zoals hierboven beschreven. Klik op "Import YAML": In het "Workload" overzicht, klik op de knop "Import YAML". Plak de YAML-inhoud: Kopieer de inhoud van je YAML-bestand en plak deze in het tekstgebied. Klik op "Import": Rancher zal de YAML valideren en je de mogelijkheid geven om de objecten te creëren. Bekijk de Deployment: Na het importeren kun je de gecreëerde workload in het "Workload" overzicht zien. Voorbeeld van een eenvoudige deployment.yaml:

apiVersion: v1
items:
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    labels:
      app: <app-naam>
    name: <naam naam-deployment>
    namespace: <naam naam-namespace>
  labels:
    app: <naam deployment>
  spec:
    progressDeadlineSeconds: 600
    replicas: 1
    revisionHistoryLimit: 10
    selector:
      matchLabels:
        app: <app-naam>
    deployment>strategy:
      rollingUpdate:
        maxSurge: 0
        maxUnavailable: 1
      type: RollingUpdate
    template:
      metadata:
        labels:
          app: <app-naam>
        deployment>namespace: frog-web-rug-nl
      spec:
        containers:
        - image: <adres-container>:latest
          imagePullPolicy: Always
          env: <environment>
          name: nginx-<naam-container
        image: nginx:latest>
          ports:
          - containerPort: 80<poort-nummer>
            name: <poort-naam>
            protocol: TCP
          resources: {}
          securityContext:
            allowPrivilegeEscalation: false
            privileged: false
            procMount: Default
            readOnlyRootFilesystem: false
            runAsNonRoot: false
          stdin: true
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          tty: true
        dnsPolicy: ClusterFirst
        hostAliases:
        - hostnames:
          - mysql01.service.rug.nl
          ip: 192.168.65.3
        imagePullSecrets:
        - name: <naam-pull-secret>
        restartPolicy: Always
        schedulerName: default-scheduler
        securityContext: {}
        terminationGracePeriodSeconds: 30

- apiVersion: v1
  kind: Service
  metadata:
    name: <naam-service>
    namespace: <naam-namespace>
  spec:
    internalTrafficPolicy: Cluster
    ipFamilies:
    - IPv4
    ipFamilyPolicy: SingleStack
    ports:
    - name: <poort-naam>
      port: <poort-nummer>
      protocol: TCP
      targetPort: <poort-nummer>
    selector:
      app: <app-naam>
    sessionAffinity: None
    type: ClusterIP

- apiVersion: networking.k8s.io/v1
  kind: Ingress
  metadata:
    name: <naam-ingress>
    namespace: <naam-namespace>
  spec:
    ingressClassName: nginx
    rules:
    - host: <adres-website>
      http:
        paths:
        - backend:
            service:
              name: <naam-service>
              port:
                number: <inkomende-poort>
          pathType: ImplementationSpecific
    tls:
    - hosts:
      - <adres-website>

kind: List
metadata:
  resourceVersion: ""

  1. Deployen via Helm Charts:

Helm is een package manager voor Kubernetes. Het stelt je in staat om complexe applicaties te definiëren, installeren en upgraden met behulp van "charts". Rancher integreert goed met Helm.

Voeg Helm Repositories toe (indien nodig): Als de chart die je wilt gebruiken zich in een externe repository bevindt, moet je deze eerst toevoegen aan Rancher. Ga naar het cluster, selecteer "Apps & Marketplace" en vervolgens "Repositories". Klik op "Create" om een nieuwe repository toe te voegen. Lanceer een Chart: Ga naar het cluster. Selecteer "Apps & Marketplace". Zoek de chart die je wilt deployen (uit de catalogus of een toegevoegde repository). Klik op de chart en vervolgens op "Install". Configureer de chart parameters via het formulier of door de YAML-waarden te bewerken. Selecteer de target namespace. Klik op "Install".


  • uitleg
  • adres
  • inloggen
  • selectie namespace
  • deployment aanmaken
  • service aanmaken
  • service aanmaken container naar container communicatie
  • ingress aanmaken(url doorverwezen worden)
  • logs uitlezen