Skip to main content
Tous les fournisseurs cloud
  • Amazon Web Services
  • Google Cloud
  • Microsoft Azure
  • Tous les fournisseurs cloud
La version française est une traduction automatique. La version anglaise prévaut sur la française en cas de divergence.

Créez un fichier kubeconfig

Contributeurs

Vous pouvez ajouter un cluster à Astra Control Service à l'aide d'un fichier kubeconfig. Selon le type de cluster à ajouter, vous devrez peut-être créer manuellement un fichier kubeconfig pour votre cluster en suivant des étapes spécifiques.

Créez un fichier kubeconfig pour les clusters Amazon EKS

Suivez ces instructions pour créer un fichier kubeconfig et un code secret de jeton permanent pour les clusters Amazon EKS. Un code secret de jeton permanent est requis pour les clusters hébergés dans EKS.

Étapes
  1. Suivez les instructions de la documentation Amazon pour générer un fichier kubeconfig :

  2. Créer un compte de service comme suit :

    1. Créez un fichier de compte de service appelé astracontrol-service-account.yaml.

      Ajustez le nom du compte de service si nécessaire. L'espace de noms kube-system est nécessaire pour ces étapes. Si vous modifiez le nom du compte de service ici, vous devez appliquer les mêmes modifications dans les étapes suivantes.

    astracontrol-service-account.yaml

    +

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: astra-admin-account
      namespace: kube-system
  3. Appliquer le compte de service :

    kubectl apply -f astracontrol-service-account.yaml
  4. Créer un ClusterRoleBinding fichier appelé astracontrol-clusterrolebinding.yaml.

    astracontrol-clusterrolebinding.yaml
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: astra-admin-binding
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: cluster-admin
    subjects:
    - kind: ServiceAccount
      name: astra-admin-account
      namespace: kube-system
  5. Appliquer la liaison de rôle de cluster :

    kubectl apply -f astracontrol-clusterrolebinding.yaml
  6. Créez un fichier secret de token de compte de service appelé astracontrol-secret.yaml.

    astracontrol-secret.yaml
    apiVersion: v1
    kind: Secret
    metadata:
      annotations:
        kubernetes.io/service-account.name: astra-admin-account
      name: astra-admin-account
      namespace: kube-system
    type: kubernetes.io/service-account-token
  7. Appliquer le secret de jeton :

    kubectl apply -f astracontrol-secret.yaml
  8. Récupérer le secret de jeton :

    kubectl get secret astra-admin-account -n kube-system -o jsonpath='{.data.token}' | base64 -d
  9. Remplacer l' user Section du fichier kubeconfig AWS EKS avec le jeton, comme illustré ci-dessous :

    user:
        token: k8s-aws-v1.aHR0cHM6Ly9zdHMudXMtd2VzdC0yLmFtYXpvbmF3cy5jb20vP0FjdGlvbj1HZXRDYWxsZXJJZGVudGl0eSZWZXJzaW9uPTIwMTEtMDYtMTUmWC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBM1JEWDdKU0haWU9LSEQ2SyUyRjIwMjMwNDAzJTJGdXMtd2VzdC0yJTJGc3RzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyMzA0MDNUMjA0MzQwWiZYLUFtei1FeHBpcmVzPTYwJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCUzQngtazhzLWF3cy1pZCZYLUFtei1TaWduYXR1cmU9YjU4ZWM0NzdiM2NkZGYxNGRhNzU4MGI2ZWQ2zY2NzI2YWIwM2UyNThjMjRhNTJjNmVhNjc4MTRlNjJkOTg2Mg

Créez un fichier kubeconfig pour les clusters Red Hat OpenShift Service sur AWS (ROSA)

Suivez ces instructions pour créer un fichier kubeconfig pour les clusters Red Hat OpenShift Service sur AWS (ROSA).

Étapes
  1. Connectez-vous au cluster ROSA.

  2. Créer un compte de service :

    oc create sa astracontrol-service-account
  3. Ajouter un rôle de cluster :

    oc adm policy add-cluster-role-to-user cluster-admin -z astracontrol-service-account
  4. À l'aide de l'exemple suivant, créez un fichier de configuration secret de compte de service :

    secret-astra-sa.yaml
    apiVersion: v1
    kind: Secret
    metadata:
      name: secret-astracontrol-service-account
      annotations:
        kubernetes.io/service-account.name: "astracontrol-service-account"
    type: kubernetes.io/service-account-token
  5. Créez le secret :

    oc create -f secret-astra-sa.yaml
  6. Modifiez le compte de service que vous avez créé et ajoutez le nom secret du compte de service Astra Control au secrets section :

    oc edit sa astracontrol-service-account
    apiVersion: v1
    imagePullSecrets:
    - name: astracontrol-service-account-dockercfg-dvfcd
    kind: ServiceAccount
    metadata:
      creationTimestamp: "2023-08-04T04:18:30Z"
      name: astracontrol-service-account
      namespace: default
      resourceVersion: "169770"
      uid: 965fa151-923f-4fbd-9289-30cad15998ac
    secrets:
    - name: astracontrol-service-account-dockercfg-dvfcd
    - name: secret-astracontrol-service-account ####ADD THIS ONLY####
  7. Indiquez les secrets du compte de service, en les remplaçant <CONTEXT> avec le contexte approprié pour votre installation :

    kubectl get serviceaccount astracontrol-service-account --context <CONTEXT> --namespace default -o json

    La fin de la sortie doit ressembler à ce qui suit :

    "secrets": [
    { "name": "astracontrol-service-account-dockercfg-dvfcd"},
    { "name": "secret-astracontrol-service-account"}
    ]

    Les indices pour chaque élément dans secrets la matrice commence par 0. Dans l'exemple ci-dessus, l'index de astracontrol-service-account-dockercfg-dvfcd serait 0 et l'index pour secret-astracontrol-service-account serait 1. Dans votre sortie, notez le numéro d'index du compte de service secret. Vous aurez besoin de ce numéro d'index à l'étape suivante.

  8. Générez le kubeconfig comme suit :

    1. Créer un create-kubeconfig.sh fichier. Remplacement TOKEN_INDEX au début du script suivant avec la valeur correcte.

      create-kubeconfig.sh
      # Update these to match your environment.
      # Replace TOKEN_INDEX with the correct value
      # from the output in the previous step. If you
      # didn't change anything else above, don't change
      # anything else here.
      
      SERVICE_ACCOUNT_NAME=astracontrol-service-account
      NAMESPACE=default
      NEW_CONTEXT=astracontrol
      KUBECONFIG_FILE='kubeconfig-sa'
      
      CONTEXT=$(kubectl config current-context)
      
      SECRET_NAME=$(kubectl get serviceaccount ${SERVICE_ACCOUNT_NAME} \
        --context ${CONTEXT} \
        --namespace ${NAMESPACE} \
        -o jsonpath='{.secrets[TOKEN_INDEX].name}')
      TOKEN_DATA=$(kubectl get secret ${SECRET_NAME} \
        --context ${CONTEXT} \
        --namespace ${NAMESPACE} \
        -o jsonpath='{.data.token}')
      
      TOKEN=$(echo ${TOKEN_DATA} | base64 -d)
      
      # Create dedicated kubeconfig
      # Create a full copy
      kubectl config view --raw > ${KUBECONFIG_FILE}.full.tmp
      
      # Switch working context to correct context
      kubectl --kubeconfig ${KUBECONFIG_FILE}.full.tmp config use-context ${CONTEXT}
      
      # Minify
      kubectl --kubeconfig ${KUBECONFIG_FILE}.full.tmp \
        config view --flatten --minify > ${KUBECONFIG_FILE}.tmp
      
      # Rename context
      kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \
        rename-context ${CONTEXT} ${NEW_CONTEXT}
      
      # Create token user
      kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \
        set-credentials ${CONTEXT}-${NAMESPACE}-token-user \
        --token ${TOKEN}
      
      # Set context to use token user
      kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \
        set-context ${NEW_CONTEXT} --user ${CONTEXT}-${NAMESPACE}-token-user
      
      # Set context to correct namespace
      kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \
        set-context ${NEW_CONTEXT} --namespace ${NAMESPACE}
      
      # Flatten/minify kubeconfig
      kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \
        view --flatten --minify > ${KUBECONFIG_FILE}
      
      # Remove tmp
      rm ${KUBECONFIG_FILE}.full.tmp
      rm ${KUBECONFIG_FILE}.tmp
    2. Source des commandes à appliquer à votre cluster Kubernetes.

      source create-kubeconfig.sh
  9. (Facultatif) Renommer le kubeconfig pour nommer votre cluster.

    mv kubeconfig-sa YOUR_CLUSTER_NAME_kubeconfig

Créez un fichier kubeconfig pour d'autres types de clusters

Suivez ces instructions pour créer un fichier kubeconfig de rôle limité ou étendu pour les clusters Rancher, Kubernetes en amont et Red Hat OpenShift.

Pour les clusters gérés à l'aide de kubeconfig, vous pouvez éventuellement créer une autorisation limitée ou un rôle d'administrateur d'autorisations étendues pour Astra Control Service.

Cette procédure vous aide à créer un kubeconfig distinct si l'un des scénarios suivants s'applique à votre environnement :

  • Vous souhaitez limiter les autorisations Astra Control sur les clusters qu'il gère

  • Vous utilisez plusieurs contextes et ne pouvez pas utiliser le kubeconfig Astra Control par défaut configuré lors de l'installation, sinon un rôle limité avec un seul contexte ne fonctionnera pas dans votre environnement

Avant de commencer

Assurez-vous que vous disposez des éléments suivants pour le cluster que vous souhaitez gérer avant d'effectuer la procédure suivante :

  • A "version prise en charge" de kubectl est installé.

  • Kubectl accès au cluster que vous envisagez d'ajouter et de gérer avec Astra Control Service

    Remarque Pour cette procédure, vous n'avez pas besoin d'un accès kubectl au cluster exécutant Astra Control Service.
  • Un kubeconfig actif pour le cluster que vous avez l'intention de gérer avec des droits d'administrateur de cluster pour le contexte actif

Étapes
  1. Créer un compte de service :

    1. Créez un fichier de compte de service appelé astracontrol-service-account.yaml.

      astracontrol-service-account.yaml
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: astracontrol-service-account
        namespace: default
    2. Appliquer le compte de service :

      kubectl apply -f astracontrol-service-account.yaml
  2. Créez l'un des rôles de cluster suivants avec des autorisations suffisantes pour qu'un cluster soit géré par Astra Control :

    Rôle limité du cluster

    Ce rôle contient les autorisations minimales nécessaires à la gestion d'un cluster par Astra Control :

    1. Créer un ClusterRole fichier appelé, par exemple, astra-admin-account.yaml.

      astra-admin-account.yaml
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRole
      metadata:
        name: astra-admin-account
      rules:
      
      # Get, List, Create, and Update all resources
      # Necessary to backup and restore all resources in an app
      - apiGroups:
        - '*'
        resources:
        - '*'
        verbs:
        - get
        - list
        - create
        - patch
      
      # Delete Resources
      # Necessary for in-place restore and AppMirror failover
      - apiGroups:
        - ""
        - apps
        - autoscaling
        - batch
        - crd.projectcalico.org
        - extensions
        - networking.k8s.io
        - policy
        - rbac.authorization.k8s.io
        - snapshot.storage.k8s.io
        - trident.netapp.io
        resources:
        - configmaps
        - cronjobs
        - daemonsets
        - deployments
        - horizontalpodautoscalers
        - ingresses
        - jobs
        - namespaces
        - networkpolicies
        - persistentvolumeclaims
        - poddisruptionbudgets
        - pods
        - podtemplates
        - replicasets
        - replicationcontrollers
        - replicationcontrollers/scale
        - rolebindings
        - roles
        - secrets
        - serviceaccounts
        - services
        - statefulsets
        - tridentmirrorrelationships
        - tridentsnapshotinfos
        - volumesnapshots
        - volumesnapshotcontents
        verbs:
        - delete
      
      # Watch resources
      # Necessary to monitor progress
      - apiGroups:
        - ""
        resources:
        - pods
        - replicationcontrollers
        - replicationcontrollers/scale
        verbs:
        - watch
      
      # Update resources
      - apiGroups:
        - ""
        - build.openshift.io
        - image.openshift.io
        resources:
        - builds/details
        - replicationcontrollers
        - replicationcontrollers/scale
        - imagestreams/layers
        - imagestreamtags
        - imagetags
        verbs:
        - update
    2. (Pour les clusters OpenShift uniquement) Ajouter les éléments suivants à la fin du astra-admin-account.yaml fichier :

      # OpenShift security
      - apiGroups:
        - security.openshift.io
        resources:
        - securitycontextconstraints
        verbs:
        - use
        - update
    3. Appliquer le rôle de cluster :

      kubectl apply -f astra-admin-account.yaml
    Rôle de cluster étendu

    Ce rôle contient des autorisations étendues pour qu'un cluster soit géré par Astra Control. Vous pouvez utiliser ce rôle si vous utilisez plusieurs contextes et que vous ne pouvez pas utiliser le kubeconfig Astra Control par défaut configuré lors de l'installation, ou si un rôle limité avec un seul contexte ne fonctionnera pas dans votre environnement :

    Remarque Les éléments suivants ClusterRole Les étapes constituent un exemple Kubernetes général. Pour des instructions spécifiques à votre environnement, reportez-vous à la documentation de votre distribution Kubernetes.
    1. Créer un ClusterRole fichier appelé, par exemple, astra-admin-account.yaml.

      astra-admin-account.yaml
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRole
      metadata:
        name: astra-admin-account
      rules:
      - apiGroups:
        - '*'
        resources:
        - '*'
        verbs:
        - '*'
      - nonResourceURLs:
        - '*'
        verbs:
        - '*'
    2. Appliquer le rôle de cluster :

      kubectl apply -f astra-admin-account.yaml
  3. Créer la liaison de rôle cluster pour le rôle cluster vers le compte de service :

    1. Créer un ClusterRoleBinding fichier appelé astracontrol-clusterrolebinding.yaml.

      astracontrol-clusterrolebinding.yaml
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRoleBinding
      metadata:
        name: astracontrol-admin
      roleRef:
        apiGroup: rbac.authorization.k8s.io
        kind: ClusterRole
        name: astra-admin-account
      subjects:
      - kind: ServiceAccount
        name: astracontrol-service-account
        namespace: default
    2. Appliquer la liaison de rôle de cluster :

      kubectl apply -f astracontrol-clusterrolebinding.yaml
  4. Créez et appliquez le secret de jeton :

    1. Créez un fichier secret de jeton appelé secret-astracontrol-service-account.yaml.

      secret-astracontrol-service-account.yaml
      apiVersion: v1
      kind: Secret
      metadata:
        name: secret-astracontrol-service-account
        namespace: default
        annotations:
          kubernetes.io/service-account.name: "astracontrol-service-account"
      type: kubernetes.io/service-account-token
    2. Appliquer le secret de jeton :

      kubectl apply -f secret-astracontrol-service-account.yaml
  5. Ajoutez le secret de jeton au compte de service en ajoutant son nom au secrets tableau (dernière ligne de l'exemple suivant) :

    kubectl edit sa astracontrol-service-account
    apiVersion: v1
    imagePullSecrets:
    - name: astracontrol-service-account-dockercfg-48xhx
    kind: ServiceAccount
    metadata:
      annotations:
        kubectl.kubernetes.io/last-applied-configuration: |
          {"apiVersion":"v1","kind":"ServiceAccount","metadata":{"annotations":{},"name":"astracontrol-service-account","namespace":"default"}}
      creationTimestamp: "2023-06-14T15:25:45Z"
      name: astracontrol-service-account
      namespace: default
      resourceVersion: "2767069"
      uid: 2ce068c4-810e-4a96-ada3-49cbf9ec3f89
    secrets:
    - name: astracontrol-service-account-dockercfg-48xhx
    - name: secret-astracontrol-service-account
  6. Indiquez les secrets du compte de service, en les remplaçant <context> avec le contexte approprié pour votre installation :

    kubectl get serviceaccount astracontrol-service-account --context <context> --namespace default -o json

    La fin de la sortie doit ressembler à ce qui suit :

    "secrets": [
    { "name": "astracontrol-service-account-dockercfg-48xhx"},
    { "name": "secret-astracontrol-service-account"}
    ]

    Les indices pour chaque élément dans secrets la matrice commence par 0. Dans l'exemple ci-dessus, l'index de astracontrol-service-account-dockercfg-48xhx serait 0 et l'index pour secret-astracontrol-service-account serait 1. Dans votre sortie, notez le numéro d'index du compte de service secret. Vous aurez besoin de ce numéro d'index à l'étape suivante.

  7. Générez le kubeconfig comme suit :

    1. Créer un create-kubeconfig.sh fichier.

    2. Remplacement TOKEN_INDEX au début du script suivant avec la valeur correcte.

      create-kubeconfig.sh
      # Update these to match your environment.
      # Replace TOKEN_INDEX with the correct value
      # from the output in the previous step. If you
      # didn't change anything else above, don't change
      # anything else here.
      
      SERVICE_ACCOUNT_NAME=astracontrol-service-account
      NAMESPACE=default
      NEW_CONTEXT=astracontrol
      KUBECONFIG_FILE='kubeconfig-sa'
      
      CONTEXT=$(kubectl config current-context)
      
      SECRET_NAME=$(kubectl get serviceaccount ${SERVICE_ACCOUNT_NAME} \
        --context ${CONTEXT} \
        --namespace ${NAMESPACE} \
        -o jsonpath='{.secrets[TOKEN_INDEX].name}')
      TOKEN_DATA=$(kubectl get secret ${SECRET_NAME} \
        --context ${CONTEXT} \
        --namespace ${NAMESPACE} \
        -o jsonpath='{.data.token}')
      
      TOKEN=$(echo ${TOKEN_DATA} | base64 -d)
      
      # Create dedicated kubeconfig
      # Create a full copy
      kubectl config view --raw > ${KUBECONFIG_FILE}.full.tmp
      
      # Switch working context to correct context
      kubectl --kubeconfig ${KUBECONFIG_FILE}.full.tmp config use-context ${CONTEXT}
      
      # Minify
      kubectl --kubeconfig ${KUBECONFIG_FILE}.full.tmp \
        config view --flatten --minify > ${KUBECONFIG_FILE}.tmp
      
      # Rename context
      kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \
        rename-context ${CONTEXT} ${NEW_CONTEXT}
      
      # Create token user
      kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \
        set-credentials ${CONTEXT}-${NAMESPACE}-token-user \
        --token ${TOKEN}
      
      # Set context to use token user
      kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \
        set-context ${NEW_CONTEXT} --user ${CONTEXT}-${NAMESPACE}-token-user
      
      # Set context to correct namespace
      kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \
        set-context ${NEW_CONTEXT} --namespace ${NAMESPACE}
      
      # Flatten/minify kubeconfig
      kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \
        view --flatten --minify > ${KUBECONFIG_FILE}
      
      # Remove tmp
      rm ${KUBECONFIG_FILE}.full.tmp
      rm ${KUBECONFIG_FILE}.tmp
    3. Source des commandes à appliquer à votre cluster Kubernetes.

      source create-kubeconfig.sh
  8. (Facultatif) Renommer le kubeconfig pour nommer votre cluster.

    mv kubeconfig-sa YOUR_CLUSTER_NAME_kubeconfig