Une application mobile pour gérer ses clusters k8s depuis son smartphone
InSpec-Iggy permet de générer des règles de compliances InSpec pour les cloud AWS, Azure et GCP à partir de tfstate
Terraform.
Il est possible de générer des règles de compliances incluant le tfstate
Terraform ou l'excluant. Ce derniers cas est intéressant pour vérifier que rien n'est provisionné dans le cloud en dehors de Terraform.
Un ensemble de CRD qui permettent de créer des ressources GCP via des templates kubernetes.
exemple:
apiVersion: sql.cnrm.cloud.google.com/v1beta1
kind: SQLInstance
metadata:
name: my-sql-instance
labels:
cost-center: "cc9"
spec:
databaseVersion: MYSQL_5_7
region: us-central1
settings:
tier: db-f1-micro
Un Space Invaders like pour killer des pods Kubernetes
Procedure pour installer differentes versions d'un logiciel avec brew:
$ git clone git@github.com:Homebrew/homebrew-core.git
$ cd homebrew-core
$ git log master -- Formula/terraform.rb
# retrouver le commit de la version qu'on souhaite installer
$ git checkout <commitid>
$ cd Formula
$ brew unpin terraform
$ brew unlink terraform
$ brew install terraform.rb
$ brew pin terraform
$ brew switch terraform <version>
Pour gérer les versions de Terraform, je préfère utiliser tfenv, mais la procédure est valable pour n'importe quel logiciel installable avec brew.
Comment utiliser git commit --fixup
, git commit --amend
et git rebase -i --autosquash
pour avoir un historique de commits clean avant de soumettre une PR.
Attention, contrairement a l'exemple de l'article, il est fortement déconseillé d'utiliser ces commandes sur la branche master
ou sur une branche sur laquelle on est pas le seul a travailler si l'on a déjà "pushé" les commits. Par ailleurs , Il vaut mieux utiliser git push --force-with-lease
.
Keybase peut gérer les authentifications SSH par Certificate Authorities. Une fois la clé publique de la CA déployée sur un serveur, la commande kssh
permet de se connecter en SSH a un serveur en générant dynamiquement une clé SSH temporaire signée par la CA.
La gestion des accès de fait en fonction des teams keybase de l'utilisateur.
git worktree
permet de travailler sur une branche d'un repo dans un répertoire de travail dédié.
C'est super utile pour éviter de jongler avec les git stash
quand on travaille sur plusieurs branches en //.
Particulièrement quand on a lancé un build local super long en local et qu'on aimerait bien travailler sur une autre branche en attendant que le build termine.
git log --all --grep "pattern"
pour chercher dans les messages de commit git.
Une bonne explication du fonctionnement interne de git et de l'arborescence du répertoire .git
. A noter que la 2ème partie de l'article sur les rebases est également très intéressante.
Dans mon équipe (infra @ elastic), on utilise Logstash pour indexer les évènements de notre organisation GitHub dans Elasticsearch et générer des alertes et dashboards.
Ce post décrit rapidement notre process.
En bonus, il est possible d'utiliser le nouveau chart officiel Logstash développé par mes soins pour déployer Logstash sur K8S (attention ce chart est toujours en bêta).
J'utilise ce lecteur DVD portable pour occuper les enfants pendant les longs trajets en voiture.
Les codecs et formats qu'il peut lire sont assez limités.
Pour convertir des vidéos afin qu'elles soient lisible sur ce lecteur:
ffmpeg -i existing_file.mp4 -vcodec mpeg4 -vtag DX50 -acodec mp3 -s vga new_file.avi
Script jenkins pour supprimer des builds d'un job, quand on a besoin de le faire on est contant de ne pas devoir se taper tout ça à la main :)
Jenkins.instance.getItemByFullName('JobName').builds.findAll { it.number > 10 && it.number < 1717 }.each { it.delete() }
vault -autocomplete-install
pour avoir l'autocompletion de la command line Vault
J'avais loupé cette news mais il est désormais possible de lancer des VM ARM64 sur la Freebox Delta.
Pas encore testé mais c'est super interressant pour qui veut s'autohéberger sans s'équiper d'un serveur @home et dispose d'une connexion suffisante (pas mon cas malheureusement, j'attend avec impatience le jour ou la fibre sera disponible chez moi...).
Quelques limitations connus:
- ARM64 uniquement
- 2 VM maximum
- 2 CPU et 1GB dispo pour les VM
Quel est l'intérêt par rapport à un Raspberry Pi pour une utilisation de type server @home?
- Pas d'hardware supplémentaire
- Pas de problème d'alimentation tatillone
- Pas de problème de corruption de carte SD pour le stockage
- Meilleures perfs disque
- Meilleures perfs CPU (entre 30% et 80% d'après l'article)
- Meilleures perfs réseau
Les commandes pour générer un kubeconfig à partir d'un Service Account K8S.
J'ai créé 2 scripts à partir de ces instructions:
- create-serviceaccount.sh pour générer le serviceaccount
- create-kubeconfig.sh pour générer le kubeconfig
Super utile pour coller des gros logs dans un commentaire GitHub par exemple:
## collapsible markdown?
<details><summary>CLICK ME</summary>
<p>
hidden blocks!
</p>
</details>
AWS EKS gère désormais les node groups de workers en tant que ressources managées (avant il fallait gérer soit même les ASG de workers nodes).
En plus c'est déjà géré par la nouvelle version du provider terraform-aws
Le Getting Started pour utiliser Hammerspoon sur MacOS
What is Hammerspoon?
Hammerspoon is a desktop automation tool for OS X. It bridges various system level APIs into a Lua scripting engine, allowing you to have powerful effects on your system by writing Lua scripts.
C'est super puissant pour controller MacOS.
Quelques examples:
- Déplacer la fenêtre actuelle sur la moitié gauche de l'écran en pressant les touches
Cmd
,alt
,ctrl
et gauche
hs.hotkey.bind({"cmd", "alt", "ctrl"}, "Left", function()
local win = hs.window.focusedWindow()
local f = win:frame()
local screen = win:screen()
local max = screen:frame()
f.x = max.x
f.y = max.y
f.w = max.w / 2
f.h = max.h
win:setFrame(f)
end)
- Déplacer la fenêtre actuelle sur la moitié droite de l'écran en pressant les touches
Cmd
,alt
,ctrl
et droite
hs.hotkey.bind({"cmd", "alt", "ctrl"}, "Right", function()
local win = hs.window.focusedWindow()
local f = win:frame()
local screen = win:screen()
local max = screen:frame()
f.x = max.x + (max.w / 2)
f.y = max.y
f.w = max.w / 2
f.h = max.h
win:setFrame(f)
end)
- Afficher le titre en écoute sur Spotify en pressant les touches
Cmd
,alt
,ctrl
etS
hs.hotkey.bind({"cmd", "alt", "ctrl"}, "S", function()
hs.spotify.displayCurrentTrack()
end)
MacOS inclut /usr/libexec/java_home
pour configurer JAVA_HOME
:
export JAVA_HOME=$(/usr/libexec/java_home)