Kubernetesをデバッグする
3779 ワード
既に知っているように、Kubernetesは簡単な技術ではありません.これは強力なクラウド技術ですが、問題をデバッグしたりトラブルシューティングしたり、いくつかの解決策をする方法を知ったりするのに時間がかかり、痛いかもしれません.
それは私があなたが2007年に見ることができるKubernetesについての技術的なスケッチの多くを作成した理由です"Understanding Kubernetes in a visual way" , 私はまた、新しいSketchNoteとオーディオコンテンツをミックスし、今私の新しいアイデアは、1つの問題/1つのニーズに焦点を当てた記事を公開することです.
必要
0 . a
1 . aを作成する
2 . a create 3 . aを作成する
作成したファイルを作成します
クラスタ内のKubectlコマンドを
今、私は自分のユーザとしての権利を持つことができます.
結論
それは私があなたが2007年に見ることができるKubernetesについての技術的なスケッチの多くを作成した理由です"Understanding Kubernetes in a visual way" , 私はまた、新しいSketchNoteとオーディオコンテンツをミックスし、今私の新しいアイデアは、1つの問題/1つのニーズに焦点を当てた記事を公開することです.
必要
この最初の記事では、一つの必要性に焦点を当てます.
通常、私がクラスタに接続しているとき、私はすべての権利(クラスタ管理者)を持っているので、どのようにKubernetesクラスタに接続することができますかServiceAccount
)?
なぜ?
あなたは多くの状況でこの必要性を持つことができます.
あなたが孤立してKubernetesクラスタ(またはseveralsクラスタ)を持っていると想像してくださいnamespace
(例:チームごとのプロジェクト)そして、クラスタ内のユーザはClusterRole
.
ユーザーの権限を追加または編集し、動作をテストする場合は、ユーザーとしてテストする必要があります.
何?
この記事では、KubernetesクラスタでKubectlコマンドを実行することが必要ですClusterRole
. ユーザーは、秘密鍵の読み取り専用の権利を持つことができますnamespace
.
どうやって?
このユースケースでは、既にRoles
and ClusterRoles
あなたのクラスタでは、あなたがそれらをテストしたいのでClusterRole
この設定をテストしたい場合は、次の手順を使用してClusterRole
:
あなたは多くの状況でこの必要性を持つことができます.
あなたが孤立してKubernetesクラスタ(またはseveralsクラスタ)を持っていると想像してください
namespace
(例:チームごとのプロジェクト)そして、クラスタ内のユーザはClusterRole
.ユーザーの権限を追加または編集し、動作をテストする場合は、ユーザーとしてテストする必要があります.
何?
この記事では、KubernetesクラスタでKubectlコマンドを実行することが必要ですClusterRole
. ユーザーは、秘密鍵の読み取り専用の権利を持つことができますnamespace
.
どうやって?
このユースケースでは、既にRoles
and ClusterRoles
あなたのクラスタでは、あなたがそれらをテストしたいのでClusterRole
この設定をテストしたい場合は、次の手順を使用してClusterRole
:
このユースケースでは、既に
Roles
and ClusterRoles
あなたのクラスタでは、あなたがそれらをテストしたいのでClusterRole
この設定をテストしたい場合は、次の手順を使用してClusterRole
:ClusterRole
その補助金はすべての秘密のアクセスを読むnamespaces
クラスター内apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: secret-reader
rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get", "watch", "list"]
ここでは、あなたがAをつくることができるステップのリストnamespace
, この名前空間にいくつかの権限を追加できるKubernetesリソースを展開し、Kubeconfigファイルを生成し、KuberNetesクラスタでコマンドを実行しますServiceAccount
(あなたがテストしたい権利がある).namespace
"テストNS "$ kubectl create ns test-ns
ServiceAccount
私のSAテストnamespace
$ kubectl create serviceaccount my-sa-test -n test-ns
RoleBinding
私のSAテストへのそのグラント秘密読者$ kubectl create rolebinding read-pods -n test-ns --clusterrole=secret-reader --serviceaccount=test-ns.my-sa-test
ServiceAccount
「私のSAテスト」$ export SECRET_NAME_SA=`kubectl get sa my-sa-test -n test-ns -ojsonpath="{ .secrets[0].name }"`
$ export TOKEN_SA=`kubectl get secret $SECRET_NAME_SA -n test-ns -ojsonpath='{.data.token}' | base64 -d`
$ kubectl config view --raw --minify > kubeconfig.txt
$ kubectl config unset users --kubeconfig=kubeconfig.txt
$ kubectl config set-credentials ${SECRET_NAME_SA} --kubeconfig=kubeconfig.txt --token=${TOKEN_SA}
$ kubectl config set-context --current --kubeconfig=kubeconfig.txt --user=${SECRET_NAME_SA}
ServiceAccount
$ kubectl --kubeconfig=kubeconfig.txt get secrets -n test-ns
または実行することができますkubectl
ServiceAccountトークンで直接コマンドを実行します(別のKubeConfigファイルを作成する必要はありません)$ export NAMESPACE_SA=test-ns
$ export TEAM_SA=my-sa-test
$ export TOKEN=$(kubectl get $(kubectl get secret -o name -n ${NAMESPACE_SA} |grep ${TEAM_SA} ) -o jsonpath='{.data.token}' -n ${NAMESPACE_SA} | base64 -d)
$ kubectl --token=${TOKEN} get ns
クール!今、私は自分のユーザとしての権利を持つことができます.
結論
私は、具体的な例とユースケースを使用して記事のこの新しいシリーズは、あなたのKubernetesの理解の旅に役立ちます願っています.
Reference
この問題について(Kubernetesをデバッグする), 我々は、より多くの情報をここで見つけました
https://dev.to/stack-labs/debugging-kubernetes-execute-kubectl-commands-with-a-service-account-1k44
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(Kubernetesをデバッグする), 我々は、より多くの情報をここで見つけました https://dev.to/stack-labs/debugging-kubernetes-execute-kubectl-commands-with-a-service-account-1k44テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol