Website | Hoe rancher te gebruiken - Howto use rancher
Click here for the English version
In deze handleiding worden meerdere manieren aangegeven hoe u een applicatie in een container kunt deployen op een Rancher kubernetes cluster. Daarnaast wordt uitgelegd hoe u de logs kunt uitlezen van een applicatie en hoe u een applicatie container kan herstarten.
Deployen via Rancher door middel van YAML:
Door de opzet op te zetten in YAML heeft u meer vrijheid om onderdelen beter te kunnen instellen. Dit geeft u 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 Voorbeeld Service YAML
volgen. Moet de container ook via een url beschikbaar worden, volg dat ook Voorbeeld Ingress YAML
er nog bij.
- U krijgt via een reactie op het aanvraag formulier te horen welke url u moet gebruiken en welk cluster en namespace voor u is aangemaakt.
- Login op
https://prod.k8s.rug.nl
de Rancher UI. - Selecteer het cluster waarin u wilt deployen.
- Upload de deployment YAML bij
Workloads -> Deployments -> Create
. Zou u geen invoerblok zien, klik dan onderaan op de knopEdit as YAML
. Plak het bestand en druk opCreate
. - Zou u een Service YAML gedefinieerd hebben, Voer dan dezelfde stap uit als bij stap 5 maar dan bij
Service Discovery -> Services -> Create -> Cluster IP
. Zou u geen invoerblok zien, klik dan onderaan op de knopEdit as YAML
en vervang hetgene met de aangepasteVoorbeeld Service YAML
. - 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 knopEdit as YAML
en vervang hetgene met de aangepasteVoorbeeld Ingress YAML
. - Controleer of alles werkt.
Voorbeeld deployment YAML
Een deployment YAML wordt gebruikt om de container en componenten 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: {}
name: <naam-container> <-- naam container
ports: {}
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
Deployen via Helm Charts:
Helm is een package manager voor Kubernetes. Het stelt u 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 u wilt gebruiken zich in een externe repository bevindt, moet u 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 kunt u de repositories verversen om de nieuwste charts binnen te halen.
- Lanceer een Chart:
- Selecteer "Apps & Marketplace".
- Zoek de chart die u 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".
Log uitlezen van een container
Voor het uitlezen van een log moet het volgende gebeuren:
- Open een webbrowser
- Login op rancher
- Ga naar het gewenste cluster
- Ga naar
Workloads -> Pods
- Zoek de juiste pod op en druk op de drie verticale puntjes aan de rechterkant
- In het verschenen menu, klik op
View Logs
Herstarten container
Om een container te kunnen herstarten, moet het volgende uitgevoerd worden:
- Open een webbrowser
- Login op rancher
- Ga naar het gewenste cluster
- Ga naar
Workloads -> Deployments
- Zoek de juiste pod op en druk op de drie verticale puntjes aan de rechterkant
- In het verschenen menu, klik op
Redeploy
This guide outlines multiple methods for deploying an application in a container on a Rancher Kubernetes cluster. Additionally, it explains how to read application logs and restart an application container.
Deploying via Rancher using YAML
By setting up the configuration in YAML, you have more freedom to fine-tune components. This gives you greater control over the setup. The step-by-step plan below will make the container available.
Create a file for the deployment. Below you will find an example deployment YAML. Adjust the parts enclosed within <>
. Upload the deployment YAML to the cluster in the correct namespace. If the container needs to communicate with another container, you should follow the examples for opening ports
, environment variables
and the Service YAML example
. If the container also needs to be accessible via a URL, then also include the Ingress YAML example
.
Deployment Steps
- You will receive the URL to use and the cluster and namespace created for you via a response to the application form.
- Log in to the Rancher UI at
https://prod.k8s.rug.nl
. - Select the cluster where you want to deploy.
- Upload the deployment YAML under
Workloads -> Deployments -> Create
. If you don't see an input block, click theEdit as YAML
button at the bottom. Paste the file and clickCreate
. - If you have defined a Service YAML, perform the same step as in step 4, but under
Service Discovery -> Services -> Create -> Cluster IP
. If you don't see an input block, click theEdit as YAML
button at the bottom and replace the content with your customizedService YAML example
. - If you have defined an Ingress YAML, perform the same step as in step 4, but under
Service Discovery -> Ingresses -> Create
. If you don't see an input block, click theEdit as YAML
button at the bottom and replace the content with your customizedIngress YAML example
. - Verify that everything is working.
Deployment YAML example
A deployment YAML is used to define the container. An example with explanations is provided below:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: <app-name> <-- name of the application or website
name: <deployment-name> <-- name of the deployment
namespace: <namespace-name> <-- name of the namespace
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: <app-name> <-- name of the application or website
strategy:
rollingUpdate:
maxSurge: 0
maxUnavailable: 1
type: RollingUpdate
template:
metadata:
labels:
app: <app-name> <-- name of the application or website
namespace: <namespace-name>
spec:
containers:
- image: <container-address>:latest <-- address of the container
imagePullPolicy: Always
env: {}
name: <container-name> <-- container name
ports: {}
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: <pull-secret-name> <-- name of the registry pull secret
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
Explanation
Environment Variables
To add environment variables, the following section needs to be adjusted in the deployment YAML file mentioned above. This works on a name-value pair basis. One or more name-value pairs can be defined.
env:
- name: SOMETHING
value: "hello world"
Opening Ports
To open ports, the following needs to be added to the deployment YAML file above. This also works on a name-value pair basis. One or more name-value pairs can be defined.
ports:
- containerPort: <port-number>
name: <port-name>
protocol: TCP
Service YAML example
apiVersion: v1
kind: Service
metadata:
name: <service-name> <-- name of the service
namespace: <namespace-name> <-- name of the namespace
spec:
internalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- name: <port-name> <-- name of the port defined in the deployment YAML
port: <port-number> <-- incoming port number defined in the deployment YAML
protocol: TCP
targetPort: <port-number> <-- port number for the deployment
selector:
app: <app-name> <-- name of the application or website
sessionAffinity: None
type: ClusterIP
Ingress YAML example
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: <ingress-name> <-- name of the ingress
namespace: <namespace-name> <-- name of the namespace
spec:
ingressClassName: nginx
rules:
- host: <website-address> <-- website URL
http:
paths:
- backend:
service:
name: <service-name> <-- name of the service defined in the Service YAML
port:
number: <incoming-port> <-- incoming port number defined in the Service YAML
pathType: ImplementationSpecific
tls:
- hosts:
- <website-address> <-- website URL
Deploying using Helm charts
Helm is a package manager for Kubernetes. It allows you to define, install, and upgrade complex applications using "charts." Rancher integrates well with Helm.
- Add Helm Repositories (if needed): If the chart you want to use is in an external repository, you'll need to add it to Rancher first. Go to your cluster, select
Apps & Marketplace
, thenRepositories
. ClickCreate
to add a new repository. Here, you can also refresh the repositories to pull in the latest charts. - Launch a Chart:
- Select
Apps & Marketplace
. - Find the chart you want to deploy (from the catalog or an added repository).
- Click on the chart, then click
Install
. - Configure the chart parameters via the form or by editing the YAML values.
- Select the target namespace.
- Click
Install
.
Reading logs of a container
To view logs, follow these steps:
- Open a web browser.
- Log in to Rancher.
- Navigate to the desired cluster.
- Go to
Workloads -> Pods
. - Locate the correct pod and click on the three vertical dots on the right side.
- In the menu that appears, click on
View Logs
.
Restart container
To restart a container, you'll need to perform the following steps:
- Open a web browser.
- Log in to Rancher.
- Navigate to the desired cluster.
- Go to
Workloads -> Deployments
. - Locate the correct pod and click on the three vertical dots on the right side.
- In the menu that appears, click on
Redeploy
.