Déploiement de l’interface web Sealos sur infrastructure cloud publique

Pour déployer efficacement une application open source comme Sealos, la première étape consiste à consulter rigoureusement sa documentation officielle — notamment le fichier README.md sur GitHub ou les guides fournis sur le site web.

1. Provisionnement d’une instance serveur

Une machine virtuelle fonctionnant sous Ubuntu 22.04 est requise. Elle peut être hébergée localement (via VMware ou VirtualBox) ou déployée sur un fournisseur cloud public. Dans cet exemple, une instance ECS d’Alibaba Cloud (région de Hong Kong) a été sélectionnée avec les spécifications suivantes :

  • Processeur : 4 cœurs
  • Mémoire : 8 Go
  • Espace disque : 40 Go SSD
  • Règles de sécurité : autorisation des ports TCP 80 et 443

Ces ressources constituent un minimum raisonnable pour une démonstration stable ; des configurations inférieures peuvent fonctionner mais risquent de limiter les performances ou la fiabilité.

2. Configuration du nom de domaine et certificats TLS

Un domaine personnalisé est nécessaire pour accéder à l’interface web. Deux enregistrements DNS doivent être créés :

  • Un enregistrement A pointant vers l’adresse IP publique de l’instance (ex. : 47.242.108.255.cloudnativesig.com → 47.242.108.255)
  • Un enregistrement wildacrd A pour supporter les sous-domaines dynamiques (ex. : *.47.242.108.255.cloudnativesig.com → 47.242.108.255)

Pour sécuriser les connexions, un certificat TLS gratuit est généré via acme.sh avec le plugin Alibaba Cloud DNS :

curl https://get.acme.sh | sh -s email=admin@exemple.fr
export Ali_Key="votre_clé_api"
export Ali_Secret="votre_secret_api"
acme.sh --issue --dns dns_ali \
  -d "47.242.108.255.cloudnativesig.com" \
  -d "*.47.242.108.255.cloudnativesig.com"

Les fichiers obtenus sont ensuite encodés en Base64 pour une intégration ultérieure dans les manifests Kubernetes :

base64 -w 0 ~/.acme.sh/47.242.108.255.cloudnativesig.com_ecc/fullchain.cer
base64 -w 0 ~/.acme.sh/47.242.108.255.cloudnativesig.com_ecc/47.242.108.255.cloudnativesig.com.key

3. Installation de Sealos

L’outil CLI sealos est installé via le script officiel (version v4.2.0). En cas de latence réseau avec GitHub, un proxy comme ghproxy.com peut être utilisé :

curl -sfL https://raw.githubusercontent.com/labring/sealos/v4.2.0/scripts/install.sh | sh -s v4.2.0 labring/sealos

Ou, si nécessaire, téléchargez manuellement le script, modifiez la ligne 96 pour insérer le préfixe de proxy :

DOWNLOADER_PREFIX=https://ghproxy.com/https://github.com/${OWN_REPO}/releases/download/

Puis exécutez localement :

chmod +x install.sh && ./install.sh v4.2.0 labring/sealos

4. Génération et déploiement du cluster Kubernetes

Le fichier Clusterfile est généré à l’aide de la commande sealos gen, en spécifiant les images de composants et l’adresse IP privée du nœud maître (ex. 172.26.216.195) :

sealos gen \
  labring/kubernetes:v1.25.6 \
  labring/helm:v3.12.0 \
  labring/calico:v3.24.1 \
  labring/cert-manager:v1.8.0 \
  labring/openebs:v3.4.0 \
  labring/kubernetes-reflector:v7.0.151 \
  labring/zot:v1.4.3 \
  labring/kubeblocks:v0.5.3 \
  --env policy=anonymousPolicy \
  --masters 172.26.216.195 > Clusterfile

Le déploiement du cluster s’effectue ensuite en une seule commande :

sealos apply -f Clusterfile

5. Déploiement d’Ingress NGINX

Un fichier de configuration personnalisé ingress-nginx-config.yaml est créé pour adapter le comportement de l’ingress controller :

apiVersion: apps.sealos.io/v1beta1
kind: Config
metadata:
  name: ingress-nginx-config
spec:
  match: docker.io/labring/ingress-nginx:v1.5.1
  path: charts/ingress-nginx/values.yaml
  strategy: merge
  data: |
    controller:
      hostNetwork: true
      kind: DaemonSet
      service:
        type: NodePort

L’installation se lance via :

sealos run docker.io/labring/ingress-nginx:v1.5.1 --config-file ingress-nginx-config.yaml

6. Lancement de l’interface web Sealos Cloud

Le service d’interface utilisateur est déployé à partir de l’image sealos-cloud. Un secret TLS est injecté via un manifeste tls-secret.yaml :

apiVersion: apps.sealos.io/v1beta1
kind: Config
metadata:
  name: secret
spec:
  match: docker.io/labring/sealos-cloud:latest
  path: manifests/tls-secret.yaml
  strategy: merge
  data: |
    data:
      tls.crt: LS0tCi0tLQo=
      tls.key: LS0tCi0tLQo=

Enfin, le déploiement est lancé avec le domaine configuré :

sealos run docker.io/labring/sealos-cloud:latest \
  --env cloudDomain="47.242.108.255.cloudnativesig.com" \
  --config-file tls-secret.yaml

Une fois opérationnel, l’interface est accessible à l’URL https://47.242.108.255.cloudnativesig.com. Aucun compte préexistant n’est fourni : un premier accès permet de créer un utilisateur via un formulaire d’inscription auto-gérée.

Étiquettes: sealos kubernetes Ingress-Nginx acme-sh cloud-deployment

Publié le 17 septembre à 13h32