Contrast EOPをKubernetesで構築する

  • 更新

動作確認済み環境

docker desktop 4.5.0 (Kubernetes v1.22.5)

リソース設定

以下は最低推奨設定となります。

  • cpu: 4
  • memory: 8.00GB
  • swap: 1GB

各ファイル、ディレクトリの説明

ファイルは以下の通り配置して下さい

 

作業ディレクトリ/

k8s-simple.yml

contrast-MM-DD-YYYY.lic

contrast.properties

mysql/

docker-compose.yml

docker/db/

my.cnf

 

  • k8s-simple.yml
    Kubernetes定義ファイルです。
  • mysql/
    MySQLコンテナのDocker定義が入ったディレクトリです。docker-compose.ymlとmy.cnfを含みます。
  • contrast-MM-DD-YYYY.lic
    EOPのライセンスファイルです。(ファイル名は環境ごとに異なります)
  • contrast.properties
    EOP設定ファイルです。適宜、編集、配置して下さい。

前準備

Contrastのライセンスファイルを取得

Contrast Hub (hub.contrastsecurity.com)より最新のライセンスファイル(例 contrast-11-30-2022.lic)を入手して下さい。

Kubernetesを有効化

docker desktopの設定画面でKubernetesを有効化してください。
Show system containersはオフのままでも動作します。

MySQLコンテナを稼働させます。

作業ディレクトリに移動します。

cd mysql/
docker-compose up -d
docker-compose ps

kubectlにSecretとConfigMapを登録

作業ディレクトリに戻ります。

# 今のSecretsの状態を確認
kubectl get secrets
# DBパスワードを登録このパスワードはmysql/docker-compose.yml内と合わせます。
kubectl create secret generic contrast-database --from-literal=password="password"
kubectl create secret generic contrast-license --from-file=license=contrast-12-31-2022.lic
# 登録後のSecretsを確認
kubectl get secrets
# 今のConfigMapを確認
kubectl get configmaps
kubectl create configmap contrast-config --from-file=./contrast.properties
# 登録された中身を確認
kubectl describe configmaps contrast-config

 

ファイルの設定を一部修正

PodのDB接続先のIPアドレスを修正

k8s-simple.yml 内のCONTRAST_JDBC_URLのIPアドレスをホストOSのIPアドレスに合わせて修正します。

サービスの起動

サービスを起動します

kubectl apply -f k8s-simple.yml

Podの状態を確認します

# Podのステータス確認
kubectl get pods
# Podの詳細確認
kubectl describe pods contrast-0
# Podのログを確認 (コンテナIDはinit-migrations、init-agents、contrastとかです。describeの結果で確認できます)
# エラーが起きた場合はこのログで該当する処理のコンテナIDを指定して、エラー内容を確認してください。
kubectl logs -f --timestamps=true contrast-0 -c <コンテナID>

もしも、PodがPendingのままだった場合は、docker desktopの設定のリソースのメモリを大きくしてみてください。
数分で以下のようになったらOKです。

NAME         READY   STATUS    RESTARTS        AGE
contrast-0   1/1     Running   2 (5m16s ago)   9m22s

もしもPodがPendingのままで、PersistentVolumeClaimのエラーメッセージが出ている場合は
以下のコマンドで、pvcとpvの状態を確認してください。

kubectl get pvc,pv

PersistentVolumeがresource not foundとなっている場合は、回避方法の手順を実行してみてください。

 

接続

SuperAdminアカウントとEOPセットアップドキュメント記載のパスワードでログインしてみてください。

http://<ホスト名>:30000/Contrast

30000番ポートはk8s-simple.yml内で変更可能です。(30000〜32767の範囲で)

以上で構築は完了です。Contrast EOPの各ページを開いて動作を確認して下さい。

 

 

PersistentVolumeが作成されない場合の回避手順

前準備

各ファイルの設定を一部修正

Persistent Volumeのhostpathを自身の環境に合わせて修正します。

pv-data.ymlpv-agents.ymlspec.hostPath.pathを権限のあるディレクトリパスに変更します。
pv-data.yml

  hostPath:
    path: /Users/turbou/Documents/git/ContrastSecurity/demo/teamserver_k8s/k8s/data # ここです。
    type: DirectoryOrCreate

pv-agents.yml

  hostPath:
    path: /Users/turbou/Documents/git/ContrastSecurity/demo/teamserver_k8s/k8s/data/agents # ここです。
    type: DirectoryOrCreate

 

PersistentVolumeを手動で作成する。

# PersistentVolumeの作成
kubectl apply -f pv-data.yml
kubectl apply -f pv-agents.yml

 

PersistentVolumeClaimを手動で作成する。

# PersistentVolumeClaimの作成
kubectl apply -f pvc-data.yml
kubectl apply -f pvc-agents.yml

 

確認

kubectl get pvc,pv

 

サービスの起動

サービスの起動

VolumeClaimTemplateの定義のないk8s-simple_without_pv.ymlを実行します。

kubectl apply -f k8s-simple_without_pv.yml

 

 

 

この記事は役に立ちましたか?

0人中0人がこの記事が役に立ったと言っています

他にご質問がございましたら、リクエストを送信してください