Quero dividir um arquivo de recursos do k8s com mikefarah/yq em arquivos individuais por recurso. Obviamente, o nome do arquivo de destino dos novos arquivos precisa ser dinâmico.
Um esquema de nomenclatura bastante óbvio para recursos k8s é [nome-do-tipo]. Então, cheguei a este comando.
yq '.items[]' my-file.yaml -s '.kind + "-" + .metadata.name'
Mas o nome do k8s pode conter caracteres como dois pontos, que não são permitidos em um nome de arquivo. Se isso acontecer, recebo este erro
Erro: abra ClusterRole-system:[...].yml: A sintaxe do nome do arquivo, nome do diretório ou rótulo do volume está incorreta.
Existe uma maneira de substituir caracteres no nome do arquivo de destino dinâmico?
Você pode usar
sub
para substituir qualquer padrão de expressão regular correspondente por uma determinada string. Por exemplo, para substituir cada dois pontos ou barra por um sublinhado, usesub("[:/]"; "_")
.