Skip to main content

Website | Hoe rancher te gebruiken - Howto use rancher

ErIn zijndeze verschillendehandleiding worden meerdere manieren omaangegeven hoe u een applicatie in een container tekunt deployen inop Rancher,een afhankelijkRancher kubernetes cluster. Daarnaast wordt uitgelegd hoe u de logs kunt uitlezen van jeeen use caseapplicatie en dehoe complexiteitu vaneen deapplicatie applicatie.container Hierkan zijn de meest gebruikelijke methoden:herstarten.

Deployen via de Rancher UI:

door middel van YAML:

Dit isDoor de eenvoudigsteopzet op te zetten in YAML heb je meer vrijheid om onderdelen beter te kunnen instellen. Dit geeft je meer controle over de configuratie. Het onderstaande stappenplan zorgt ervoor dat de container beschikbaar wordt.

Maak een bestand aan voor de deployment. Hieronder vind u een voorbeeld deployment YAML. Pas de onderdelen aan wat tussen de <> staat. Upload de deployment YAML naar het cluster toe in de juiste namespace. Moet de container communiceren met een andere container dan moet u de voorbeelden poorten openen, Environment variabelen en meestVoorbeeld visueleService manierYAML omvolgen. containersMoet tede deployen.container ook via een url beschikbaar worden, volg dat ook Voorbeeld Ingress YAML er nog bij.

  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. SelecteerUpload de namespacedeployment waarinYAML jebij deWorkloads workload-> wiltDeployments deployen-> inCreate. hetZou dropdownu menugeen rechtsboven.
  6. invoerblok
  7. Klikzien, opklik "Create":dan Klikonderaan op de knop "Create"Edit (ofas "+YAML. AddPlak Workload")het bestand en druk op Create.
  8. ConfigureerZou de Workload: Je krijgtu een formulierService teYAML ziengedefinieerd 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:hebben, Voer dedan naamdezelfde vanstap 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 mappingsuit als jebij destap container5 wiltmaar blootstellendan aanbij hetService 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 enDiscovery -requests> inServices voor-> jeCreate container.
    -> n.Cluster SecurityIP
    . Context:Zou Configureeru beveiligingsinstellingengeen voorinvoerblok 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.
  9. Klik op "Create": Nadat je alle benodigde configuraties hebt ingevuld,zien, klik jedan onderaan op de knop "Create"Edit omas YAML en vervang hetgene met de deploymentaangepaste teVoorbeeld starten.Service YAML.
  10. Zou u een Ingress YAML gedefinieerd hebben, Voer dan dezelfde stap uit als bij stap 5 maar dan bij Service Discovery -> Ingresses -> Create. Zou u geen invoerblok zien, klik dan onderaan op de knop Edit as YAML en vervang hetgene met de aangepaste Voorbeeld Ingress YAML.
  11. Controleer of alles werkt.

Deployen via YAML:

Door de opzet op te zetten in YAML heb je meer vrijheid om onderdelen beter te kunnen instellen. Dit geeft je meer controle over de configuratie.

Voorbeeld deployment YAML

Een deployment YAML wordt gebruikt om de container te definieren. Hieronder is een voorbeeld gegeven met uitleg:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: <app-naam>                              <-- naam van de applicatie of website
  name: <naam-deployment>                        <-- naam van de deployment
  namespace: <naam-namespace>                    <-- naam van de namespace
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: <app-naam>                            <-- naam van de applicatie of website
  strategy:
    rollingUpdate:
      maxSurge: 0
      maxUnavailable: 1
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: <app-naam>                          <-- naam van de applicatie of website
      namespace: <naam-namespace>
    spec:
      containers:
      - image: <adres-container>:latest          <-- adres van container()
        imagePullPolicy: Always
        env: <environment>                       <-- alle nodige enviroment variabelen{}
        name: <naam-container>                   <-- naam container
        ports: - containerPort: <poort-nummer>          <-- poort nummer
          name: <poort-naam>                     <-- naam voor de poort
          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>                <-- naam van de registry pull secret
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30

Uitleg

Environment variabelen

Om environment variabelen toe te voegen moet het volgende aan de bovenstaande deployment YAML bestand aangepast worden. Dit werkt op naam waarde basis. Er kunnen een of meerdere naam waarde paren gedefinieerd worden.

        env:
          - name: IETS
            value: "hallo wereld"
Poorten openen

Om poorten te openen moet er het volgende worden toegevoegd in de bovenstaande deployment YAML. Dit werkt op naam waarde basis. Er kunnen een of meerdere naam waarde paren gedefinieerd worden.

        ports:
        - containerPort: <poort-nummer>
          name: <poort-naam>
          protocol: TCP

Voorbeeld Service YAML

apiVersion: v1
kind: Service
metadata:
  name: <naam-service>                           <-- naam van de service
  namespace: <naam-namespace>                    <-- naam van de namespace
spec:
  internalTrafficPolicy: Cluster
  ipFamilies:
  - IPv4
  ipFamilyPolicy: SingleStack
  ports:
  - name: <poort-naam>                           <-- naam van de poort gedefinieerd in de deployment YAML
    port: <poort-nummer>                         <-- inkomende poort nummer gedefinieerd in de deployment YAML
    protocol: TCP
    targetPort: <poort-nummer>                   <-- poort nummer naar deployment toe
  selector:
    app: <app-naam>                              <-- naam van de applicatie of website
  sessionAffinity: None
  type: ClusterIP

Voorbeeld Ingress YAML

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

Notitie: de gegevens wat geéncapsuleert is met <> moet aangepast worden.
Notitie twee: zou je een container met container willen laten communiceren, maak dan gebruik van een service en definieer de servicenaam in de environment.

  1. Ga naar het Cluster en de Namespace: Zoals hierboven beschreven.
  2. Klik op "Import YAML": In het "Workload" overzicht, klik op de knop "Import YAML".
  3. Plak de YAML-inhoud: Kopieer de inhoud van je YAML-bestand en plak deze in het tekstgebied. Zorg ervoor dat je de juiste namespace selecteert.
  4. Klik op "Import": Rancher zal de YAML valideren en je de mogelijkheid geven om de objecten te creëren.
  5. Bekijk de Deployment: Na het importeren kun je de gecreëerde workload in het "Workload" overzicht zien.

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.

  1. 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. Hier kun je de repositories verversen om de nieuwste charts binnen te halen.
  2. Lanceer een Chart:
  3. Selecteer "Apps & Marketplace".
  4. Zoek de chart die je wilt deployen (uit de catalogus of een toegevoegde repository).
  5. Klik op de chart en vervolgens op "Install".
  6. Configureer de chart parameters via het formulier of door de YAML-waarden te bewerken.
  7. Selecteer de target namespace.
  8. Klik op "Install".

Log uitlezen van een container

Voor het uitlezen van een log moet het volgende gebeuren:

  1. OpOpen rancher,een gawebbrowser
  2. Login op rancher
  3. Ga naar het gewenste cluster
  4. Ga naar Workloads -> Pods
  5. Zoek de juiste pod op en druk op de drie verticale puntjes aan de rechterkant
  6. In het verschenen menu, klik op View Logs

Herstarten container

Om een container te kunnen herstarten, moet het volgende uitgevoerd worden:

  1. Open een webbrowser
  2. Login op rancher
  3. Ga naar het gewenste cluster
  4. Ga naar Workloads -> Deployments
  5. Zoek de juiste pod op en druk op de drie verticale puntjes aan de rechterkant
  6. In het verschenen menu, klik op Redeploy