Kubernetes & ServiceAccount

1634 ワード

ServiceAccount
各namespaceの下にdefaultというデフォルトのServiceAccountオブジェクトがあります.このServiceAccountには、VolumeのようにPodにマウントできるTokensという名前のSecretがあります.Podが起動すると、このSecretはPodの指定されたディレクトリの下に自動的にマウントされ、PodのプロセスがAPI Serverにアクセスするときのアイデンティティ認証プロセスの完了を支援するために使用されます.
Podが定義時にspec.serviceを指定していない場合.AccountNameプロパティでは、同じnamespaceでデフォルトのServiceAccountが使用されている「Default」として自動的に割り当てられます.Podでdefault以外のServiceAccountを使用する必要がある場合は、定義時に次のように指定する必要があります.
 apiVersion:v1
    kind:Pod
    metadata:
        name:mypod
    spec:
        containers:
        - name:mycontainer
          image:
        serviceAccountName:myserviceaccount

Secrets
secretが作成されると、次の3つの方法で使用できます.
  • Podの作成時に、PodにServiceAccountを指定することによって、このSecretが自動的に使用される.
  • は、SecretをPodにマウントすることによって使用される.Mount方式でSecretをマウントする場合、ContainerのSecretの「data」ドメインの各ドメインのkey値がディレクトリ内のファイルとなり、Value値がBASE 64で符号化されて対応するファイルに格納される.
  • Dockerミラーはダウンロード時に使用し、Podのspec.ImagePullSecretsを指定して参照します.

  • Usage
    データベースのユーザー名やパスワードなど、他のシステムの機密情報をSecretで保管し、ContainerにMountでマウントし、ディレクトリ内のファイルにアクセスすることで機密情報を取得できます.PodがAPIサーバによって作成されると、APIサーバは、そのPodが参照するSecretが存在するかどうかを検証しません.このPodがスケジューリングされると、KubeletはSecretの値を取得しようとします.Secretが存在しないか、API Serverに一時的に接続できない場合、kubeletは一定の時間間隔で定期的にこのSecretを取得し、Podが起動していない理由を説明するためにEventを送信します.SecretがPodによって取得されると、KubeletはSecretのVolumeを作成し、Mountに含める.すべてのVolumeがMountされると、PodのContainerが起動します.クbeletがPodでcontainerを起動すると、ContainerとSecretに関連するVolumeは、Secret自体が変更されても変更されません.更新されたSecretを使用するには、古いPodを削除し、新しいPodを再作成する必要があります.そのため、Secretを更新するプロセスは、新しいImageを導入するのと同じです.
    リファレンス
    『Kubernetes権威ガイド』