Créez des clusters enregistrés, installez des modules complémentaires et configurez les autorisations des utilisateurs RAM depuis le terminal.
onectl est compatible avec macOS et Linux.
Prérequis
Assurez-vous de disposer des éléments suivants :
Un terminal sous macOS ou Linux
Un cluster Kubernetes externe avec un fichier kubeconfig valide (chemin par défaut :
~/.kube/config)-
Un utilisateur RAM auquel sont attachées les stratégies système suivantes :
AliyunCSFullAccess — Autorisations d'administrateur ACK
AliyunRamFullAccess — Autorisations d'administrateur RAM
AliyunVPCReadOnlyAccess — Autorisations en lecture seule VPC
L'ID AccessKey et la clé secrète AccessKey de cet utilisateur RAM
L'utilisateur RAM pour onectl et les utilisateurs RAM pour les composants sont distincts. onectl utilise cet utilisateur RAM pour appeler les API Alibaba Cloud.
Fonctionnement
Communication avec le cluster externe
onectl déploie un agent ACK One dans le cluster externe et résout le kubeconfig à partir des sources suivantes, dans l'ordre indiqué :
-
Le paramètre
--kubeconfig. Par exemple :onectl cluster connect --cluster-id <cluster-id> --kubeconfig ~/.kube/config La variable d'environnement
KUBECONFIG.Le paramètre
Kubeconfig Pathdans~/.onectl/config.json(configuré viaonectl configure).~/.kube/configcomme solution de repli par défaut.
Connexion à un cluster enregistré
La commande onectl cluster connect effectue deux étapes :
Récupère les informations de connexion du cluster enregistré et les enregistre dans
agent.yaml.Déploie l'agent ACK One dans le cluster externe à l'aide de ces informations.
Utilisateurs RAM pour les composants du cluster
Les composants d'un cluster enregistré utilisent une paire de clés AccessKey d'un utilisateur RAM pour accéder aux ressources Alibaba Cloud. Par exemple, logtail-ds requiert un accès aux ressources Simple Log Service (SLS), telles que les projets et les Logstores. La paire de clés AccessKey est stockée dans un Secret nommé alibaba-addon-secret dans le namespace kube-system.
Si le Secret existe, onectl utilise la paire de clés AccessKey qu'il contient.
Si le Secret n'existe pas, onectl crée un utilisateur RAM nommé
ack-one-user-<cluster-id-prefix>et stocke la nouvelle paire de clés AccessKey dans le Secret.
Installation des modules complémentaires du cluster
L'installation d'un composant nécessite des autorisations d'administrateur sur le cluster enregistré. onectl vérifie si le compte de service de l'agent ACK One dispose de ces autorisations :
Si c'est le cas, onectl installe directement le composant.
Sinon, onectl crée un ClusterRole temporaire (
ack-admin-tmp) et un ClusterRoleBinding temporaire (ack-admin-binding-tmp), accorde les autorisations d'administrateur, installe le composant, puis supprime le rôle et le binding temporaires.
Définitions du ClusterRole et du ClusterRoleBinding temporaires :
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
Étape 1 : Installer onectl
-
Installez onectl :
curl https://ack-one.oss-cn-hangzhou.aliyuncs.com/onectl/get-onectl.sh | bash -
Vérifiez l'installation :
onectl versionRésultat attendu :
onectl: v1.0.0+774dea0 BuildDate: 2023-07-12T06:10:27Z GitCommit: 774dea0f768569821e101dc44d1cb09cef192fe8 GitTreeState: clean GoVersion: go1.20.4 Compiler: gc Platform: darwin/amd64
Étape 2 : Configurer les identifiants onectl
Configurez la paire de clés AccessKey et le chemin kubeconfig par défaut :
onectl configure
Résultat attendu :
Configuring profile default ...
Access Key Id [*********************f7x]:
Access Key Secret [***************************mft]:
Default Kubeconfig Path (default is ~/.kube/config) []:
Saving profile[default] ...
Done.
|
Paramètre |
Description |
|
|
ID AccessKey de l'utilisateur RAM onectl. |
|
|
Clé secrète AccessKey de l'utilisateur RAM onectl. |
|
|
Chemin d'accès au fichier kubeconfig du cluster externe. Par défaut : |
Étape 3 : Définir le kubeconfig pour votre cluster externe
onectl utilise le fichier kubeconfig spécifié dans la variable d'environnement KUBECONFIG. Si KUBECONFIG n'est pas définie, il utilise par défaut ~/.kube/config.
Si votre fichier kubeconfig se trouve à un emplacement non standard, définissez la variable d'environnement :
export KUBECONFIG=/path/to/your/kubeconfig
Étapes suivantes
Remplacez les valeurs d'espace réservé par vos propres valeurs avant d'exécuter chaque commande.
Gérer les clusters
Remplacez <cluster-id> par l'ID de votre cluster enregistré, ainsi que <region-id>, <vpc-id>, <vswitch-id> et <cluster-name> par les valeurs correspondant à votre environnement.
-
Créez un cluster enregistré et connectez un cluster externe. Consultez la rubrique Utiliser onectl pour créer un cluster enregistré.
onectl cluster create --region <region-id> --vpc <vpc-id> --vswitch <vswitch-id> --name <cluster-name> --eip true onectl cluster connect --cluster-id <cluster-id>Résultat attendu pour
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 ****. -
Vérifiez l'état d'un cluster enregistré :
onectl cluster describe --cluster-id <cluster-id> -
Répertoriez tous les clusters enregistrés :
onectl cluster list -
Supprimez un cluster enregistré :
onectl cluster delete --cluster-id <cluster-id>
Gérer les composants
Remplacez <component-name> par le nom du composant.
-
Installez un composant. Si l'agent ACK One ne dispose pas des autorisations d'administrateur, onectl les accorde temporairement, puis les révoque.
onectl addon install <component-name>Exemple de résultat avec des autorisations temporaires :
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. -
Mettez à jour un composant :
onectl addon upgrade <component-name> -
Répertoriez les composants installés :
onectl addon list -
Répertoriez les composants disponibles :
onectl addon catalog -
Désinstallez un composant :
onectl addon uninstall <component-name>
Gérer les utilisateurs RAM pour les composants
Certains composants nécessitent des autorisations RAM spécifiques pour accéder aux ressources Alibaba Cloud. Accordez les autorisations avant d'installer ces composants.
Remplacez <component-name> par le nom du composant.
-
Accordez des autorisations RAM pour un composant. Si le Secret
alibaba-addon-secretn'existe pas, onectl crée un nouvel utilisateur RAM et un nouveau Secret.onectl ram-user grant --addon <component-name>Exemple de résultat avec un nouvel utilisateur 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. -
Vérifiez les autorisations de l'utilisateur RAM :
onectl ram-user describe --detail -
Mettez à jour les autorisations de l'utilisateur RAM :
onectl ram-user update --addon <component-name> -
Révoquez les autorisations de l'utilisateur RAM :
onectl ram-user revoke --addon <component-name>