Déploiement de linkding
- 123 words
- 1 min
Linkding est un gestionnaire de marquepage pour navigateur.
Préparation du terrain
On crée un dossier linkding :
mkdir linkding
Créons le namespace :
k create namespace
ou :
# linkding/namespace.yml
apiVersion: v1
kind: Namespace
metadata:
creationTimestamp: null
name: linkding
spec: {}
status: {}
puis :
k apply -f linkding/namespace.yaml
Déploiement
Il y a seulement un docker-compose.yml disposition :
# linkding/namespace.yml
services:
linkding:
container_name: "${LD_CONTAINER_NAME:-linkding}"
image: sissbruecker/linkding:latest
ports:
- "${LD_HOST_PORT:-9090}:9090"
volumes:
- "${LD_HOST_DATA_DIR:-./data}:/etc/linkding/data"
env_file:
- .env
restart: unless-stopped
Transformons le en déploiement kubernetes :
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: linkding
name: linkding
spec:
replicas: 1
selector:
matchLabels:
app: linkding
strategy: {}
template:
metadata:
labels:
app: linkding
spec:
containers:
- image: sissbruecker/linkding:1.43.0
name: linkding
ports:
- containerPort: 9090
et appliquons
k apply -f linkding/deploy.yaml
Testons avec un port-forward :
k port-forward pods/linkding-5f55c54b4d-zn6gf 9090
Ça marche dans le browser !
Persistent Volume Claim
Création du stockage
# linkding/storage.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: linkding-data
namespace: linkding
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 500Mi
Appliquons :
k apply -f linkding/storage.yaml
Utilisation du persistent volume claim dans notre déploiement
# linkding/deploy.yaml
# ...
spec:
containers:
- image: sissbruecker/linkding:1.43.0
name: linkding
ports:
- containerPort: 9090
volumeMounts:
- name: linkding-data
mountPath: /etc/linkding/data
volumes:
- name: linkding-data
persistentVolumeClaim:
claimName: linkding-data
Redéployons :
k apply -f linkding/deploy.yaml
Port-forwardons, créons un lien, pétons le pod et voyons si on retrouve le lien
k port-forward pods/linkding-6b46c8469-n7hng 9090
Créons le superutilisateur :
k exec -it linkding-6b46c8469-n7hng -c linkding -- python manage.py createsuperuser --username=joe --email=joe@example.com
Password: #joepassword
Password (again):
Superuser created successfully.
- On crée un lien
- On détruit le pod
k delete pod linkding-6b46c8469-nk2lq
Le pod est à nouveau déployé et on retrouve notre lien
Service
On crée un service de type LoadBalancer :
# linkding/service.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: linkding
name: linkding
namespace: linkding
spec:
ports:
- port: 9090
protocol: TCP
targetPort: 9090
selector:
app: linkding
type: LoadBalancer
Déployons :
k apply -f linkding/service.yaml
Et port-forwardons notre service :
k port-forward services/linkding 9090
Nous avons accès à notre instance linkding !