Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
technique:docker:admin:socket-certs [2020/10/14 16:08] – qduchemi | technique:docker:admin:socket-certs [2022/09/23 10:00] (Version actuelle) – rdelaage |
---|
## Préambule | ## Préambule |
| |
Pour certaines opérations, il peut être utile de pouvoir lancer des commandes Docker à distance. Par exemple, les [[technique:adminsys:graph_services|graphes des services]] sont construits de manière centralisée en récupérant des informations sur les conteneurs qui tournent, à distance. Une chaîne d'intégration aurait besoin de lancer des commandes à distance. | Pour certaines opérations, il peut être utile de pouvoir lancer des commandes Docker à distance. Par exemple, les [[technique:graph_services|graphes des services]] sont construits de manière centralisée en récupérant des informations sur les conteneurs qui tournent, à distance. Une chaîne d'intégration aurait besoin de lancer des commandes à distance. |
| |
Pour ce faire, l'idée est d'exposer le socket Docker (qui permet d'effectuer toutes les opérations possibles avec Docker) à l'extérieur. | Pour ce faire, l'idée est d'exposer le socket Docker (qui permet d'effectuer toutes les opérations possibles avec Docker) à l'extérieur. |
Pour ce faire, il faut créer une autorité de certification (CA) côté serveur et générer l'ensemble de ces éléments. | Pour ce faire, il faut créer une autorité de certification (CA) côté serveur et générer l'ensemble de ces éléments. |
| |
<bootnote important>Par conventions, on crée ces éléments dans `/DATA/docker/remote`, ils appartiendront à `root` avec le groupe `docker`, et seront en `u=rw,g=r`.</bootnote> | <bootnote important>On crée ces éléments dans `/DATA/docker/remote`, ils appartiendront à `root` avec le groupe `docker`, et seront en `u=rw,g=r`.</bootnote> |
| |
<bootnote>On a fixé arbitrairement la durée de vie des certificats à un an. Il conviendra donc de les renouveler et de les mettre à jour sur les serveurs **et** les clients concernés tous les ans.</bootnote> | <bootnote>On a fixé arbitrairement la durée de vie des certificats à un an. Il conviendra donc de les renouveler et de les mettre à jour sur les serveurs **et** les clients concernés tous les ans.</bootnote> |
``` | ``` |
| |
Générer la clé avec [pass](https://gitlab.utc.fr/picasoft/interne/pass), avec la nomenclature `Tech/Keys/<serveur>/ca-key.pem`. | Générer la clé avec [[asso:tuto:vaultwarden|vaultwarden]], avec la nomenclature `Tech/Keys/<serveur>/ca-key.pem`. |
| |
## Créer ou renouveller la CA | ## Créer ou renouveller la CA |
## Configurer le démon Docker | ## Configurer le démon Docker |
| |
Vérifier que le démon Docker est bien configuré pour [[démarrer avec TLS et utiliser le certificat généré|technique:docker:admin:config#drop_in]]. | Vérifier que le démon Docker est bien configuré pour [[technique:docker:admin:config#drop_in|démarrer avec TLS et utiliser le certificat généré]]. |
| |
## Relancer le démon Docker | ## Relancer le démon Docker |
| |
```bash | ```bash |
tar -cvf certs.tar ca.pem client | tar -cvf certs.tar ca.pem <client> |
gpg -c certs.tar | gpg -c certs.tar |
rm certs.tar | rm certs.tar |
| |
```bash | ```bash |
gpg /tmp/certs.tar.gpg | cd /tmp |
tar -xvf /tmp/certs.tar | gpg certs.tar.gpg |
| tar -xvf certs.tar |
``` | ``` |
| |
| |
```bash | ```bash |
docker --tlsverify --tlscacert=/tmp/ca.pem --tlscert=/tmp/<client>/<client>-cert.pem --tlskey=/tmp/<client>/<client>-key.pem -H=<serveur>.picasoft.net:2376 version | docker --tlsverify --tlscacert=/tmp/ca.pem --tlscert=/tmp/client/<client>-cert.pem --tlskey=/tmp/client/<client>-key.pem -H=<serveur>.picasoft.net:2376 version |
``` | ``` |
| |