kubeconfigファイルを作成します
kubeconfigファイルを使用して、Astra Control Serviceにクラスタを追加できます。追加するクラスタのタイプによっては、特定の手順を使用してクラスタ用のkubeconfigファイルを手動で作成しなければならない場合があります。
Amazon EKSクラスタ用のkubeconfigファイルを作成します
以下の手順に従って、Amazon EKSクラスタ用のkubeconfigファイルと永続的トークンシークレットを作成します。EKSでホストされるクラスタには、永続的なトークンシークレットが必要です。
-
Amazonのドキュメントの手順に従って、kubeconfigファイルを生成します。
-
次の手順でサービスアカウントを作成します。
-
という名前のサービスアカウントファイルを作成します
astracontrol-service-account.yaml
。必要に応じてサービスアカウント名を調整します。ネームスペース
kube-system
これらの手順では必須です。ここでサービスアカウント名を変更する場合は、次の手順で同じ変更を適用する必要があります。
astracontrol-service-account.yaml
+
-
-
サービスアカウントを適用します。
-
を作成します
ClusterRoleBinding
という名前のファイルですastracontrol-clusterrolebinding.yaml
。astracontrol-clusterrolebinding.yaml
-
クラスタロールバインドを適用します。
-
という名前のサービスアカウントトークンシークレットファイルを作成します
astracontrol-secret.yaml
。astracontrol-secret.yaml
-
トークンシークレットを適用します。
-
トークンシークレットを取得します。
-
を交換します
user
次の例に示すように、AWS EKS kubeconfigファイルのセクションでトークンを指定します。
Red Hat OpenShift Service on AWS(ROSA)クラスタ用のkubeconfigファイルを作成する
次の手順に従って、Red Hat OpenShift Service on AWS(ROSA)クラスタ用のkubeconfigファイルを作成します。
-
ROSAクラスタにログインします。
-
サービスアカウントを作成します。
-
クラスタロールを追加します。
-
次の例を使用して、サービスアカウントシークレットコンフィギュレーションファイルを作成します。
secret-astra-sa.yaml
-
シークレットを作成します。
-
作成したサービスアカウントを編集し、Astra Controlサービスアカウントのシークレット名を
secrets
セクション。 -
サービスアカウントのシークレットを一覧表示します(置き換えます)
<CONTEXT>
インストールに適したコンテキストを使用して、次の操作を行います。出力の末尾は次のようになります。
"secrets": [ { "name": "astracontrol-service-account-dockercfg-dvfcd"}, { "name": "secret-astracontrol-service-account"} ]
内の各要素のインデックス
secrets
アレイは0から始まります。上記の例では、のインデックスですastracontrol-service-account-dockercfg-dvfcd
は0、のインデックスですsecret-astracontrol-service-account
は1です。出力で、サービスアカウントシークレットのインデックス番号をメモします。このインデックス番号は次の手順で必要になります。 -
次のように kubeconfig を生成します。
-
を作成します
create-kubeconfig.sh
ファイル。交換してくださいTOKEN_INDEX
次のスクリプトの先頭に正しい値を入力します。create-kubeconfig.sh
-
コマンドをソースにし、 Kubernetes クラスタに適用します。
-
-
(オプション)クラスタにわかりやすい名前にコバーベキューの名前を変更します。
mv kubeconfig-sa YOUR_CLUSTER_NAME_kubeconfig
他のタイプのクラスタ用にkubeconfigファイルを作成します
以下の手順に従って、Rancher、Upstream Kubernetes、およびRed Hat OpenShiftクラスタ用に、制限付きまたは拡張されたロールkubeconfigファイルを作成します。
kubeconfigを使用して管理されるクラスタについては、必要に応じて、Astra Control Service用の制限された権限または拡張された権限管理者ロールを作成できます。
この手順を使用すると、次のいずれかのシナリオで環境を環境化する場合に、別のkubeconfigを作成できます。
-
管理対象のクラスタに対するAstra Controlの権限を制限する
-
複数のコンテキストを使用し、インストール時に設定されたデフォルトのAstra Control kubeconfigは使用できません。また、単一のコンテキストを持つ限定されたロールは環境では機能しません。
手順 の手順を実行する前に、管理するクラスタに次の情報があることを確認してください。
-
A "サポートされているバージョン" のkubectlがインストールされています。
-
Astra Control Serviceを使用して追加および管理するクラスタへのkubectlアクセス
この手順では、Astra Controlサービスを実行しているクラスタへのkubectlアクセスは必要ありません。 -
アクティブなコンテキストのクラスタ管理者の権限で管理するクラスタのアクティブなkubeconfigです
-
サービスアカウントを作成します。
-
という名前のサービスアカウントファイルを作成します
astracontrol-service-account.yaml
。astracontrol-service-account.yaml
-
サービスアカウントを適用します。
-
-
次のいずれかのクラスタロールを作成し、Astra Controlで管理するクラスタに必要な権限を割り当てます。
クラスタロールの制限このロールには、Astra Controlでクラスタを管理するために必要な最小限の権限が含まれています。
-
を作成します
ClusterRole
という名前のファイル。例:astra-admin-account.yaml
。astra-admin-account.yaml
-
(OpenShiftクラスタの場合のみ)
astra-admin-account.yaml
ファイル: -
クラスタロールを適用します。
-
-
サービスアカウントへのクラスタロールバインド用に、クラスタロールを作成します。
-
を作成します
ClusterRoleBinding
という名前のファイルですastracontrol-clusterrolebinding.yaml
。astracontrol-clusterrolebinding.yaml
-
クラスタロールバインドを適用します。
-
-
トークンシークレットを作成して適用します。
-
という名前のトークンシークレットファイルを作成します。
secret-astracontrol-service-account.yaml
。secret-astracontrol-service-account.yaml
-
トークンシークレットを適用します。
-
-
トークンシークレットの名前を
secrets
Array(次の例の最後の行):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
-
サービスアカウントのシークレットを一覧表示します(置き換えます)
<context>
インストールに適したコンテキストを使用して、次の操作を行います。出力の末尾は次のようになります。
"secrets": [ { "name": "astracontrol-service-account-dockercfg-48xhx"}, { "name": "secret-astracontrol-service-account"} ]
内の各要素のインデックス
secrets
アレイは0から始まります。上記の例では、のインデックスですastracontrol-service-account-dockercfg-48xhx
は0、のインデックスですsecret-astracontrol-service-account
は1です。出力で、サービスアカウントシークレットのインデックス番号をメモします。このインデックス番号は次の手順で必要になります。 -
次のように kubeconfig を生成します。
-
を作成します
create-kubeconfig.sh
ファイル。 -
交換してください
TOKEN_INDEX
次のスクリプトの先頭に正しい値を入力します。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
-
コマンドをソースにし、 Kubernetes クラスタに適用します。
-
-
(オプション)クラスタにわかりやすい名前にコバーベキューの名前を変更します。
mv kubeconfig-sa YOUR_CLUSTER_NAME_kubeconfig