Detalhamento do acesso a Secrets armazenados no etcd para o CKS.
No Kubernetes, Secrets (e outros recursos) são persistidos no etcd. Em clusters kubeadm, o API server se conecta ao etcd usando certificados. Com etcdctl e os certs corretos você pode ler diretamente as chaves do etcd (ex.: /registry/secrets/<namespace>/<secret-name>). Os valores ficam em Base64; para uso legível é preciso decodificar.
Os paths dos certs costumam estar no manifest do kube-apiserver:
grep etcd /etc/kubernetes/manifests/kube-apiserver.yaml
Tipicamente aparecem:
--etcd-cafile (CA do etcd)--etcd-certfile (client cert do API server)--etcd-keyfile (client key)Em muitos clusters kubeadm:
/etc/kubernetes/pki/etcd/ca.crt/etc/kubernetes/pki/apiserver-etcd-client.crt/etc/kubernetes/pki/apiserver-etcd-client.keyETCDCTL_API=3 etcdctl \
--cert /etc/kubernetes/pki/apiserver-etcd-client.crt \
--key /etc/kubernetes/pki/apiserver-etcd-client.key \
--cacert /etc/kubernetes/pki/etcd/ca.crt \
get /registry/secrets/<namespace>/<secret-name>
/registry/secrets/<namespace>/<secret-name>.Os dados dos Secrets no Kubernetes estão em Base64. Para decodificar:
echo <base64-value> | base64 -d
Se você extrair do etcd o conteúdo do secret (ex.: campo .data.password), use o mesmo base64 -d para ver o valor em claro.
grep etcd /etc/kubernetes/manifests/kube-apiserver.yaml.ETCDCTL_API=3 etcdctl --cert ... --key ... --cacert ... get /registry/secrets/<ns>/<name>.echo <base64> | base64 -d.