Skip to content

nueva función Get-ImageTags #4

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
103 changes: 101 additions & 2 deletions .config/powershell/user_profile.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@
$omp_config = Join-Path $PSScriptRoot ".\takuya.omp.json"
oh-my-posh --init --shell pwsh --config $omp_config | Invoke-Expression


# if icons not working see: https://github.com/devblackops/Terminal-Icons/issues/99#issuecomment-1478390425
Import-Module -Name Terminal-Icons

# PSReadLine
Expand Down Expand Up @@ -38,3 +36,104 @@ function which ($command) {
function gcmt([string]$message) {
git commit -m $message
}


function dev() {
cd "D:\SIGE\Documents\Control emisiones\Proyecto CEMSView\cemsview-frontend-dev"
}

function services() {
cd "D:\SIGE\Documents\Control emisiones\Proyecto CEMSView\cemsview-services"
}


<#
.SYNOPSIS
Obtiene y muestra información sobre las imágenes de los deployments en un clúster de Kubernetes.

.DESCRIPTION
La función `Get-ImageTags` permite obtener información detallada sobre las imágenes de los deployments en un clúster de Kubernetes. Puedes buscar por nombre de deployment, por namespace, o ambos.

.PARAMETER d
Nombre del deployment a buscar. Si se proporciona, se mostrará solo información sobre este deployment específico.

.PARAMETER n
Nombre del namespace en el que buscar los deployments. Si se proporciona, la búsqueda se limita a este namespace. Si no se proporciona, se buscará en todos los namespaces.

.EXAMPLE
Get-ImageTags
Muestra todos los deployments y sus tags en todos los namespaces.

.EXAMPLE
Get-ImageTags -n default
Muestra todos los deployments y sus tags en el namespace "default".

.EXAMPLE
Get-ImageTags -d my-deployment
Muestra información sobre el deployment "my-deployment" en todos los namespaces.

.EXAMPLE
Get-ImageTags -d my-deployment -n default
Muestra información sobre el deployment "my-deployment" en el namespace "default".

.OUTPUTS
Muestra una tabla con las columnas Deployment, Namespace, y Image.

.NOTES
Asegúrate de que `kubectl` esté instalado y configurado correctamente en tu entorno para usar esta función.
#>
function Get-ImageTags {
param (
[Alias("d")] # Alias para -d
[string]$Deployment = "", # Nombre del deployment (opcional)

[Alias("n")] # Alias para -n
[string]$Namespace = "" # Namespace (opcional)
)

# Condicional para usar el namespace si se ha proporcionado, o --all-namespaces por defecto
if ($Namespace) {
$namespaceOption = "--namespace=$Namespace"
} else {
$namespaceOption = "--all-namespaces"
}

# Si se ha proporcionado el deployment (-d o --deployment), filtrar por ese deployment
if ($Deployment) {
$jsonpath = '{range .items[?(@.metadata.name=="' + $Deployment + '")]}{.metadata.namespace}{"\t"}{.spec.template.spec.containers[*].image}{"\n"}{end}'
} else {
# Si no se proporciona -d, mostrar todos los deployments en el namespace o en todos los namespaces
$jsonpath = '{range .items[*]}{.metadata.name}{"\t"}{.metadata.namespace}{"\t"}{.spec.template.spec.containers[*].image}{"\n"}{end}'
}

# Ejecutar el comando kubectl con la opción de namespace adecuada
$deployments = kubectl get deployments $namespaceOption -o=jsonpath="$jsonpath"

# Dividir la salida en filas y columnas dinámicamente
$output = $deployments -split "`n" | ForEach-Object {
if ($_ -ne "") {
$columns = $_ -split "\t"
$result = [PSCustomObject]@{}

if ($DeploymentName -eq "") {
if ($columns.Count -ge 2) {
$result | Add-Member -MemberType NoteProperty -Name "Deployment" -Value $columns[0]
}
if ($columns.Count -ge 3) {
$result | Add-Member -MemberType NoteProperty -Name "Namespace" -Value $columns[1]
$result | Add-Member -MemberType NoteProperty -Name "Image" -Value $columns[2]
}
} else {
if ($columns.Count -ge 2) {
$result | Add-Member -MemberType NoteProperty -Name "Namespace" -Value $columns[0]
$result | Add-Member -MemberType NoteProperty -Name "Image" -Value $columns[1]
}
}

$result
}
}

# Mostrar la salida en formato tabla
$output | Format-Table -AutoSize
}