diff --git a/HowtoAWX.md b/HowtoAWX.md index 57dfbd4e..b987dfcb 100644 --- a/HowtoAWX.md +++ b/HowtoAWX.md @@ -21,9 +21,17 @@ Documentation: Si vous n'avez pas de cluster Kubernetes, on peut facilement en créer un cluster *mono-neud* avec k3s par exemple voir [HowtoK3s](/HowtoK3s.md) +* On utilise kustomize pour assembler et appliquer les configurations yaml Kubernetes. -Nous allons créer un dossier awx contenant notre configuration : +* Il faut une storage class fonctionnelle dans le cluster. + +Remarques : + +* On peut aussi utiliser un chart helm pour l'opérateur uniquement : https://ansible.readthedocs.io/projects/awx-operator/en/latest/installation/helm-install-on-existing-cluster.html + +* Si vous n'avez pas de cluster Kubernetes, on peut facilement en créer un cluster *mono-neud* avec k3s par exemple voir [HowtoK3s](/HowtoK3s.md) + +Nous allons créer un dossier awx contenant la configuration pour l'opérateur, une instance et traefik (ingress) : ~~~{.bash} $ tree -L 3 awx @@ -33,17 +41,10 @@ awx │   ├── demo │   │   ├── awx-instance.yaml │   │   ├── kustomization.yaml -│   │   ├── traefik-whitelist-middleware.yaml -│   │   └── treafik-ingressroute.yaml +│   │   └── traefik-ingressroute.yaml │   └── kustomization.yaml -├── awx-operator -│   └── kustomization.yaml -└── traefik - ├── kustomization.yaml - ├── traefik-dashboard-ingressroute.yaml - ├── traefik-helm-chart-config.yaml - ├── traefik-helm-config.yaml.old - └── whitelist-middleware.yaml +└── awx-operator +    └── kustomization.yaml ~~~ * un fichier kustomize qui va assembler tout `awx/kustomization.yaml` @@ -52,12 +53,11 @@ awx apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - - ./traefik - ./awx-operator - ./awx-instances ~~~ -* L'operateur `awx/awx-operator/kustomization.yaml ` qui va etre crée dans un namespace `awx` +* L'opérateur `awx/awx-operator/kustomization.yaml ` qui va être créé dans le namespace `awx` ~~~{.yaml} apiVersion: kustomize.config.k8s.io/v1beta1 @@ -83,8 +83,7 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - awx-instance.yaml - - traefik-whitelist-middleware.yaml - - treafik-ingressroute.yaml + - traefik-ingressroute.yaml # awx/awx-instances/demo/awx-instance.yaml apiVersion: awx.ansible.com/v1beta1 @@ -92,10 +91,29 @@ kind: AWX metadata: name: awx-demo spec: - # service_type: nodeport service_type: clusterip + +# awx/awx-instances/demo/traefik-ingressroute.yaml +apiVersion: traefik.io/v1alpha1 +kind: IngressRoute +metadata: + name: demo-instance-awx +spec: + entryPoints: + - websecure + routes: + - kind: Rule + match: Host(`awx.chez-vous.org`) + services: + - kind: Service + name: awx-demo-service + port: 80 + tls: + certResolver: letsencrypt ~~~ +> on peut aussi configurer directement les paramètres de l'insgress dans le spec de l'instance, voir documentation : https://ansible.readthedocs.io/projects/awx-operator/en/latest/user-guide/network-and-tls-configuration.html + Lancer le Déploiement : ~~~{.bash} @@ -117,15 +135,18 @@ service/awx-operator-controller-manager-metrics-service created deployment.apps/awx-operator-controller-manager created ~~~ +* Voir ou en est l'installation + ~~~{.bash} -# voir ou en l'installation $ kubectl -n awx logs -f deployments/awx-operator-controller-manager # suivre le lancement d'instance(s) -$kubectl logs -n awx -f deployments/awx-operator-controller-manager -c awx-manager +$ kubectl logs -n awx -f deployments/awx-operator-controller-manager -c awx-manager # Récuperer le mot de passe d'une instance $ kubectl get secret -n awx awx-demo-admin-password -o jsonpath="{.data.password}" | base64 --decode ; echo ~~~ +Si tout se passe bien, on + ### Docker (Déprécié) Copier le dépôt sur le serveur a partir d'une version stable: https://github.com/ansible/awx/releases/tag diff --git a/HowtoK3s.md b/HowtoK3s.md index 0d116bf8..adb34f48 100644 --- a/HowtoK3s.md +++ b/HowtoK3s.md @@ -15,13 +15,13 @@ Documentation : et = 5.8 -* Vérifier la version de iptable installée https://docs.k3s.io/known-issues#iptables +* Vérifier la version de Iptable installée https://docs.k3s.io/known-issues#iptables * Désactiver ufw si présent (les règles iptables de k3s passerons devant) * Il faut mettre minifirewall à DOCKER='on' -> Attention k3s rajoutera ses regles iptables par-dessus; il faut faire attention a ce qu'on expose si la machine est sur internet. +> Attention k3s rajoutera ses règles iptables par-dessus ; il faut faire attention à ce qu'on expose si la machine est sur internet. -Pour installer on peut simplement jouer le script d'installation qui va récupérer le binaire et mettre en place l'unitée systemd ou openrc. +Pour installer, on peut simplement jouer le script d'installation qui va récupérer le binaire et mettre en place l'unité systemd ou openrc. ~~~{.bash} ### Installer @@ -40,24 +40,27 @@ k3s server ... On peut rejouer le script d'installation ou installer le binaire d'une version en particulier : -> **Attention** : si à l'installation on à joué le script d'installation argument, il ne faut pas en donné cette fois-ci ! autrement ils ecraseront les anciens argument. +> **Attention** : si à l'installation, on a joué le script d'installation avec des arguments, il ne faut pas en donner cette fois-ci ! autrement, ils écraseront les anciens argument. ~~~{.bash} -# Installer le binaire d'une release https://github.com/k3s-io/k3s/releases +# Jouer le script d'installation sans arguments ... +curl -sfL https://get.k3s.io | sh - + +# Installer le binaire d'une version https://github.com/k3s-io/k3s/releases $ tag=v1.29.0+k3s1 $ curl -Lo /usr/local/bin/k3s https://github.com/k3s-io/k3s/releases/download/${tag}/k3s; chmod a+x /usr/local/bin/k3s ~~~ ## Configuration -Selon les besoins, on peut configuer K3s de différentes manière en même temps : +Selon les besoins, on peut configurer K3s de différente manière en même temps : * Au lancement avec des ENVs et argument -* Avec un fichier de configuration dans `/etc/rancher/k3s/config.yaml` ou des fichiers dans `/etc/rancher/k3s/config.yaml.d/*.yaml` +* Avec un fichier de configuration dans `/etc/rancher/k3s/config.yaml` ou des fichiers dans `/etc/rancher/k3s/config.yaml.d/*.yaml` (lu et appliqué dans l'ordre alphabétique : la dernière valeur lue pour une clef sera appliqué). ~~~{.ini} -### /etc/rancher/k3s/config.yaml +$vim /etc/rancher/k3s/config.yaml write-kubeconfig-mode: "0644" disable: - servicelb diff --git a/HowtoKeycloak.md b/HowtoKeycloak.md index 7fc5c476..4355f174 100644 --- a/HowtoKeycloak.md +++ b/HowtoKeycloak.md @@ -157,7 +157,6 @@ hostname-admin=adm-test.example.org > Dans ce cas, il faudra utiliser un [proxy-inverse](#proxy-inverse) pour contrôler les accès des hostnames. - ### SSL/TLS @@ -178,7 +177,21 @@ https-certificate-key-file=/root/keycloak_private.key ### Proxy inverse -WIP +Documentation : + +* edge : Terminaison SSL au niveau du proxy et communication avec keycloak en HTTP + +> **Attention** : dans ce mode le traffic entre le proxy est donc en clair. Le reseaux interne doit être sécurisé. + +* reencrypt : La terminaison SSL se fait au niveau du proxy inverse ET au niveau de keycloak, chacun ont une clef et un certificat (different). C'est utile dans un environnement ou le reseaux interne doit aussi être protégé, cela permet aussi au reverse proxy de voir le contenu des requêtes + + Requires communication through HTTPS between the proxy and Keycloak. This mode is suitable for deployments where internal communication between the reverse proxy and Keycloak should also be protected. Different keys and certificates are used on the reverse proxy as well as on Keycloak. + +* passthrough : Terminaison SSl au niveau de keycloak uniquement, le trafique https est forwardé par le proxy. Le proxy n'a pas connaissance du contenu du traffique + + The proxy forwards the HTTPS connection to Keycloak without terminating TLS. The secure connections between the server and clients are based on the keys and certificates used by the Keycloak server. + + ### Exemple de configuration diff --git a/HowtoTraefik.md b/HowtoTraefik.md index 3c0d46e9..cc3e2eed 100644 --- a/HowtoTraefik.md +++ b/HowtoTraefik.md @@ -49,7 +49,7 @@ Sans rentrer dans les détails dans cette configuration, nous allons préciser.. Par exemple... ~~~{.yaml} -## Static configuration +# Configuration Statique entryPoints: web: address: ":80" @@ -74,12 +74,12 @@ Liste des providers : https://doc.traefik.io/traefik/providers/overview/ On va configurer... * des [routers](https://doc.traefik.io/traefik/routing/routers/#configuration-example) qui permette de connecter les requêtes aux services -* des [Services](https://doc.traefik.io/traefik/routing/services/#services) permettent de joindre les services... +* des [Services](https://doc.traefik.io/traefik/routing/services/#services) qui permettent de joindre les services... Par exemple : ~~~{.yaml} -## Dynamic configuration +# Configuration dynamique http: routers: Router-1: @@ -100,9 +100,39 @@ TODO à venir examples !! ## Configuration avancée +### Logging + +Documentation Logs : +Documentation Access Logs : +Pour configurer les logs de Traefik, il faut lui indiquer dans sa configration statique... + +~~~{.yaml} +log: + # ERROR par défaut : DEBUG > INFO > WARN > ERROR > FATAL > PANIC + level: DEBUG + filePath: "/var/log/traefik.log" + +accessLog: + filePath: "/path/to/access.log" +~~~ + ### Whitelist -On peut configurer un middleware pour n'autoriser que certaines Ips +On peut définir un middleware pour n'autoriser que certaines Ips + +~~~{.toml} +# Configuration dynamique + [http.middlewares.evolix-whitelist.ipWhiteList] + sourceRange = ["31.170.8.0/21", "185.236.224.0/22"] +~~~ + +On peut ensuite utiliser ce middleware directement sur un entryPoint ou sur des services (TODO à venir)... + +~~~{.toml} +# Configuration statique + [entryPoints.websecure.http] + middlewares = ["evolix-whitelist@file"] +~~~ ### HTTPS et gestion des certificats TLS @@ -111,7 +141,7 @@ Documentation : dès le moment ou le router contient la section `tls:`, Traefik suppose que celui-ci est uniquement utilisé pour des requetes HTTPS uniquement. ~~~{.yaml} -## Dynamic configuration +## Configuration dynamique http: routers: my-https-router: @@ -126,7 +156,7 @@ http: Traefik peut s'occuper de la gestion des certificats TLS, il faut definir un "certResolver": ~~~{.yaml} -## Static configuration +# Configuration Statique certificatesResolvers: myresolver: acme: