エージェントオペレータの最小設定
オペレータのすべての設定は、カスタムリソース定義(CRD)によって定義されたKubernetesネイティブの設定エンティティを使用することで処理されます。CRDはオペレータと共にデプロイされ、オペレータの設定エンティティの処理方法が定義されます。
Visual Studio CodeのKubernetes拡張機能などのツールは、クラスタ内でエンティティを正しい構文で作成するのに役立ちます。
完全なスキーマは、エージェントオペレータの設定に記載しています。本項では、必要な最小限の設定ついてのみ説明し、すべての設定は記載していません。
最小限の設定
最小限の設定では、3つのマニフェストが必要です。
1つ目は、標準のKubernetesのSecretにContrastサーバインスタンスへの認証に必要な接続キーを含めます。このSecretは、ClusterAgentConnectionエンティティと同じネームスペースにデプロイする必要があります。指定するエージェントキーは、エージェントキーの検索で確認できます。
apiVersion: v1 kind: Secret metadata: name: default-agent-connection-secret namespace: contrast-agent-operator type: Opaque stringData: apiKey: TODO serviceKey: TODO userName: TODO
2つ目は、ClusterAgentConnectionの設定エンティティです。ClusterAgentConnectionには、クラスタ内のエージェントのデフォルトの接続設定を指定し、接続の認証キーが含まれる前述のSecretをマップします。セキュリティ上、ClusterAgentConnectionエンティティは、オペレータを使用するのと同じネームスペースに配置する必要があります。この例では、デフォルトのネームスペース
contrast-agent-operator
がカスタマイズされていないことを前提にしています。apiVersion: agents.contrastsecurity.com/v1beta1 kind: ClusterAgentConnection metadata: name: default-agent-connection namespace: contrast-agent-operator spec: template: spec: url: https://app.contrastsecurity.com/Contrast apiKey: secretName: default-agent-connection-secret secretKey: apiKey serviceKey: secretName: default-agent-connection-secret secretKey: serviceKey userName: secretName: default-agent-connection-secret secretKey: userName
3つ目に必要なのは、AgentInjectorの設定エンティティです。AgentInjectorは、AgentInjector がデプロイされるネームスペース内で
metadata.labels
などのワークロードのラベルを使用して、自動でエージェントを組み込む対象となるワークロードを選択します。apiVersion: agents.contrastsecurity.com/v1beta1 kind: AgentInjector metadata: name: dotnet-hello-world namespace: default spec: type: dotnet-core selector: labels: - name: app value: dotnet-hello-world
このマニフェストの例では、Contrastエージェントオペレータは、デフォルトのネームスペースで
app = dotnet-hello-world
というラベルが付いているワークロード(Deployment、DeploymentConfigなど)にContrastの.NETエージェントを自動的に組み込みます。