|
Este documento foi traduzido usando tecnologia de tradução automática de máquina. Sempre trabalhamos para apresentar traduções precisas, mas não oferecemos nenhuma garantia em relação à integridade, precisão ou confiabilidade do conteúdo traduzido. Em caso de qualquer discrepância, a versão original em inglês prevalecerá e constituirá o texto official. |
Kubeconfigs
Recurso Kubeconfig
Kubeconfig é um recurso do Rancher kubeconfigs.ext.cattle.io que permite gerar v1.Config arquivos kubeconfig para interagir com o Rancher e clusters gerenciados pelo Rancher.
kubectl api-resources --api-group=ext.cattle.io
Para obter uma descrição dos campos e da estrutura do recurso Kubeconfig, execute:
kubectl explain kubeconfigs.ext.cattle.io
Criando um Kubeconfig
Desde o Rancher v2.13, o status.bearerToken contém um token Bearer totalmente formado e pronto para uso que pode ser usado para autenticar na API do Rancher.
Apenas um usuário válido e ativo do Rancher pode criar um Kubeconfig. Por exemplo, tentar criar um Kubeconfig usando uma system:admin conta de serviço resulta em um erro:
kubectl create -o jsonpath='{.status.value}' -f -<<EOF
apiVersion: ext.cattle.io/v1
kind: Kubeconfig
EOF
Error from server (Forbidden): error when creating "STDIN": kubeconfigs.ext.cattle.io is forbidden: user system:admin is not a Rancher user
|
O conteúdo do kubeconfig é gerado e retornado no campo |
Um kubeconfig pode ser criado para mais de um cluster ao mesmo tempo, especificando uma lista de nomes de clusters no campo spec.clusters. Você pode procurar nomes de clusters listando recursos clusters.management.cattle.io.
kubectl get clusters.management.cattle.io -o=jsonpath="{.items[*]['metadata.name', 'spec.displayName']}{'\n'}"
local local
c-m-p66cdvlj downstream1
Os campos metadata.name e metadata.generateName são ignorados, e o nome do novo Kubeconfig é gerado automaticamente usando o prefixo kubeconfig-.
Você pode usar o campo spec.currentContext para definir o nome do cluster, e ele é usado para definir o contexto atual no kubeconfig. Se você não definir o campo spec.currentContext, então o primeiro cluster na lista spec.clusters é usado como o contexto atual. Para clusters habilitados para ACE que não têm um FQDN definido, o primeiro nó do plano de controle é usado como o contexto atual.
Para clusters habilitados para ACE, se o FQDN estiver definido, então esse é usado como uma entrada de cluster no kubeconfig; caso contrário, entradas para todos os nós do plano de controle são criadas.
kubectl create -o jsonpath='{.status.value}' -f -<<EOF
apiVersion: ext.cattle.io/v1
kind: Kubeconfig
spec:
clusters: [c-m-p66cdvlj, c-m-fcd3g5h]
description: My Kubeconfig
currentContext: c-m-p66cdvlj
EOF
Se "*" for especificado como o primeiro item no campo spec.clusters, o kubeconfig é criado para todos os clusters aos quais o usuário tem acesso, se houver.
kubectl create -o jsonpath='{.status.value}' -f -<<EOF
apiVersion: ext.cattle.io/v1
kind: Kubeconfig
spec:
clusters: ["*"]
description: My Kubeconfig
EOF
Se spec.ttl não for especificado, os tokens do Kubeconfig são criados com o tempo de expiração definido na configuração kubeconfig-default-token-ttl-minutes, que é de 30 dias por padrão. Se spec.ttl for especificado, deve ser maior que 0 e menor ou igual ao valor da configuração kubeconfig-default-token-ttl-minutes expresso em segundos.
kubectl create -o jsonpath='{.status.value}' -f -<<EOF
apiVersion: ext.cattle.io/v1
kind: Kubeconfig
spec:
clusters: [c-m-p66cdvlj] # Downstream cluster
ttl: 7200 # 2 hours
EOF
Listando Kubeconfigs
Listar Kubeconfigs gerados anteriormente pode ser útil para limpar tokens de suporte se o Kubeconfig não for mais necessário (por exemplo, se ele foi emitido temporariamente). Administradores podem listar todos os Kubeconfigs, enquanto usuários regulares podem apenas visualizar os seus próprios.
kubectl get kubeconfig
NAME TTL TOKENS STATUS AGE
kubeconfig-zp786 30d 2/2 Complete 18d
kubeconfig-7zvzp 30d 1/1 Complete 12d
kubeconfig-jznml 30d 1/1 Complete 12d
Use -o wide para obter mais detalhes:
kubectl get kubeconfig -o wide
NAME TTL TOKENS STATUS AGE USER CLUSTERS DESCRIPTION
kubeconfig-zp786 30d 2/2 Complete 18d user-w5gcf * all clusters
kubeconfig-7zvzp 30d 1/1 Complete 12d u-w7drc *
kubeconfig-jznml 30d 1/1 Complete 12d u-w7drc *
Visualizando um Kubeconfig
Administradores podem obter qualquer Kubeconfig, enquanto usuários regulares podem apenas obter o seu próprio.
kubectl get kubeconfig kubeconfig-zp786
NAME TTL TOKENS STATUS AGE
kubeconfig-zp786 30d 2/2 Complete 18d
Use -o wide para obter mais detalhes:
kubectl get kubeconfig kubeconfig-zp786 -o wide
NAME TTL TOKENS STATUS AGE USER CLUSTERS DESCRIPTION
kubeconfig-zp786 30d 2/2 Complete 18d user-w5gcf * all clusters
Deletando um Kubeconfig
Administradores podem deletar qualquer Kubeconfig, enquanto usuários regulares podem apenas deletar o seu próprio. Quando um Kubeconfig é deletado, os tokens kubeconfig também são deletados.
kubectl delete kubeconfig kubeconfig-zp786
kubeconfig.ext.cattle.io "kubeconfig-zp786" deleted
Para deletar um Kubeconfig usando pré-condições:
cat <<EOF | k delete --raw /apis/ext.cattle.io/v1/kubeconfigs/kubeconfig-zp786 -f -
{
"apiVersion": "v1",
"kind": "DeleteOptions",
"preconditions": {
"uid": "52183e05-d382-47d2-b4b9-d0735823ce90",
"resourceVersion": "31331505"
}
}
EOF
Deletando uma Coleção de Kubeconfigs
Administradores podem deletar qualquer Kubeconfig, enquanto usuários regulares podem apenas deletar o seu próprio.
Para deletar todos os Kubeconfigs:
kubectl delete --raw /apis/ext.cattle.io/v1/kubeconfigs
Para deletar uma coleção de Kubeconfigs por rótulo:
kubectl delete --raw /apis/ext.cattle.io/v1/kubeconfigs?labelSelector=foo%3Dbar
Atualizando um Kubeconfig
Apenas o metadata (por exemplo, adicionando um rótulo ou uma anotação) e o campo spec.description podem ser atualizados. Todos os outros campos spec são imutáveis.
Para editar um Kubeconfig:
kubectl edit kubeconfig kubeconfig-zp786
Para aplicar um patch a um Kubeconfig e atualizar sua descrição:
kubectl patch kubeconfig kubeconfig-zp786 -type merge -p '{"spec":{"description":"Updated description"}}'
kubeconfig.ext.cattle.io/kubeconfig-zp786 patched
kubectl get kubeconfig kubeconfig-fdcpl -o jsonpath='{.spec.description}'
Updated description
Para aplicar um patch a um Kubeconfig e adicionar um rótulo:
kubectl patch kubeconfig kubeconfig-zp786 -type merge -p '{"metadata":{"labels":{"foo":"bar"}}}'
kubeconfig.ext.cattle.io/kubeconfig-zp786 patched
kubectl get kubeconfig kubeconfig-zp786 -o jsonpath='{.metadata.labels.foo}'
bar