Kubernetes パターンを使用したディスカバリー
ServiceNow ITOM ヴィジビリティ は、パターンを使用してKubernetes およびOpenShiftコンポーネントを検索し、それらを含むアプリケーションサービスを作成します。また、ディスカバリー はKubernetesイベントを検出し、動的なKubernetes環境を反映するようにCMDBを頻繁に更新します。
- Kubernetes パターンの Collect OpenShift info 拡張セクションでは、Kubernetes 展開における OpenShift コンポーネントを検出します。OpenShift ビルド構成拡張セクションは、ストアバージョン 1.0.53 から使用できます。
- Service Mesh 拡張では、サービスメッシュの詳細を検出します。この情報により、「Connects to::Connected」として表示されるサービス対サービス関係を作成するパターンが有効になります。サービスメッシュディスカバリーには、K8s (Kubernetes) クラスターに Istio を展開する必要があります。サービスメッシュ拡張セクションは、Kubernetes 拡張クラスで利用可能です。Madrid リリース以降を使用する Now Platform でサポートされています。
- Collect Container Repository と拡張のセクションでは、これらのレジストリー内のコンテナーレジストリーとイメージを検索します。
さらに、 ディスカバリー は Kubernetes イベントパターンを使用して、 Kubernetes コンポーネントのイベントを検出します。
ServiceNow Store の 1.0.68 リリースから、サービスマッピング は CI 関係を使用して、タグベースのディスカバリー中にアプリケーションサービスに Kubernetes コンポーネントを追加できるようになりました。
- Google Cloud Platform (GCP)– Kubernetes クラスターを取得します。
- Amazon AWS Cloud- Kubernetes クラスターを取得します。
- Microsoft Azure- Kubernetes クラスターを取得します。
サポートされているバージョン
| プラットフォーム/パターン | 検証済みバージョン |
|---|---|
| オンプレミス Kubernetes | 1.34 |
| Google Kubernetes Engine (GKE) | 1.34 |
| Azure Kubernetes Engine (AKS) | 1.34 |
| Amazon Elastic Kubernetes Service (EKS) | 1.34 |
| Kubernetes イベントパターン | 1.34 |
| OpenShift | 4.19.20 |
ストアでアプリを要求する
ServiceNow Store Web サイトにアクセスして利用可能なすべてのアプリを表示し、ストアにリクエストを送信する方法について確認してください。リリースされたすべてのアプリのリリースノート情報については、「ServiceNow Storeバージョン履歴のリリースノート」を参照してください。
必須条件
- ServiceNow Storeから最新のディスカバリーとサービスマッピングパターンアプリケーションを展開します。
- Kubernetes プラットフォームで、Kubernetes ディスカバリーを設定するパラメーターを検索します。
- kubeapi サーバーの URL を見つけます。
- Kubernetes プラットフォームで、次のコマンドを実行します。
kubectl cluster-info - 出力で、kubeapi サーバーの URL を示す行を見つけます。たとえば、Kubernetes コントロールプレーンは次のサイトで実行されます。
https://10.154.144.146:443
- Kubernetes プラットフォームで、次のコマンドを実行します。
- kubeapi サーバーの名前空間を見つけます。
- Kubernetes プラットフォームで、次のコマンドを実行します。
kubectl get namespaces - 出力で、名前空間を示す行を見つけます。例:
kube-system。
- Kubernetes プラットフォームで、次のコマンドを実行します。
- Kubernetes のユーザー名とパスワードを見つけます。
- Kubernetes プラットフォームで、次のコマンドを実行します。
kubectl config view - 出力で、ユーザー名とパスワードを見つけます。注:特定の環境で
kubectl config viewコマンドが予想される詳細を表示しない場合は、Kubernetes admin からサポートされているコマンドを使用してユーザー名とパスワードの詳細を取得します。
- Kubernetes プラットフォームで、次のコマンドを実行します。
- 適切な権限を持つ有効なベアラートークンを見つけます。
-
デフォルトのトークン名がわかっている場合は、
kubectl describe secret <default-token-token name>の形式のコマンドを使用します。例:
kubectl describe secret default-token-g6pwc。 - デフォルトのトークン名がわからない場合は、
kubectl describe secretコマンドを使用します。
-
- kubeapi サーバーの URL を見つけます。
- Kubernetesディスカバリーを成功させるために、MID サーバーから API サーバーに到達できることを確認します。
- Kubernetesプラットフォームで構成されたユーザーに、次の /api/v1 要素を実行するための GET 権限があることを確認します。
- https://<url>/api/v1/namespaces/
- https://<url>/api/v1/namespaces/<namespace>
- https://<url>/api/v1/namespaces/kube-system/endpoints/kube-controller-manager
- https://<url>/api/v1/services
- https://<url>/api/v1/pods
- https://<url>/api/v1/nodes
- https://<url> /api/v1/replicationcontrollers
- https://<url> /apis/networking.k8s.io/v1/ingresses
- https://<url> /apis/apps/v1/deployments
- https://<url> /apis/apps/v1/statefulsets
- https://<url> /apis/apps/v1/daemonsets
- https://<url> /apis/apps/v1/replicasets
- https://<url> /apis/batch/v1/cronjobs
- https://<url> /apis/batch/v1/jobs
- Kubernetes 展開のOpenShiftコンポーネントを検出するには、Kubernetes プラットフォームで構成されたユーザーに、次の /api/v1 要素を実行するための GET 権限があることを確認します。
- /apis/apps.openshift.io/v1/deploymentconfigs
- /apis/build.openshift.io/v1/buildconfigs
- /apis/route.openshift.io/v1/routes
- /apis/user.openshift.io/v1/groups
- /apis/user.openshift.io/v1/users
- /apis/project.openshift.io/v1/projects
- /apis/image.openshift.io/v1/images
- /apis/image.openshift.io/v1/imagestreams
サービスメッシュ情報を検出するには、次を実行します。- Istio を K8 クラスターに展開します。
- Prometheus URL を入力します。
- Prometheus を、Istio のメトリクスを取り除くように設定します。
- [Kubernetes 構成ファイルを取得 (Get Kubernetes Config Files)] 拡張をアクティブ化して、以下を実行します。
- 構成ファイルを検出する。
- 記録対象構成ファイルを作成する。
- その構成ファイルを、関係を含む作業負荷とサービスにマッピングする。
注:記録対象ファイルのコンテンツは、バージョン 1.0.92 以降の JSON 形式になっています。記録対象ファイルのコンテンツは、バージョン 1.0.91 以前では YAML 形式です。 - ServiceNow プラットフォームに Kubernetes 認証情報を作成します。
- Now Platformで、 .
- [新規] を選択します。
- Kubernetes 認証情報を選択します。
- フォームで、フィールドに入力します。
フィールド 説明 名前 この認証情報にわかりやすい一意の名前。 ユーザー名 この認証情報に関連付けられたユーザー名。先頭または末尾のスペースは避けてください。いずれかが検出されると、警告が表示されます。 使用すべき認証方法は、ユーザー名とパスワードまたはベアラートークンの 1 つのみです。両方を使用しないでください。
パスワード この認証情報に関連付けられたパスワード。 使用すべき認証方法は、ユーザー名とパスワードまたはベアラートークンの 1 つのみです。両方を使用しないでください。
ベアラートークン認証 このオプションは、ベアラートークンを使用した高度な認証を有効にします。 チェックボックスをオンにすると、[ベアラートークン] フィールドが表示されます。
ベアラートークン ディスカバリーKubernetesへのアクセス時に、詳細認証にベアラートークンを使用します。 ベアラートークンは、文字シーケンスをトークンとして使用する、BASE64 エンコード形式である必要があります。例:31ada4fd-adec-460c-809a-9e56ceb75269。
使用すべき認証方法は、ユーザー名とパスワードまたはベアラートークンの 1 つのみです。両方を使用しないでください。
認証情報エイリアス エイリアスは、Kubernetes 以外のデバイスおよびアプリケーションで Kubernetes 認証情報を使用するように構成されています。このエイリアスは、 Kubernetes 展開を検出するためのサーバーレスディスカバリースケジュールを定義するときにも使用されます。 - 南京錠アイコンを選択し、検索アイコンを選択します。
- [接続および資格情報エイリアス] フォームで、[新規] をクリックします。
- 認証情報エイリアスレコードの名前を指定します。
- エイリアスの属性を定義します。[Type] を [認証情報] に設定します。
- フォームヘッダーを選択して長押し (または右クリック) し、[ 保存] を選択し、[ 更新] を選択します。
- 接続および資格情報エイリアスフォームで、新たに追加したエイリアスを選択します。
[認証情報エイリアス] フィールドにエイリアスが表示されます。
- Kubernetes 認証情報フォームで、[更新] を選択します。
- Kubernetes パターンに対するサーバーレスディスカバリースケジュールを作成します。製品ドキュメントに記載されているとおりにサーバーなし実行パターンを作成して定義します。Kubernetes パターンで必要となるパラメーターを次のように設定します。
表 : 2. 実行パターン属性の構成 フィールド 説明 URL ホスト名、IP または FQDN、および Kubernetes API サーバーのポートの識別子。example_hostname:example_port または example_ip:example_port の形式を使用します。正しいプロトコル (HTTP または HTTPS) を URL に入力します。 名前空間 システムが Kubernetes ディスカバリー 構成で渡す名前空間。次のいずれかの値を入力します。 - 個別の名前空間:名前空間を入力してから「kube-system」を入力します。例:dev,kube-system
- デフォルト値:「default, kube-system」と入力します。
- マルチパイル名前空間:名前空間を入力し、カンマ (,) を使用して値を区切り、「kube-system」と入力します。例:automation,application,test,kube-system
- すべての名前空間:すべての名前空間を入力するには、アスタリスク (*) を使用します。
認証情報エイリアス 以前に作成した Kubernetes 認証情報に関連付けられたエイリアス。 クラスター名 <serviceaccountid><space><clustername> 形式での Kubernetes クラスターの名前。 プロバイダー クラウドプロバイダー: GCP 、 AWS 、または Azure。 cluster_resource_id クラスターリソース ID の例: - Azure Kubernetes clusters:リソース ID。
- AWS- クラスター ARN。
- GCP- クラスター・グローバル名。
- Kubernetes イベントパターンに対するサーバーレスディスカバリースケジュールを作成します。5 分または 10 分おきに実行するようにスケジュールを設定します。 注:パターンが初めて実行されると、event_timestamp が保存されます。後で、タイムスタンプに基づいてデルタイベントのみを収集します。パターンが頻繁に実行されるほど、 CMDB IRE の更新で必要になる回数は少なくなります。
ディスカバリースケジュールに対してサーバーなし実行パターンを作成し、それを Kubernetes イベントのパターンに割り当てます。「実行パターン属性の構成」で述べたように、Kubernetes パターンで必要となるパラメーターを構成します。
- 検出されたコンポーネントをサービスインスタンスに含めるには、サービスマッピングによるタグベースのディスカバリーで使用される CI 関係を有効にします。これらの CI 関係は、ServiceNow Store の 1.0.68 リリースから利用可能です。操作手順については「タグベースのディスカバリーの構成」を参照してください。
Kubernetes クラウドインフラストラクチャディスカバリーの前提条件
Google Cloud Platform (GCP) - Kubernetes クラスターを取得のパターンの場合は、次を実行します。
- ServiceNow インスタンスで、有効な認証情報と権限で Google Cloud Platform (GCP) サービスアカウントを設定します。
- GCP インフラストラクチャで、MID サーバー にすべてのクラウド API へのフルアクセスを設定します。[クラウド API アクセススコープ (Cloud API access scopes)] を [すべてのクラウド API へのフルアクセスを許可 (Allow full access to all Cloud APIs)] に設定します。MID サーバーインスタンスは、プロジェクトに固有のクラスターにのみアクセスできます。
sys_properties.listに移動し、次のプロパティを設定します。- sn_itom_pattern.k8s_midserver:有効な MID サーバー 名を指定します。
- sn_itom_pattern.k8s_create_schedule_enabled:値を true に設定します。注:sn_itom_pattern.k8s_create_schedule_enabled プロパティを有効にすると、クラウドクラスターのサーバーレススケジュールが自動的に作成されるため、手動スケジュールの必要がなくなります。既存の手動スケジュールがあり、それを自動スケジュールに変換する場合は、このプロパティを有効にします。手動スケジュールが更新されます。追加のスケジュールは作成されません。
- Google Cloud ディスカバリー を作成して実行します。 注:
ベアラートークンをフェッチするには、GKE Kubernetes スケジュールの実行中に gcloud コマンドを使用します。
gcloud config config-format="value(credential.access_token)"MID サーバー インスタンスで gcloud を設定すると、トークンをフェッチするための GKE クラスタへのアクセス権が付与されます。
Amazon Elastic Kubernetes Service (EKS) クラスターディスカバリーでは、次を実行します。
- ServiceNow インスタンスで、有効な管理アカウントの認証情報と権限で AWS サービスアカウントを設定します。
- Amazon Elastic Kubernetes Service (EKS)クラスターに、すべてのリソースへの読み取り専用アクセス権を持つクラスターロールがあることを確認します。
- クラスターロールと Kubernetes ユーザー間のクラスターロールバインディングを作成します。たとえば、読み取り専用ユーザーです。
- ポリシー EKSReadOnly で AWS IAM ロールを作成します。
- 次のいずれかの方法で、IAM ロールを Kubernetes ユーザーに関連付けます。
- クラスターで、aws-auth ConfigMap を編集します。
- 次のコマンドを実行します。
eksctl create iamidentitymapping --cluster yourClusterName --arnarn:aws:iam::yourAccountID:role/yourIAMRoleName --username read-only-user
-
Amazon Elastic Kubernetes Service (EKS) クラスターディスカバリーを次の 2 つのうちどちらかの方法で実行します。AWS コマンドラインインターフェイス (CLI) を使用する方法と、AWS CLI を使用しない方法です。まず、システムプロパティ sn_itom_pattern.k8s_aws_cli_to_generate_token を設定して、選択したモデルを使用します。このシステムプロパティはデフォルトで true に設定されています。
-
AWS CLI を使用してトークンを生成するには、このシステムプロパティを true に設定します。
-
想定ロールを使用してトークンを生成するには、このシステムプロパティを false に設定します。
-
AWS CLI を使用して Amazon Elastic Kubernetes Service (EKS) クラスターディスカバリーを実行します。
-
AWS CLI を構成して MID サーバー をセットアップします。AWS CLI 認証情報を構成すると、Amazon Elastic Kubernetes Service (EKS) クラスターへのアクセス権が付与されます。
注:システムにログインしているユーザーは、MID サーバー ユーザーと同じである必要があります。 -
ベアラートークンを生成するには、Amazon Elastic Kubernetes Service (EKS) スケジュールの実行中に AWS CLI コマンド
aws eks get-token --cluster-name<cluster_name>を使用します。MID サーバー インスタンスで AWS CLI ユーザー/ロールを構成すると、トークンを生成するための Amazon Elastic Kubernetes Service (EKS) クラスターへのアクセス権が付与されます。
-
-
AWS CLI を使用しないで Amazon Elastic Kubernetes Service (EKS) クラスターディスカバリーを実行します。
注:この機能は、2022 年 12 月の ディスカバリーとサービスマッピングパターン バージョン 1.0.96 からサポートされています。
詳細な手順については、次の KB を参照してください:「KB1182188:EKS cluster discovery using STS AssumeRoles (Without AWS CLI) (STS AssumeRoles を使用した EKS クラスターディスカバリー (AWS CLI なし))」。
-
sys_properties.listに移動し、次のプロパティを設定します。- sn_itom_pattern.k8s_midserver:有効な MID サーバー 名を指定します。
- sn_itom_pattern.k8s_create_schedule_enabled:値を true に設定します。注:sn_itom_pattern.k8s_create_schedule_enabled プロパティを有効にすると、クラウドクラスターのサーバーレススケジュールが自動的に作成されるため、手動スケジュールの必要がなくなります。既存の手動スケジュールがあり、それを自動スケジュールに変換する場合は、このプロパティを有効にします。手動スケジュールが更新されます。追加のスケジュールは作成されません。
-
AWS クラウドディスカバリースケジュールを作成して実行します。
Microsoft Azure Kubernetes Services (AKS) - Kubernetes クラスターディスカバリーでは、次を実行します。
- 最新の ディスカバリーとサービスマッピングパターン バージョンに更新します。
- ServiceNow インスタンスで、有効な Azure 認証情報と権限を持つ Azure サービスアカウントを構成します。
sys_properties.listに移動し、次のプロパティを設定します。- sn_itom_pattern.k8s_midserver:有効な MID サーバー 名を指定します。
- sn_itom_pattern.k8s_create_schedule_enabled:値を true に設定します。注:.sn_itom_pattern.k8s_create_schedule_enabled プロパティを有効にすると、クラウドクラスターのサーバーレススケジュールが自動的に作成されるため、手動スケジュールの必要がなくなります。既存の手動スケジュールがあり、それを自動スケジュールに変換する場合は、このプロパティを有効にします。手動スケジュールが更新されます。追加のスケジュールは作成されません。
- Kubernetes RBAC を使用するローカルアカウントがなく、パターンの効率を向上させたい場合は、 sn_itom_pattern.aks_fetch_local_ad_tokenプロパティを false に設定します。
- Azure クラウドディスカバリースケジュールを実行します。
-
クラスターアカウントタイプに応じて、ディスカバリーのスケジュールの MID サーバーを構成します。RBAC を使用するローカルアカウントがない場合は、この手順を無視できます。
クラスターアカウントタイプ ディスカバリー スケジュールの MID サーバー Kubernetes RBAC を使用した MS Entra ID 認証。
任意の MID サーバー。
Azure RBAC を使用した MS Entra ID 認証。
任意の MID サーバー。
Kubernetes RBAC を使用するローカルアカウント。
Azure コマンドラインインターフェイス (CLI) が構成された MID サーバーを選択します。Azure CLI 認証情報を構成すると、AKS クラスターへのアクセス権が付与されます。
AKS Kubernetes スケジュールの実行中にベアラートークンを取得するには、次の Azure CLI コマンドを使用します:
az aks get-credentials --name <cluster_name> --overwrite-existing --resource-group <resourceGroup_name> --file -。注:- システムにログインしているユーザーは、MID サーバー ユーザーと同じである必要があります。
- AKS クラスター ディスカバリー 構成の詳細については、Now Support ナレッジベースの記事「AKS クラスター ディスカバリー構成の詳細 [KB1220553]」を参照してください。
| プロパティ名 | プロパティの説明 | タイプ | デフォルト値 | |
|---|---|---|---|---|
|
sn_itom_pattern.manifest_digest_image_id | ブール |
false 注: このプロパティを true に設定してディスカバリーを実行する前に、すべてのDockerイメージレコードを削除して、重複レ |