miroir de
https://github.com/PAPAMICA/Wiki-Tech.io.git
synchronisé 2024-12-29 02:50:22 +01:00
docs: update Cloud/IPC/Docker
Cette révision appartient à :
Parent
9680df6dba
révision
e477cf94e5
1 fichiers modifiés avec 195 ajouts et 51 suppressions
|
@ -2,7 +2,7 @@
|
|||
title: Infomaniak Public Cloud - Mise en situation : Environnement Docker
|
||||
description: Mettre en place un environnement Docker avec Traefik et Portainer
|
||||
published: true
|
||||
date: 2021-11-12T08:15:12.116Z
|
||||
date: 2021-11-12T09:15:25.044Z
|
||||
tags: openstack, docker, infomaniak, public-cloud, cloud, ipc, heat
|
||||
editor: markdown
|
||||
dateCreated: 2021-11-12T08:15:12.116Z
|
||||
|
@ -352,7 +352,7 @@ Pour la gestion de la stack, voir ce tutoriel :
|
|||
# Création de la VM
|
||||
## Horizon
|
||||
### Création du groupe de sécurité pour le port RDP
|
||||
Pour nous connecter à la machine virtuelle une fois installée, nous allons avoir besoin d'ouvrir le port RDP (`3389`). Si vous avez bien suivis les autres tutoriel, cela devrais etre simple. Créez donc un nouveau groupe de sécurité `RDP`en suivant ce tutoriel :
|
||||
Pour nous connecter à la machine virtuelle une fois installée, nous allons avoir besoin d'ouvrir le port RDP (`3389`). Si vous avez bien suivis les autres tutoriel, cela devrais etre simple. Créez donc un nouveau groupe de sécurité `HTTP-HTTPS`en suivant ce tutoriel :
|
||||
|
||||
- [🛡️ Les groupes de sécurité *Comprendre et utiliser le firewall et ses règles avec Horizon*](/Cloud/IPC/Security-Groups#horizon)
|
||||
{.links-list}
|
||||
|
@ -365,26 +365,27 @@ Comme pour la création du groupe de sécurité, utilisez le tutoriel suivant po
|
|||
- [⚡ Les instances (machines virtuelles) *Créer et gérer une instance avec Horizon*](/Cloud/IPC/Instances#horizon)
|
||||
{.links-list}
|
||||
|
||||
Sélectionnez l'image `Ubuntu 20,04 LTS Focal Fossa`:
|
||||
Sélectionnez l'image `Debian 11.1 bullseye`:
|
||||
![infomaniak-publiccloud_8_2.png](/images/cloud/infomaniak-public-cloud/8/infomaniak-publiccloud_8_2.png =600x)
|
||||
|
||||
Bien choisir la configuration adaptée à votre besoin :
|
||||
![infomaniak-publiccloud_8_3.png](/images/cloud/infomaniak-public-cloud/8/infomaniak-publiccloud_8_3.png =600x)
|
||||
|
||||
Et pensez à bien ajouter vos groupes de sécurités en conséquence : (ici pour le port RDP (3389), SSH (22) et Ping (ICMP))
|
||||
Et pensez à bien ajouter vos groupes de sécurités en conséquence : (ici pour le port HTTP (80), HTTPS (443), SSH (22) et Ping (ICMP))
|
||||
![infomaniak-publiccloud_8_4.png](/images/cloud/infomaniak-public-cloud/8/infomaniak-publiccloud_8_4.png =600x)
|
||||
|
||||
|
||||
|
||||
## CLI
|
||||
### Création du groupe de sécurité pour le port RDP
|
||||
### Création du groupe de sécurité pour les ports HTTP et HTTPS
|
||||
Voir ce tutoriel pour l'explication des commandes :
|
||||
- [🛡️ Les groupes de sécurité *Comprendre et utiliser le firewall et ses règles en CLI*](/Cloud/IPC/Security-Groups#cli)
|
||||
{.links-list}
|
||||
|
||||
```bash
|
||||
openstack security group create --description "RDP (3389)" RDP
|
||||
openstack security group rule create --dst-port 3389 --protocol TCP RDP
|
||||
openstack security group create --description "HTTP (80) & HTTPS (443)" HTTP-HTTPS
|
||||
openstack security group rule create --dst-port 80 --protocol TCP HTTP-HTTPS
|
||||
openstack security group rule create --dst-port 443 --protocol TCP HTTP-HTTPS
|
||||
```
|
||||
### Création de l'instance
|
||||
Voir ce tutoriel pour l'explication des commandes :
|
||||
|
@ -392,68 +393,211 @@ Voir ce tutoriel pour l'explication des commandes :
|
|||
{.links-list}
|
||||
|
||||
```bash
|
||||
openstack server create --image "Ubuntu 20.04 LTS Focal Fossa" --flavor a2-ram4-disk50-perf1 --security-group "PING - SSH" --security-group "RDP" --key-name <KEYPAIR> --network ext-net1 Ubuntu-Desktop
|
||||
openstack server show Ubuntu-Desktop
|
||||
openstack server create --image "Debian 11.1 bullseye" --flavor a2-ram4-disk50-perf1 --security-group "PING - SSH" --security-group "HTTP-HTTPS" --key-name <KEYPAIR> --network ext-net1 Docker
|
||||
openstack server show Docker
|
||||
```
|
||||
|
||||
# Installation
|
||||
## Connexion à l'instance
|
||||
Dans un terminal, connectez vous avec :
|
||||
```bash
|
||||
ssh ubuntu@<IP_INSTANCE>
|
||||
ssh debian@<IP_INSTANCE>
|
||||
```
|
||||
> ***IP_INSTANCE***
|
||||
> - Adresse IP de votre instance `Ubuntu-Desktop`
|
||||
> - Adresse IP de votre instance `Docker`
|
||||
>
|
||||
> .
|
||||
{.is-info}
|
||||
|
||||
## Création de l'utilisateur
|
||||
### Commençons par créer l'utilisateur avec lequel vous allez vous connecter en RDP :
|
||||
```bash
|
||||
PASS=$(perl -e 'print crypt("<USER_PASSWORD>", "salt"),"\n"')
|
||||
sudo useradd -m -p $PASS <USER>
|
||||
```
|
||||
> ***USER_PASSWORD***
|
||||
> - Mot de passe de votre utilisateur
|
||||
>
|
||||
> ***USER***
|
||||
> - Nom de votre utilisateur **en miniscule**
|
||||
>
|
||||
> .
|
||||
{.is-info}
|
||||
|
||||
### Et ajoutez cet utilisateur au groupe `sudo`:
|
||||
```bash
|
||||
sudo usermod -aG sudo <USER>
|
||||
```
|
||||
> ***USER***
|
||||
> - Nom de votre utilisateur **en miniscule**
|
||||
>
|
||||
> .
|
||||
{.is-info}
|
||||
|
||||
## Installation de l'interface graphique
|
||||
## Installation de Docker
|
||||
### Mettez à jour le serveur :
|
||||
```bash
|
||||
sudo apt update && sudo apt upgrade
|
||||
```
|
||||
### Installez `tasksel`et lancez l'installation de gnome :
|
||||
### Installez les sources de `Docker` :
|
||||
```bash
|
||||
sudo apt install -y tasksel
|
||||
sudo tasksel install ubuntu-desktop
|
||||
apt install -y curl apt-transport-https ca-certificates gnupg2 software-properties-common apache2-utils
|
||||
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg | apt-key add -
|
||||
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") $(lsb_release -cs) stable"
|
||||
apt-get update
|
||||
```
|
||||
## Installation de `xrdp`
|
||||
### Il ne vous reste plus qu'à installer `xrdp` et redémarrer le server :
|
||||
### Installez `Docker` :
|
||||
```bash
|
||||
sudo apt install xrdp
|
||||
sudo reboot
|
||||
apt-get -y install docker-ce docker-compose
|
||||
systemctl enable docker
|
||||
systemctl start docker
|
||||
```
|
||||
|
||||
# Connexion en RDP
|
||||
## Linux
|
||||
Connectez vous avec le l'application [**Remmina**](https://remmina.org/)
|
||||
## MacOS
|
||||
Connectez vous avec l'application [**Microsoft Remote Desktop**](https://apps.apple.com/us/app/microsoft-remote-desktop/id1295203466?mt=12)
|
||||
## Windows
|
||||
Connectez vous avec l'outils de connexion RDP [**MSTSC**](/Microsoft/Windows-7-10/RDP)
|
||||
## Installation de Traefik
|
||||
### Créez un dossier `traefik` :
|
||||
```bash
|
||||
mkdir -p /apps/traefik
|
||||
cd /apps/traefik
|
||||
```
|
||||
### Créez le premier fichier de configuration `traefik.yml`:
|
||||
```yaml
|
||||
api:
|
||||
dashboard: true
|
||||
entryPoints:
|
||||
http:
|
||||
address: ":80"
|
||||
https:
|
||||
address: ":443"
|
||||
providers:
|
||||
docker:
|
||||
endpoint: "unix:///var/run/docker.sock"
|
||||
exposedByDefault: false
|
||||
certificatesResolvers:
|
||||
http:
|
||||
acme:
|
||||
email: $EMAIL
|
||||
storage: acme.json
|
||||
httpChallenge:
|
||||
entryPoint: http
|
||||
providers.file:
|
||||
filename: "/etc/traefik/dynamic_conf.toml"
|
||||
watch: true
|
||||
```
|
||||
> Changez la variable `EMAIL` par votre adresse mail
|
||||
{.is-warning}
|
||||
|
||||
### Créez le second fichier de configuration `config.yml`:
|
||||
```yaml
|
||||
http:
|
||||
middlewares:
|
||||
https-redirect:
|
||||
redirectScheme:
|
||||
scheme: https
|
||||
default-headers:
|
||||
headers:
|
||||
frameDeny: true
|
||||
sslRedirect: true
|
||||
browserXssFilter: true
|
||||
contentTypeNosniff: true
|
||||
forceSTSHeader: true
|
||||
stsIncludeSubdomains: true
|
||||
stsPreload: true
|
||||
secured:
|
||||
chain:
|
||||
middlewares:
|
||||
- default-headers
|
||||
```
|
||||
### Créez le fichier `acme.json` et configurer ses permissions :
|
||||
```yaml
|
||||
touch /apps/traefik/acme.json
|
||||
chmod 600 /apps/traefik/acme.json
|
||||
```
|
||||
|
||||
### Créez et copiez le mot de passe chiffré pour accéder à l'interface Traefik :
|
||||
```bash
|
||||
echo $(htpasswd -nb <USER> <PASSWORD>) | sed -e s/\\$/\\$\\$/g
|
||||
```
|
||||
> Changez les variables `USER` et `PASSWORD` par votre utilisateur et son mot de passe
|
||||
{.is-warning}
|
||||
|
||||
> Voici un exemple de retour : `user:$$apr1$$vBPOdKH4$$mYgQp2CFIJcW3XX8wOOZr0`
|
||||
{.is-info}
|
||||
|
||||
### Créez le fichier `docker-compose.yml` pour Traefik :
|
||||
```yaml
|
||||
version: '2'
|
||||
services:
|
||||
traefik:
|
||||
image: traefik:latest
|
||||
container_name: traefik
|
||||
restart: unless-stopped
|
||||
security_opt:
|
||||
- no-new-privileges:true
|
||||
networks:
|
||||
- proxy
|
||||
ports:
|
||||
- 80:80
|
||||
- 443:443
|
||||
volumes:
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
- /apps/traefik/traefik.yml:/traefik.yml:ro
|
||||
- /apps/traefik/acme.json:/acme.json
|
||||
- /apps/traefik/config.yml:/config.yml:ro
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.traefik.entrypoints=http
|
||||
- traefik.http.routers.traefik.rule=Host("traefik.$NDD")
|
||||
- traefik.http.middlewares.traefik-auth.basicauth.users=$USERPASS
|
||||
- traefik.http.middlewares.traefik-https-redirect.redirectscheme.scheme=https
|
||||
- traefik.http.routers.traefik.middlewares=traefik-https-redirect
|
||||
- traefik.http.routers.traefik-secure.entrypoints=https
|
||||
- traefik.http.routers.traefik-secure.rule=Host("traefik.$NDD")
|
||||
- traefik.http.routers.traefik-secure.middlewares=traefik-auth
|
||||
- traefik.http.routers.traefik-secure.tls=true
|
||||
- traefik.http.routers.traefik-secure.tls.certresolver=http
|
||||
- traefik.http.routers.traefik-secure.service=api@internal
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
```
|
||||
> Changez la variable `USERPASS` par le mot de passe copié précédemment et la variable `NDD` par votre nom de domaine
|
||||
{.is-warning}
|
||||
|
||||
### Créez le réseau `proxy` dans Docker :
|
||||
```bash
|
||||
docker network create proxy
|
||||
```
|
||||
|
||||
### Lancez le docker-compose `traefik` :
|
||||
```bash
|
||||
docker-compose -f /apps/traefik/docker-compose.yml up -d
|
||||
```
|
||||
|
||||
## Installation de Portainer
|
||||
### Créez un dossier `portainer` :
|
||||
```bash
|
||||
mkdir -p /apps/portainer
|
||||
cd /apps/portainer
|
||||
```
|
||||
### Créez le fichier `docker-compose.yml` pour Portainer :
|
||||
```yaml
|
||||
version: '2'
|
||||
services:
|
||||
portainer:
|
||||
image: portainer/portainer-ce:latest
|
||||
container_name: portainer
|
||||
restart: unless-stopped
|
||||
security_opt:
|
||||
- no-new-privileges:true
|
||||
environment:
|
||||
TEMPLATES: https://github.com/PAPAMICA/docker-compose-collection/blob/master/templates-portainer.json
|
||||
networks:
|
||||
- proxy
|
||||
volumes:
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
- /apps/portainer/data:/data
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.portainer.entrypoints=http
|
||||
- traefik.http.routers.portainer.rule=Host("portainer.$NDD")
|
||||
- traefik.http.middlewares.portainer-https-redirect.redirectscheme.scheme=https
|
||||
- traefik.http.routers.portainer.middlewares=portainer-https-redirect
|
||||
- traefik.http.routers.portainer-secure.entrypoints=https
|
||||
- traefik.http.routers.portainer-secure.rule=Host("portainer.$NDD")
|
||||
- traefik.http.routers.portainer-secure.tls=true
|
||||
- traefik.http.routers.portainer-secure.tls.certresolver=http
|
||||
- traefik.http.routers.portainer-secure.service=portainer
|
||||
- traefik.http.services.portainer.loadbalancer.server.port=9000
|
||||
- traefik.docker.network=proxy
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
```
|
||||
> Changez la variable `NDD` par votre nom de domaine
|
||||
{.is-warning}
|
||||
|
||||
### Lancez le docker-compose `portainer` :
|
||||
```bash
|
||||
docker-compose -f /apps/portainer/docker-compose.yml up -d
|
||||
```
|
||||
|
||||
> L'installation est terminée !
|
||||
{.is-success}
|
Chargement…
Référencer dans un nouveau ticket