#!/usr/bin/env bash set -euo pipefail command -v jq >/dev/null || { echo "jq required" >&2; exit 1; } command -v yc >/dev/null || { echo "yc required" >&2; exit 1; } req=$(cat) image=$(printf '%s' "$req" | jq -r '.image // empty') if [[ -z "$image" ]]; then echo "no image in request" >&2 exit 1 fi registry=${image%%/*} if [[ -z "$registry" ]]; then registry="$image" fi creds_json=$(printf '%s' "$image" | yc container docker-credential get 2>/dev/null) || { echo "yc docker-credential failed" >&2 exit 1 } username=$(printf '%s' "$creds_json" | jq -r '.Username // empty') secret=$(printf '%s' "$creds_json" | jq -r '.Secret // empty') if [[ -z "$username" || -z "$secret" ]]; then echo "failed to parse yc output" >&2 exit 1 fi jq -n \ --arg api "credentialprovider.kubelet.k8s.io/v1" \ --arg kind "CredentialProviderResponse" \ --arg reg "$registry" \ --arg user "$username" \ --arg pass "$secret" \ --arg cache "6h" \ --arg keyType "Registry" \ '{ apiVersion: $api, kind: $kind, auth: { ($reg): { username: $user, password: $pass } }, cacheDuration: $cache, cacheKeyType: $keyType }'