本ガイドでは、Keeper AutomatorをKubernetesサービスとして実行するための手順を解説します。
(1) Kubernetesのセットアップ
Kubernetesのインストールとデプロイについては詳しく触れませんが、デモの目的でプラットフォームに依存しない2つのEC2インスタンス(マスターとワーカー)を使用する、非常に基本的な単一ノード環境について記載しました。K8環境がすでに整っている場合には手順2へお進みください。
Dockerのセットアップ
Kubernetesはコンテナランタイムを要しますのでDockerを使用します。
コピー sudo yum update - y
sudo yum install - y docker
sudo systemctl enable docker
sudo systemctl start docker
kubeadm、kubelet、kubectlのインストール
これらのパッケージは、マスターノードとワーカーノードの両方にインストールする必要があります。 今回の例ではAWS Amazon Linux 2インスタンスタイプを使用しています。
コピー cat << EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
sudo systemctl enable --now kubelet
マスターノードの初期化
マスターノードとして使用をご希望のマシンで以下を実行します。
コピー sudo kubeadm init --pod-network-cidr=10.244.0.0/16
--pod-network-cidr
引数は、特定のネットワークプロバイダーで必要となります。ポッドに設定するIP範囲を置き換えます。
kubeadm init
が完了後、ワーカーノードをマスターに参加させるために使用できるコマンドが表示されます。レスポンスと初期化コードをメモして次の手順で使えるようにします。
ローカルのkubeconfigをセットアップします。
コピー mkdir -p $HOME /.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME /.kube/config
sudo chown $( id -u ) : $( id -g ) $HOME /.kube/config
ポッドネットワークのインストール
クラスターが機能する前にポッドネットワークをインストールする必要があります。簡単にflannel
を使用できます。
コピー kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
ワーカーノードを参加させる
ワーカーノードとして追加する各マシンで、初期化コードを含む以下のコマンドを実行します。
コピー sudo kubeadm join [your code from kubeadm init command]
セキュリティグループ内のワーカーノードとマスターノードの間でポート6443 が開いている必要があリます。
ワーカーが参加した後、Kubernetesクラスターが稼働します。マスター上でkubectl get nodes
を実行すると、ノードのステータスを確認できます。
(2) Kubernetes Secretの作成
Keeper AutomatorのSSL証明書がSecretとしてKubernetesサービスに提供されます。SSL証明書とSSL証明書パスワード(SSL 証明書ガイドから作成)を保存するには、以下のコマンドを実行します。
コピー kubectl create secret generic certificate-secret --from-file=ssl-certificate.pfx --from-file=ssl-certificate-password.txt
(3) マニフェストの作成
以下は、automator-deployment.yamlとして保存できるマニフェストファイルです。デプロイメントリソースとサービスリソースの両方の設定が含まれています。
デプロイメントリソースはKeeper Automator Dockerコンテナを実行します。
SSL証明書と証明書パスワードファイルは、マウントされたSecretとして参照されます。
Secretは初期化コンテナ内のポッドにコピーされます。
Automatorサービスはポート30000でリスンしてから、コンテナーのポート443にルーティングします。
本手順では、単一のコンテナ(replicas: 1)のみをデプロイしてコンテナを設定できるようにします。最後の手順でreplicasの数を増やします。
コピー apiVersion : apps/v1
kind : Deployment
metadata :
name : automator-deployment
spec :
replicas : 1
selector :
matchLabels :
app : automator
template :
metadata :
labels :
app : automator
spec :
initContainers :
- name : init-container
image : busybox
command : [ 'sh' , '-c' , 'cp /secrets/* /usr/mybin/config' ]
volumeMounts :
- name : secret-volume
mountPath : /secrets
- name : config-volume
mountPath : /usr/mybin/config
containers :
- name : automator
image : keeper/automator:latest
ports :
- containerPort : 443
volumeMounts :
- name : config-volume
mountPath : /usr/mybin/config
volumes :
- name : config-volume
emptyDir : {}
- name : secret-volume
secret :
secretName : certificate-secret
items :
- key : ssl-certificate.pfx
path : ssl-certificate.pfx
- key : ssl-certificate-password.txt
path : ssl-certificate-password.txt
---
apiVersion : v1
kind : Service
metadata :
name : automator-service
spec :
type : NodePort
ports :
- port : 443
targetPort : 443
protocol : TCP
nodePort : 30000
selector :
app : automator
(4) サービスのデプロイ
コピー kubectl apply -f automator-deployment.yaml
30秒以内にサービスが起動します。
(5) サービスステータスのチェック
ウェブブラウザでサービスが実行されていることを確認します(テストしているデバイスからポート 30000を開く必要があります)。
今回の場合、URLはhttps://automator2.lurey.com:30000/api/rest/statusとなります。
自動ヘルスチェックには以下のURLもご利用になれます。
https://<server>/health
例:
コピー $ curl https://automator2.lurey.com:30000/health
OK
これで単一ポッドのサービスが実行されていますので、Keeper Commanderを使用してAutomatorをご利用の環境に統合します。
(6) Commanderでポッドを設定
ポッドを設定してAutomator機能を使うには、Keeper Commanderが必要となります。Keeper Commanderはどこからでも実行できます。
ご利用のワークステーションにKeeper Commander CLIをインストールします。バイナリインストーラーを含むインストール手順についてはこちら をご覧ください。
Commanderをインストールした後、keeper shell
と入力してセッションを開いてからlogin
コマンドを使用してログインします。Automatorをセットアップするには、Keeper管理者またはSSO ノードを管理する権限を持つ管理者としてログインする必要があります。
コピー $ keeper shell
My Vault> login admin@company.com
_ __
| |/ /___ ___ _ __ ___ _ _
| ' </ -_) -_) '_ \/ -_) '_|
|_|\_\___\___| .__/\___|_|
vxx.x.xx |_|
Logging in to Keeper Commander
SSO user detected. Attempting to authenticate with a master password.
(Note: SSO users can create a Master Password in Web Vault > Settings)
Enter password for admin@company.com
Password:
Successfully authenticated with Master Password
Syncing...
Decrypted [58] record(s)
My Vault>
Keeper Commanderにログインし、automator create
で始まる一連のコマンドを使用してAutomatorを有効にします。
コピー My Vault> automator create --name="My Automator" --node="Azure Cloud"
ノード名 (この場合はAzure Cloud) は、以下のように管理コンソールUIから取得します。
コマンドの出力には、IDプロバイダからのメタデータを含むAutomator設定が表示されます。
コピー Automator ID: 1477468749950
Name: My Automator
URL:
Enabled: No
Initialized: No
Skills: Device Approval
URLはまだ入力されていませんので、以下のようにautomator editコマンドを実行します。これによりURLとスキルが設定されます(team
、 team_for_user
、device
)。
コピー automator edit --url https://automator2.lurey.com:30000 --skill=team --skill=team_for_user --skill=device "My Automator"
次にキーを交換します。Automator公開キーで暗号化されたエンタープライズ秘密キーがAutomatorに提供されます。
コピー automator setup "My Automator"
次に、他のIdPメタデータをAutomatorに送信します。
コピー automator init "My Automator"
Automatorサービスを有効にします。
コピー automator enable "My Automator"
この時点で設定は完了となります。
(7) サービスの確保
Keeperのサーバーおよびご利用のワークステーションからサービスへのネットワークアクセスを制限することを推奨します。許可するKeeper IPアドレスのリストについては、イングレス要件 をご参照ください。
(8) Automatorサービスのテスト
単一のポッドでAutomatorサービスが適切に動作していることを確認するには、以下の手順を行います。
ブラウザのシークレットモードでウィンドウを開きます。
SSOユーザーアカウントを使用してKeeperウェブボルトにログインします。
SSOログインの成功後にデバイスの承認が必要ないことを確認します。
(9) ポッド設定の更新
この時点では、単一のポッド設定を実行しています。最初のポッドにAutomatorサービスがセットアップされKeeper クラウドに設定されましたので、ポッドの数を増やせます。以下のように、YAMLファイル内のreplicasステートメントを実行したいポッドの数に更新します。
次に変更を適用します。
コピー kubectl apply -f automator-deployment.yaml
複数のポッドが実行されている場合、コンテナはラウンドロビン方式のセットアップで負荷が分散されます。最初の承認リクエスト時に構成設定がKeeperクラウドからAutomatorポッドへ自動的かつ安全にロードされます。
Automatorサービスのトラブルシューティング
Automatorサービスを実行しているログファイルでエラーを監視できます。ポッドのリストを取得するには以下を実行します。
以下のコマンドを使用して、ターミナル経由でAutomatorコンテナに接続します。
コピー kubectl exec -it automator-deployment-<POD> --container automator -- /bin/sh
ログファイルはlogs/フォルダにあります。ターミナルに接続する代わりに、以下のコマンドからコンテナのログファイルを追跡することもできます。
コピー kubectl exec -it automator-deployment-<POD> --container automator -- tail -f /usr/mybin/logs/keeper-automator.log