Skip to main content
Alle Cloud-Provider
  • Amazon Web Services
  • Google Cloud
  • Microsoft Azure
  • Alle Cloud-Provider
Die deutsche Sprachversion wurde als Serviceleistung für Sie durch maschinelle Übersetzung erstellt. Bei eventuellen Unstimmigkeiten hat die englische Sprachversion Vorrang.

Erstellen Sie eine kubeconfig-Datei

Beitragende

Sie können dem Astra Control Service ein Cluster mithilfe einer kubeconfig-Datei hinzufügen. Je nach dem Typ des Clusters, den Sie hinzufügen möchten, müssen Sie möglicherweise manuell eine kubeconfig-Datei für Ihr Cluster mithilfe bestimmter Schritte erstellen.

Erstellen Sie eine kubeconfig-Datei für Amazon EKS-Cluster

Befolgen Sie diese Anweisungen, um eine kubeconfig-Datei und ein permanentes Token-Geheimnis für Amazon EKS-Cluster zu erstellen. Für Cluster, die in EKS gehostet werden, ist ein permanenter Tokenschlüssel erforderlich.

Schritte
  1. Befolgen Sie die Anweisungen in der Amazon-Dokumentation, um eine kubeconfig-Datei zu erstellen:

  2. Erstellen Sie ein Service-Konto wie folgt:

    1. Erstellen Sie eine Dienstkontendatei mit dem Namen astracontrol-service-account.yaml.

      Passen Sie den Namen des Servicekontos nach Bedarf an. Der Namespace kube-system Ist für diese Schritte erforderlich. Wenn Sie hier den Namen des Servicekontos ändern, sollten Sie die gleichen Änderungen in den folgenden Schritten anwenden.

    astracontrol-service-account.yaml

    +

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: astra-admin-account
      namespace: kube-system
  3. Wenden Sie das Servicekonto an:

    kubectl apply -f astracontrol-service-account.yaml
  4. Erstellen Sie ein ClusterRoleBinding Datei aufgerufen 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. Wenden Sie die Bindung der Cluster-Rolle an:

    kubectl apply -f astracontrol-clusterrolebinding.yaml
  6. Erstellen Sie eine Geheimdatei für das Dienstkonto-Token mit dem Namen 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. Wenden Sie den Token-Schlüssel an:

    kubectl apply -f astracontrol-secret.yaml
  8. Rufen Sie den Token-Schlüssel ab:

    kubectl get secret astra-admin-account -n kube-system -o jsonpath='{.data.token}' | base64 -d
  9. Ersetzen Sie den user Abschnitt der AWS EKS kubeconfig-Datei mit dem Token, wie im folgenden Beispiel gezeigt:

    user:
        token: k8s-aws-v1.aHR0cHM6Ly9zdHMudXMtd2VzdC0yLmFtYXpvbmF3cy5jb20vP0FjdGlvbj1HZXRDYWxsZXJJZGVudGl0eSZWZXJzaW9uPTIwMTEtMDYtMTUmWC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBM1JEWDdKU0haWU9LSEQ2SyUyRjIwMjMwNDAzJTJGdXMtd2VzdC0yJTJGc3RzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyMzA0MDNUMjA0MzQwWiZYLUFtei1FeHBpcmVzPTYwJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCUzQngtazhzLWF3cy1pZCZYLUFtei1TaWduYXR1cmU9YjU4ZWM0NzdiM2NkZGYxNGRhNzU4MGI2ZWQ2zY2NzI2YWIwM2UyNThjMjRhNTJjNmVhNjc4MTRlNjJkOTg2Mg

Erstellen Sie eine kubeconfig-Datei für Red hat OpenShift Service on AWS (ROSA) Cluster

Befolgen Sie diese Anweisungen, um eine kubeconfig-Datei für Red hat OpenShift Service on AWS (ROSA)-Cluster zu erstellen.

Schritte
  1. Melden Sie sich beim ROSA-Cluster an.

  2. Service-Konto erstellen:

    oc create sa astracontrol-service-account
  3. Cluster-Rolle hinzufügen:

    oc adm policy add-cluster-role-to-user cluster-admin -z astracontrol-service-account
  4. Erstellen Sie mithilfe des folgenden Beispiels eine geheime Konfigurationsdatei für das Dienstkonto:

    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. Erstellen Sie das Geheimnis:

    oc create -f secret-astra-sa.yaml
  6. Bearbeiten Sie das von Ihnen erstellte Dienstkonto, und fügen Sie dem den geheimen Namen des Astra Control-Dienstkontos hinzu secrets Abschnitt:

    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. Listen Sie die Geheimnisse des Dienstkontos auf, ersetzen Sie <CONTEXT> Mit dem richtigen Kontext für Ihre Installation:

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

    Das Ende der Ausgabe sollte wie folgt aussehen:

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

    Die Indizes für jedes Element im secrets Array beginnt mit 0. Im obigen Beispiel der Index für astracontrol-service-account-dockercfg-dvfcd Wäre 0 und der Index für secret-astracontrol-service-account Sind es 1. Notieren Sie sich in Ihrer Ausgabe die Indexnummer für den Geheimschlüssel des Dienstkontos. Diese Indexnummer benötigen Sie im nächsten Schritt.

  8. Erzeugen Sie den kubeconfig wie folgt:

    1. Erstellen Sie ein create-kubeconfig.sh Datei: Austausch TOKEN_INDEX Am Anfang des folgenden Skripts mit dem korrekten Wert.

      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. Geben Sie die Befehle an, um sie auf Ihren Kubernetes-Cluster anzuwenden.

      source create-kubeconfig.sh
  9. (Optional) Umbenennen Sie die kubeconfig auf einen aussagekräftigen Namen für Ihr Cluster.

    mv kubeconfig-sa YOUR_CLUSTER_NAME_kubeconfig

Erstellen Sie eine kubeconfig-Datei für andere Cluster-Typen

Befolgen Sie diese Anweisungen, um eine begrenzte oder erweiterte Kubeconfig-Datei für Rancher-, Upstream-Kubernetes- und Red hat OpenShift-Cluster zu erstellen.

Für Cluster, die mit kubeconfig gemanagt werden, können Sie optional eine Administratorrolle mit eingeschränkter Berechtigung oder erweiterten Berechtigungen für Astra Control Service erstellen.

Dieses Verfahren hilft Ihnen, ein separates kubeconfig zu erstellen, wenn eines der folgenden Szenarien auf Ihre Umgebung zutrifft:

  • Sie möchten die Astra Control-Berechtigungen auf die Cluster beschränken, die sie verwaltet

  • Sie verwenden mehrere Kontexte und können nicht den Standard Astra Control kubeconfig verwenden, der während der Installation konfiguriert wurde, oder eine eingeschränkte Rolle mit einem einzelnen Kontext funktioniert nicht in Ihrer Umgebung

Bevor Sie beginnen

Stellen Sie sicher, dass Sie für den Cluster, den Sie verwalten möchten, vor dem Ausführen der Schritte des Verfahrens Folgendes haben:

  • A "Unterstützte Version" Von kubectl ist installiert.

  • Kubectl Zugriff auf den Cluster, den Sie mit Astra Control Service hinzufügen und managen möchten

    Hinweis Für dieses Verfahren benötigen Sie keinen kubectl-Zugriff auf den Cluster, auf dem Astra Control Service ausgeführt wird.
  • Ein aktiver kubeconfig für den Cluster, den Sie mit Clusteradministratorrechten für den aktiven Kontext verwalten möchten

Schritte
  1. Service-Konto erstellen:

    1. Erstellen Sie eine Dienstkontendatei mit dem Namen astracontrol-service-account.yaml.

      astracontrol-service-account.yaml
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: astracontrol-service-account
        namespace: default
    2. Wenden Sie das Servicekonto an:

      kubectl apply -f astracontrol-service-account.yaml
  2. Erstellen Sie eine der folgenden Clusterrollen mit ausreichenden Berechtigungen für ein Cluster, das von Astra Control gemanagt werden kann:

    Eingeschränkte Cluster-Rolle

    Diese Rolle enthält die Mindestberechtigungen, die für das Management eines Clusters durch Astra Control erforderlich sind:

    1. Erstellen Sie ein ClusterRole Datei mit dem Namen, z. B. 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. (Nur für OpenShift-Cluster) Anhängen Sie am Ende des an astra-admin-account.yaml Datei:

      # OpenShift security
      - apiGroups:
        - security.openshift.io
        resources:
        - securitycontextconstraints
        verbs:
        - use
        - update
    3. Wenden Sie die Cluster-Rolle an:

      kubectl apply -f astra-admin-account.yaml
    Erweiterte Cluster-Rolle

    Diese Rolle enthält erweiterte Berechtigungen für ein Cluster, das von Astra Control gemanagt werden kann. Sie können diese Rolle verwenden, wenn Sie mehrere Kontexte verwenden und nicht den während der Installation konfigurierten Astra Control kubeconfig verwenden können oder eine eingeschränkte Rolle mit einem einzelnen Kontext in Ihrer Umgebung nicht funktioniert:

    Hinweis Im Folgenden ClusterRole Schritte sind ein allgemeines Kubernetes-Beispiel. Anweisungen zu Ihrer spezifischen Umgebung finden Sie in der Dokumentation zur Kubernetes-Distribution.
    1. Erstellen Sie ein ClusterRole Datei mit dem Namen, z. B. 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. Wenden Sie die Cluster-Rolle an:

      kubectl apply -f astra-admin-account.yaml
  3. Erstellen Sie die Cluster-Rolle, die für die Cluster-Rolle an das Service-Konto gebunden ist:

    1. Erstellen Sie ein ClusterRoleBinding Datei aufgerufen 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. Wenden Sie die Bindung der Cluster-Rolle an:

      kubectl apply -f astracontrol-clusterrolebinding.yaml
  4. Erstellen und Anwenden des Token-Geheimnisses:

    1. Erstellen Sie eine Geheimdatei mit dem Namen Token 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. Wenden Sie den Token-Schlüssel an:

      kubectl apply -f secret-astracontrol-service-account.yaml
  5. Fügen Sie dem Dienstkonto den Token-Schlüssel hinzu, indem Sie den Namen dem hinzufügen secrets Array (die letzte Zeile im folgenden Beispiel):

    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. Listen Sie die Geheimnisse des Dienstkontos auf, ersetzen Sie <context> Mit dem richtigen Kontext für Ihre Installation:

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

    Das Ende der Ausgabe sollte wie folgt aussehen:

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

    Die Indizes für jedes Element im secrets Array beginnt mit 0. Im obigen Beispiel der Index für astracontrol-service-account-dockercfg-48xhx Wäre 0 und der Index für secret-astracontrol-service-account Sind es 1. Notieren Sie sich in Ihrer Ausgabe die Indexnummer für den Geheimschlüssel des Dienstkontos. Im nächsten Schritt benötigen Sie diese Indexnummer.

  7. Erzeugen Sie den kubeconfig wie folgt:

    1. Erstellen Sie ein create-kubeconfig.sh Datei:

    2. Austausch TOKEN_INDEX Am Anfang des folgenden Skripts mit dem korrekten Wert.

      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. Geben Sie die Befehle an, um sie auf Ihren Kubernetes-Cluster anzuwenden.

      source create-kubeconfig.sh
  8. (Optional) Umbenennen Sie die kubeconfig auf einen aussagekräftigen Namen für Ihr Cluster.

    mv kubeconfig-sa YOUR_CLUSTER_NAME_kubeconfig