やりたいこと
Podを起動するもログに
Permission denied
と表示されるため、特権ユーザで起動したい。
環境情報
$ ibmcloud oc cluster ls ... OK 名前 ID 状態 作成日 ワーカー ロケーション バージョン リソース・グループ名 プロバイダー X ... normal .. 3 Tokyo 4.6.X_openshift Default classic
やり方
プロジェクト内にサービスアカウントを新規作成して
$ oc create sa testz serviceaccount/testz created
同サービスアカウントにanyuidというSCCの権限を与えて
$ oc adm policy add-scc-to-user anyuid -z testz clusterrole.rbac.authorization.k8s.io/system:openshift:scc:anyuid added: "testz"
該当するPodが起動するDeploymentにサービスアカウントをsetする。
$ oc set sa deployment/mongodb testz deployment.apps/mongodb serviceaccount updated
以下にて同Podがイメージで指定されている通りroot権限で実行されていることが確認できる。
$ oc exec -it mongodb-5bc87db5bf-h5kbz sh # whoami root
以下、補足です。
補足
セキュリティコンテキストにてこれらを実現します。
同作業をするまではOpenshiftの仕様で別なユーザIDが割り当てられるので
$ oc exec -it mongodb-6746f8f765-6gcqz sh $ whoami 1000670000
アプリケーションによっては以下のようにパーミッションでエラーとなります。
... I STORAGE [main] In File::open(), ::open for '//.mongorc.js' failed with Permission denied ...[main] Error saving history file: FileOpenFailed: Unable to open() file //.dbshell: Permission denied
以上、ご参考になれば幸いです。