Skip to main content
Tutti i cloud provider
  • Amazon Web Services
  • Google Cloud
  • Microsoft Azure
  • Tutti i cloud provider
La versione in lingua italiana fornita proviene da una traduzione automatica. Per eventuali incoerenze, fare riferimento alla versione in lingua inglese.

Creare un file kubeconfig

Collaboratori

È possibile aggiungere un cluster ad Astra Control Service utilizzando un file kubeconfig. A seconda del tipo di cluster che si desidera aggiungere, potrebbe essere necessario creare manualmente un file kubeconfig per il cluster utilizzando passaggi specifici.

Creare un file kubeconfig per i cluster Amazon EKS

Segui queste istruzioni per creare un file kubeconfig e un token secret permanente per i cluster Amazon EKS. Per i cluster ospitati in EKS è necessario un token secret permanente.

Fasi
  1. Seguire le istruzioni nella documentazione di Amazon per generare un file kubeconfig:

  2. Creare un account di servizio come segue:

    1. Creare un file di account del servizio denominato astracontrol-service-account.yaml.

      Modificare il nome dell'account di servizio in base alle necessità. Lo spazio dei nomi kube-system è necessario per questi passaggi. Se si modifica il nome dell'account di servizio, è necessario apportare le stesse modifiche nei seguenti passaggi.

    astracontrol-service-account.yaml

    +

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: astra-admin-account
      namespace: kube-system
  3. Applicare l'account del servizio:

    kubectl apply -f astracontrol-service-account.yaml
  4. Creare un ClusterRoleBinding file chiamato 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. Applicare l'associazione del ruolo del cluster:

    kubectl apply -f astracontrol-clusterrolebinding.yaml
  6. Creare un file token secret dell'account di servizio chiamato 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. Applicare il token secret:

    kubectl apply -f astracontrol-secret.yaml
  8. Recuperare il token secret:

    kubectl get secret astra-admin-account -n kube-system -o jsonpath='{.data.token}' | base64 -d
  9. Sostituire user Sezione del file kubeconfig AWS EKS con il token, come mostrato nell'esempio seguente:

    user:
        token: k8s-aws-v1.aHR0cHM6Ly9zdHMudXMtd2VzdC0yLmFtYXpvbmF3cy5jb20vP0FjdGlvbj1HZXRDYWxsZXJJZGVudGl0eSZWZXJzaW9uPTIwMTEtMDYtMTUmWC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBM1JEWDdKU0haWU9LSEQ2SyUyRjIwMjMwNDAzJTJGdXMtd2VzdC0yJTJGc3RzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyMzA0MDNUMjA0MzQwWiZYLUFtei1FeHBpcmVzPTYwJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCUzQngtazhzLWF3cy1pZCZYLUFtei1TaWduYXR1cmU9YjU4ZWM0NzdiM2NkZGYxNGRhNzU4MGI2ZWQ2zY2NzI2YWIwM2UyNThjMjRhNTJjNmVhNjc4MTRlNjJkOTg2Mg

Creare un file kubeconfig per Red Hat OpenShift Service su cluster AWS (ROSA)

Segui queste istruzioni per creare un file kubeconfig per Red Hat OpenShift Service su cluster AWS (ROSA).

Fasi
  1. Accedere al cluster ROSA.

  2. Creare un account di servizio:

    oc create sa astracontrol-service-account
  3. Aggiungere un ruolo cluster:

    oc adm policy add-cluster-role-to-user cluster-admin -z astracontrol-service-account
  4. Utilizzando l'esempio seguente, creare un file di configurazione segreto dell'account di servizio:

    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. Creare il segreto:

    oc create -f secret-astra-sa.yaml
  6. Modificare l'account di servizio creato e aggiungere il nome segreto dell'account del servizio Astra Control a. secrets sezione:

    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. Elencare i segreti dell'account di servizio, sostituendo <CONTEXT> con il contesto corretto per l'installazione:

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

    La fine dell'output dovrebbe essere simile a quanto segue:

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

    Gli indici di ciascun elemento in secrets l'array inizia con 0. Nell'esempio precedente, l'indice per astracontrol-service-account-dockercfg-dvfcd sarebbe 0 e l'indice per secret-astracontrol-service-account sarebbe 1. Nell'output, annotare il numero dell'indice per il segreto dell'account del servizio. Questo numero di indice sarà necessario nella fase successiva.

  8. Generare il kubeconfig come segue:

    1. Creare un create-kubeconfig.sh file. Sostituire TOKEN_INDEX all'inizio del seguente script con il valore corretto.

      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. Eseguire la sorgente dei comandi per applicarli al cluster Kubernetes.

      source create-kubeconfig.sh
  9. (Facoltativo) rinominare il kubeconfig con un nome significativo per il cluster.

    mv kubeconfig-sa YOUR_CLUSTER_NAME_kubeconfig

Creare un file kubeconfig per altri tipi di cluster

Segui queste istruzioni per creare un file kubeconfig con ruolo limitato o esteso per i cluster Rancher, Upstream Kubernetes e Red Hat OpenShift.

Per i cluster gestiti utilizzando kubeconfig, è possibile creare un'autorizzazione limitata o un ruolo di amministratore di autorizzazioni esteso per Astra Control Service.

Questa procedura consente di creare una configurazione separata se uno dei seguenti scenari si applica al proprio ambiente:

  • Si desidera limitare le autorizzazioni di Astra Control sui cluster gestiti

  • Si utilizzano più contesti e non è possibile utilizzare il kubeconfig di Astra Control predefinito configurato durante l'installazione oppure un ruolo limitato con un singolo contesto non funziona nell'ambiente

Prima di iniziare

Prima di completare la procedura, assicurarsi di disporre dei seguenti elementi per il cluster che si desidera gestire:

  • R "versione supportata" di kubectl è installato.

  • Kubectl accesso al cluster che si intende aggiungere e gestire con Astra Control Service

    Nota Per questa procedura, non è necessario l'accesso kubectl al cluster che esegue Astra Control Service.
  • Un kubeconfig attivo per il cluster che si intende gestire con i diritti di amministratore del cluster per il contesto attivo

Fasi
  1. Creare un account di servizio:

    1. Creare un file di account del servizio denominato astracontrol-service-account.yaml.

      astracontrol-service-account.yaml
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: astracontrol-service-account
        namespace: default
    2. Applicare l'account del servizio:

      kubectl apply -f astracontrol-service-account.yaml
  2. Creare uno dei seguenti ruoli del cluster con autorizzazioni sufficienti per la gestione di un cluster da parte di Astra Control:

    Ruolo cluster limitato

    Questo ruolo contiene le autorizzazioni minime necessarie per gestire un cluster da Astra Control:

    1. Creare un ClusterRole file chiamato, ad esempio, 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. (Solo per i cluster OpenShift) aggiungere quanto segue alla fine di astra-admin-account.yaml file:

      # OpenShift security
      - apiGroups:
        - security.openshift.io
        resources:
        - securitycontextconstraints
        verbs:
        - use
        - update
    3. Applicare il ruolo del cluster:

      kubectl apply -f astra-admin-account.yaml
    Ruolo cluster esteso

    Questo ruolo contiene autorizzazioni estese per un cluster da gestire con Astra Control. È possibile utilizzare questo ruolo se si utilizzano più contesti e non è possibile utilizzare il kubeconfig di Astra Control predefinito configurato durante l'installazione oppure se un ruolo limitato con un singolo contesto non funziona nell'ambiente:

    Nota Quanto segue ClusterRole I passaggi sono un esempio generale di Kubernetes. Consultare la documentazione della distribuzione Kubernetes per istruzioni specifiche sull'ambiente in uso.
    1. Creare un ClusterRole file chiamato, ad esempio, 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. Applicare il ruolo del cluster:

      kubectl apply -f astra-admin-account.yaml
  3. Creare l'associazione del ruolo del cluster all'account del servizio per il ruolo del cluster:

    1. Creare un ClusterRoleBinding file chiamato 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. Applicare l'associazione del ruolo del cluster:

      kubectl apply -f astracontrol-clusterrolebinding.yaml
  4. Creare e applicare il token secret:

    1. Creare un file token secret chiamato 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. Applicare il token secret:

      kubectl apply -f secret-astracontrol-service-account.yaml
  5. Aggiungere il token secret all'account del servizio aggiungendo il nome a secrets array (l'ultima riga dell'esempio seguente):

    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. Elencare i segreti dell'account di servizio, sostituendo <context> con il contesto corretto per l'installazione:

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

    La fine dell'output dovrebbe essere simile a quanto segue:

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

    Gli indici di ciascun elemento in secrets l'array inizia con 0. Nell'esempio precedente, l'indice per astracontrol-service-account-dockercfg-48xhx sarebbe 0 e l'indice per secret-astracontrol-service-account sarebbe 1. Nell'output, annotare il numero dell'indice per il segreto dell'account del servizio. Questo numero di indice è necessario nel passaggio successivo.

  7. Generare il kubeconfig come segue:

    1. Creare un create-kubeconfig.sh file.

    2. Sostituire TOKEN_INDEX all'inizio del seguente script con il valore corretto.

      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. Eseguire la sorgente dei comandi per applicarli al cluster Kubernetes.

      source create-kubeconfig.sh
  8. (Facoltativo) rinominare il kubeconfig con un nome significativo per il cluster.

    mv kubeconfig-sa YOUR_CLUSTER_NAME_kubeconfig