Crie clusters registrados, instale add-ons e configure permissões de usuário RAM pelo terminal.
O onectl é compatível com macOS e Linux.
Pré-requisitos
Verifique se você tem:
Um terminal com macOS ou Linux
Um cluster Kubernetes externo com um arquivo kubeconfig válido (caminho padrão:
~/.kube/config)-
Um usuário RAM com as seguintes políticas de sistema anexadas:
AliyunCSFullAccess: permissões de administrador do ACK
AliyunRamFullAccess: permissões de administrador do RAM
AliyunVPCReadOnlyAccess: permissões de somente leitura da VPC
O AccessKey ID e o AccessKey Secret desse usuário RAM
O usuário RAM do onectl e os usuários RAM dos componentes são distintos. O onectl usa esse usuário RAM para chamar as APIs da Alibaba Cloud.
Como funciona
Comunicação com o cluster externo
O onectl implanta um agente do ACK One no cluster externo e obtém o kubeconfig das seguintes fontes, nesta ordem:
-
Parâmetro
--kubeconfig. Exemplo:onectl cluster connect --cluster-id <cluster-id> --kubeconfig ~/.kube/config Variável de ambiente
KUBECONFIG.Parâmetro
Kubeconfig Pathem~/.onectl/config.json(configurado viaonectl configure).Arquivo
~/.kube/configcomo fallback padrão.
Conexão com um cluster registrado
O comando onectl cluster connect executa duas etapas:
Recupera as informações de conexão do cluster registrado e as salva em
agent.yaml.Implanta o agente do ACK One no cluster externo usando essas informações.
Usuários RAM para componentes do cluster
Os componentes de um cluster registrado usam o par de AccessKey de um usuário RAM para acessar recursos da Alibaba Cloud. Por exemplo, o logtail-ds requer acesso a recursos do Simple Log Service (SLS), como projetos e Logstores. O par de AccessKey fica armazenado em um Secret chamado alibaba-addon-secret no namespace kube-system.
Se o Secret existir, o onectl usará o par de AccessKey contido nele.
Se o Secret não existir, o onectl criará um usuário RAM chamado
ack-one-user-<cluster-id-prefix>e armazenará o novo par de AccessKey no Secret.
Instalação de add-ons do cluster
Instalar um componente exige permissões de administrador no cluster registrado. O onectl verifica se a conta de serviço do agente do ACK One tem essas permissões:
Se tiver, o onectl instala o componente diretamente.
Se não tiver, o onectl cria um ClusterRole temporário (
ack-admin-tmp) e um ClusterRoleBinding (ack-admin-binding-tmp), concede permissões de administrador, instala o componente e exclui a função e o binding temporários.
Definições do ClusterRole e ClusterRoleBinding temporários:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: ack-admin-tmp
labels:
ack/creator: "ack"
rules:
- apiGroups:
- '*'
resources:
- '*'
verbs:
- '*'
- nonResourceURLs:
- '*'
verbs:
- '*'
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: ack-admin-binding-tmp
namespace: kube-system
labels:
ack/creator: "ack"
subjects:
- kind: ServiceAccount
name: ack
namespace: kube-system
roleRef:
kind: ClusterRole
name: ack-admin-tmp
apiGroup: rbac.authorization.k8s.io
Etapa 1: Instale o onectl
-
Instale o onectl:
curl https://ack-one.oss-cn-hangzhou.aliyuncs.com/onectl/get-onectl.sh | bash -
Verifique a instalação:
onectl versionSaída esperada:
onectl: v1.0.0+774dea0 BuildDate: 2023-07-12T06:10:27Z GitCommit: 774dea0f768569821e101dc44d1cb09cef192fe8 GitTreeState: clean GoVersion: go1.20.4 Compiler: gc Platform: darwin/amd64
Etapa 2: Configure as credenciais do onectl
Configure o par de AccessKey e o caminho padrão do kubeconfig:
onectl configure
Saída esperada:
Configuring profile default ...
Access Key Id [*********************f7x]:
Access Key Secret [***************************mft]:
Default Kubeconfig Path (default is ~/.kube/config) []:
Saving profile[default] ...
Done.
|
Parâmetro |
Descrição |
|
|
AccessKey ID do usuário RAM do onectl. |
|
|
AccessKey Secret do usuário RAM do onectl. |
|
|
Caminho para o arquivo kubeconfig do cluster externo. Padrão: |
Etapa 3: Defina o kubeconfig do cluster externo
O onectl usa o arquivo kubeconfig especificado na variável de ambiente KUBECONFIG. Se KUBECONFIG não estiver definida, ele recorre a ~/.kube/config.
Se o arquivo kubeconfig estiver em um caminho diferente do padrão, defina a variável de ambiente:
export KUBECONFIG=/path/to/your/kubeconfig
Próximas etapas
Substitua os valores de espaço reservado pelos seus dados antes de executar cada comando.
Gerencie clusters
Substitua <cluster-id> pelo ID do seu cluster registrado. Substitua também <region-id>, <vpc-id>, <vswitch-id> e <cluster-name> pelos valores do seu ambiente.
-
Crie um cluster registrado e conecte um cluster externo. Consulte Usar o onectl para criar um cluster registrado.
onectl cluster create --region <region-id> --vpc <vpc-id> --vswitch <vswitch-id> --name <cluster-name> --eip true onectl cluster connect --cluster-id <cluster-id>Saída esperada para
cluster connect:Agent information saved as agent.yaml. Installing ACK One agent using kubeconfig file **** to connect to registered cluster ****. Confirm? [Y/n]: y ACK One agent deployed successfully. Check the running status of deployment ack-cluster-agent to confirm the connection status of registered cluster ****. -
Verifique o status de um cluster registrado:
onectl cluster describe --cluster-id <cluster-id> -
Liste todos os clusters registrados:
onectl cluster list -
Exclua um cluster registrado:
onectl cluster delete --cluster-id <cluster-id>
Gerencie componentes
Substitua <component-name> pelo nome do componente.
-
Instale um componente. Se o agente do ACK One não tiver permissões de administrador, o onectl as concederá temporariamente e depois as revogará.
onectl addon install <component-name>Exemplo de saída com permissões temporárias:
Cluster role ack-admin-tmp created. Cluster role binding ack-admin-binding-tmp created. Addon logtail-ds, version **** installed. Cluster role ack-admin-tmp deleted. Cluster role binding ack-admin-binding-tmp deleted. -
Atualize um componente:
onectl addon upgrade <component-name> -
Liste os componentes instalados:
onectl addon list -
Liste os componentes disponíveis:
onectl addon catalog -
Desinstale um componente:
onectl addon uninstall <component-name>
Gerencie usuários RAM para componentes
Alguns componentes exigem permissões RAM específicas para acessar recursos da Alibaba Cloud. Conceda as permissões antes de instalar esses componentes.
Substitua <component-name> pelo nome do componente.
-
Conceda permissões RAM para um componente. Se o Secret
alibaba-addon-secretnão existir, o onectl criará um novo usuário RAM e Secret.onectl ram-user grant --addon <component-name>Exemplo de saída com um novo usuário RAM:
Ram user ack-one-user-ce313528c3 created successfully. Ram policy ack-one-registered-cluster-policy-terway-eniip granted to ram user ack-one-user-ce313528c3 successfully. Secret alibaba-addon-secret created under namespace kube-system in the cluster, it stores the access key and secret of ram user ack-one-user-ce313528c3. -
Verifique as permissões do usuário RAM:
onectl ram-user describe --detail -
Atualize as permissões do usuário RAM:
onectl ram-user update --addon <component-name> -
Revogue as permissões do usuário RAM:
onectl ram-user revoke --addon <component-name>