クラスター設定の管理
OpenShift Container Platform クラスター設定の管理
概要
第1章 OpenShift Container Platform クラスター設定の管理 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift GitOps を使用した OpenShift Container Platform クラスター設定の管理には、次のような利点があります。
- バージョン管理と監査可能性: Git にコミットされた設定変更は、完全な変更履歴を提供します。これにより、監査、コンプライアンス、説明責任が容易になります。
- 信頼できる唯一の情報源: Git は、OpenShift Container Platform クラスターのあるべき状態を示す決定的な情報源として機能します。
- 最適化されたパフォーマンスと障害復旧: GitOps は Argo CD アプリケーションを、Git 内の既知の良好な状態にある以前のコミットまたはタグにポイントします。これにより、ダウンタイムが短縮され、障害復旧が容易になります。
- コラボレーションとレビュー: Git のコラボレーション機能により、チームメンバーは、インフラストラクチャーとアプリケーションの設定変更を、OpenShift Container Platform クラスターに適用する前に確認して承認できます。
- 効率性とスケーラビリティー: GitOps は、デプロイメントと運用のワークフローを合理化し、手動による介入と人的エラーを減らして、複雑なマルチクラスター環境の効率的な管理を可能にします。
OpenShift Container Platform クラスター設定を管理するには、次のタスクを実行します。
- CLI を使用して Red Hat OpenShift GitOps Operator をインストールする
- デフォルトの Argo CD インスタンスを分析する
- デフォルトの Argo CD インスタンスにアクセスする
- デフォルトの Argo CD インスタンスを設定する
1.1. CLI を使用した Red Hat OpenShift GitOps Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
CLI を使用して OperatorHub から Red Hat OpenShift GitOps Operator をインストールできます。
GitOps バージョン 1.10 以降では、デフォルトの namespace が openshift-operators から openshift-gitops operator に変更されました。
前提条件
-
cluster-admin権限で OpenShift Container Platform クラスターにアクセスするためのログイン認証情報がある。 -
ocCLI をインストールした。
手順
openshift-gitops-operatornamespace を作成します。oc create ns openshift-gitops-operator
$ oc create ns openshift-gitops-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
namespace/openshift-gitops-operator created
namespace/openshift-gitops-operator createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記openshift.io/cluster-monitoring=trueラベルを適用することで、openshift-gitops-operatorまたは任意の namespace でクラスターモニタリングを有効にできます。oc label namespace <namespace> openshift.io/cluster-monitoring=true
$ oc label namespace <namespace> openshift.io/cluster-monitoring=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
namespace/<namespace> labeled
namespace/<namespace> labeledCopy to Clipboard Copied! Toggle word wrap Toggle overflow OperatorGroupオブジェクト YAML ファイルを作成します (例:gitops-operator-group.yaml)。OperatorGroup の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OperatorGroupをクラスターに適用します。oc apply -f gitops-operator-group.yaml
$ oc apply -f gitops-operator-group.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
operatorgroup.operators.coreos.com/openshift-gitops-operator created
operatorgroup.operators.coreos.com/openshift-gitops-operator createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow Subscriptionオブジェクトの YAML ファイルを作成し、namespace を Red Hat OpenShift GitOps Operator にサブスクライブします (例:openshift-gitops-sub.yaml)。Subscription の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Subscriptionをクラスターに適用します。oc apply -f openshift-gitops-sub.yaml
$ oc apply -f openshift-gitops-sub.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
subscription.operators.coreos.com/openshift-gitops-operator created
subscription.operators.coreos.com/openshift-gitops-operator createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow インストールが完了したら、
openshift-gitopsnamespace のすべての Pod が実行されていることを確認します。oc get pods -n openshift-gitops
$ oc get pods -n openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openshift-gitops-operatornamespace の Pod が実行されていることを確認します。oc get pods -n openshift-gitops-operator
$ oc get pods -n openshift-gitops-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE openshift-gitops-operator-controller-manager-6fdc5cd9dc-jr9mn 2/2 Running 0 41s
NAME READY STATUS RESTARTS AGE openshift-gitops-operator-controller-manager-6fdc5cd9dc-jr9mn 2/2 Running 0 41sCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2. デフォルトの Argo CD インスタンスの詳細を分析する リンクのコピーリンクがクリップボードにコピーされました!
Operator は、デフォルトで openshift-gitops namespace に Argo CD インスタンスを作成します。インストール後、OpenShift Container Platform Web コンソールを使用して Operator details ページを表示し、デフォルトのインスタンス設定を分析できます。この分析は、後でこのインスタンスの動作をカスタマイズするために使用できます。このインスタンスは、クラスター設定に使用することが想定されており、昇格された特権を持っています。
他の namespace に追加の Argo CD インスタンスを作成して、アプリケーションでの使用をサポートすることもできます。
前提条件
-
cluster-admin権限で OpenShift Container Platform クラスターにアクセスするためのログイン認証情報がある。
手順
次のいずれかの手順を実行して、Operator details ページを開きます。
- View Operator ボタンをクリックします。このボタンは、Operator のインストールが完了すると使用可能になります。
- Operator メニューの Installed Operator をクリックし、Red Hat OpenShift GitOps Operator を選択します。
- Argo CD タブを選択します。
-
デフォルトインスタンスの名前 (
openshift-gitops) クリックすると、新しいページに詳細が表示されます。 - YAML タブを選択して、設定方法を分析します。
1.3. デフォルトの Argo CD インスタンスにアクセスする リンクのコピーリンクがクリップボードにコピーされました!
デフォルトの Argo CD インスタンスの詳細を分析した後、Argo CD UI からそのインスタンスにアクセスして使用可能か確認できます。
前提条件
-
cluster-admin権限で OpenShift Container Platform クラスターにアクセスするためのログイン認証情報がある。
手順
- OpenShift Container Platform Web コンソールの右上隅にある Application Launcher メニューをクリックします。
- ドロップダウンリストで Cluster Argo CD を選択します。Argo CD のログインページが開きます。
- LOG IN VIA OPENSHIFT ボタンをクリックします。OpenShift Container Platform のログインページが開きます。
- OpenShift Container Platform の認証情報を入力します。Authorize Access ページが開きます。
- Allow selected permissions をクリックして、要求された権限を付与します。Argo CD の UI ページが開きます。
この時点では、Argo CD アプリケーションがまだ作成されていないため、UI は空です。User Info ページでユーザーの詳細を確認できます。
1.4. デフォルトの Argo CD インスタンスを設定する リンクのコピーリンクがクリップボードにコピーされました!
Operator は openshift-gitops namespace にデフォルトの Argo CD インスタンスを作成しますが、アプリケーションのデプロイやクラスター設定で便利に使用するためには設定が必要です。
- ロールベースのアクセス制御 (RBAC) を設定する: Argo CD は独自の RBAC 設定を使用します。ユーザーが割り当てられている OpenShift Container Platform クラスターグループによっては、Operator が設定するデフォルトの権限では不十分な可能性があります。
- 権限を設定する: Operator は、デフォルトインスタンスにデフォルトの Kubernetes 権限セットを設定します。しかし、ただし、リアルタイム環境でアプリケーションをデプロイする場合、これらの権限では不十分です。したがって、このデフォルトインスタンスに追加の権限を付与する必要があります。
1.4.1. RBAC の設定 リンクのコピーリンクがクリップボードにコピーされました!
ユーザーに、デフォルトインスタンスを操作するために十分なアクセス権を付与するには、RBAC を設定する必要があります。
インスタンスの defaultPolicy は空の文字列です。つまり、ロールは自動的に割り当てられません。ユーザーはインスタンスにログインできますが、Argo CD UI または CLI で何かを表示したりタスクを実行したりする権限はありません。
インスタンスには次の 2 つのグループが含まれます。
-
system:cluster-admins: このグループは一時的なkube-admin認証情報にのみ適用されるため、無視できます。 -
cluster-admins: ユーザーをこのグループに追加すると、Argo CD Web コンソールでアプリケーションのデプロイなどのタスクを実行できるようになります。
デフォルト権限の制限:
defaultPolicy パラメーターに付与された権限は取り消すことができないため、必ず空の文字列または deny-all タイプのロールを使用してください。つまり、権限の付与方法として defaultPolicy パラメーターを設定することは推奨されません。
前提条件
-
cluster-admin権限で OpenShift Container Platform クラスターにアクセスするためのログイン認証情報がある。 -
ocCLI をインストールした。
手順
Operator がデフォルトインスタンスに設定した RBAC を表示します。
oc get argocd openshift-gitops -n openshift-gitops -o=jsonpath='{.spec.rbac}'$ oc get argocd openshift-gitops -n openshift-gitops -o=jsonpath='{.spec.rbac}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力
{"defaultPolicy":"","policy":"g, system:cluster-admins, role:admin\ng, cluster-admins, role:admin\n","scopes":"[groups]"}{"defaultPolicy":"","policy":"g, system:cluster-admins, role:admin\ng, cluster-admins, role:admin\n","scopes":"[groups]"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow cluster-adminsグループが存在するか確認します。oc get groups
$ oc get groupsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のいずれかの手順を実行します。
グループが存在しない場合は、グループを作成してユーザーを追加します。
oc adm groups new cluster-admins <user>
$ oc adm groups new cluster-admins <user>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
- <user>
そのグループに追加するユーザーを示します。
出力例
group.user.openshift.io/cluster-admins created
group.user.openshift.io/cluster-admins createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
グループが存在する場合は、前に実行した
oc get groupsコマンドの出力で、ユーザーがそのグループに属しているか確認します。ユーザーがグループに属していない場合は、ユーザーをグループに追加します。oc adm groups add-users cluster-admins <user>
$ oc adm groups add-users cluster-admins <user>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
- <user>
そのグループに追加するユーザーを示します。
出力例
group.user.openshift.io/cluster-admins added: "<user>"
group.user.openshift.io/cluster-admins added: "<user>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
cluster-adminsグループが存在し、ユーザーがそのグループに属していることを確認します。oc get groups cluster-admins
$ oc get groups cluster-adminsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力では、
cluster-adminsグループが表示され、そこにユーザーが割り当てられています。
cluster-admins グループを作成または編集した後は、グループをユーザーに関連付けるために、Argo CD Web コンソールからログアウトしてから再度ログインします。User Info ページで、ユーザーが Argo CD 内の cluster-admins グループに属していることを確認してください。
1.4.2. 権限の設定 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトの Argo CD インスタンスにはデフォルトの Kubernetes 権限セットが自動的に設定されますが、クラスター設定に必要なすべてのリソースをデプロイするには、追加の権限を付与する必要があります。逆に、デフォルトインスタンスに対してより制限的な権限を設定して特定のリソースのみをデプロイする必要がある場合は、追加の設定を通じてそれを実現できます。
デフォルトの Kubernetes 権限セットの詳細は、「関連情報」を参照してください。
クラスター設定にデフォルトインスタンスを使用する場合は、Argo CD アプリケーションコントローラーサービスアカウントに cluster-admin 権限を付与します。その場合は、openshift-gitops-argocd-application-controller サービスアカウントの ClusterRoleBinding オブジェクトを作成します。なぜなら、デフォルトインスタンスは、Kubernetes API と対話してリソースをデプロイするためにこのアカウントを使用するからです。
前提条件
-
cluster-admin権限で OpenShift Container Platform クラスターにアクセスするためのログイン認証情報がある。 -
ocCLI をインストールした。
手順
以下のコマンドを実行します。
oc adm policy add-cluster-role-to-user --rolebinding-name="openshift-gitops-cluster-admin" cluster-admin -z openshift-gitops-argocd-application-controller -n openshift-gitops
$ oc adm policy add-cluster-role-to-user --rolebinding-name="openshift-gitops-cluster-admin" cluster-admin -z openshift-gitops-argocd-application-controller -n openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
clusterrole.rbac.authorization.k8s.io/cluster-admin added: "openshift-gitops-argocd-application-controller"
clusterrole.rbac.authorization.k8s.io/cluster-admin added: "openshift-gitops-argocd-application-controller"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
作成された
ClusterRoleBindingオブジェクトを表示します。oc get clusterrolebinding openshift-gitops-cluster-admin -o yaml
$ oc get clusterrolebinding openshift-gitops-cluster-admin -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow