Google Cloud SDK (gcloud) OAuth Setup
Google Cloud SDK (gcloud) OAuth Setup
Section titled “Google Cloud SDK (gcloud) OAuth Setup”這份文件說明如何設定 mikan /login / /pi-login 內建的 Google Cloud SDK OAuth,讓 sandbox 內的 gcloud 使用登入後的 user credential。
注意:mikan 會把 Google
authorized_userJSON 存進 vault,並保存 target path metadata。imagesandbox 會把這類 vault file 自動投影到 container 內的 target path;現有container/firecrackerruntime 仍不會自動做 file projection。
1. 建立 Google OAuth Client
Section titled “1. 建立 Google OAuth Client”到 Google Cloud Console:
APIs & Services → Credentials → Create Credentials → OAuth client ID設定:
- Application type:
Web application - Authorized redirect URI:
<LINK_URL>/oauth/callback
範例:
LINK_URL=https://mikan.example.comRedirect URI=https://mikan.example.com/oauth/callback如果 OAuth app 還在 testing mode,請把使用者加入:
OAuth consent screen → Test users2. 設定環境變數
Section titled “2. 設定環境變數”export LINK_URL="https://mikan.example.com"export GOOGLE_CLOUD_SDK_CLIENT_ID="<client-id>"export GOOGLE_CLOUD_SDK_CLIENT_SECRET="<client-secret>"如果沒有設定 LINK_PORT,mikan 會在 LINK_URL 存在時預設監聽 8181。
可選:覆蓋預設 scopes:
export GOOGLE_CLOUD_SDK_OAUTH_SCOPES="openid https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/cloud-platform"3. 使用 /pi-login
Section titled “3. 使用 /pi-login”如果你希望後續 runtime 自動把 credential file 投影到 /root/.config/gcloud/application_default_credentials.json,建議用 image sandbox 啟動 mikan:
mikan --sandbox=image:mikan-sandbox:tools /path/to/workspace在與 bot 的私訊中輸入:
/pi-login打開 mikan 回傳的 link,選擇 Google Cloud SDK (gcloud)。
成功後,mikan 會:
- 存入 vault file:
gcloud-adc.json - 在 sandbox 投影到:
/root/.config/gcloud/application_default_credentials.json - 設定 env:
GOOGLE_APPLICATION_CREDENTIALS=/root/.config/gcloud/application_default_credentials.jsonCLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE=/root/.config/gcloud/application_default_credentials.json
CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE 會讓 gcloud 優先使用這份 credential file。
- mikan 使用 web OAuth callback,因此 Google OAuth client 必須是
Web application,不是 desktop app。 - 如果 Google 沒有回傳
refresh_token,請撤銷既有 consent 後重新/pi-login。mikan 會要求access_type=offline與prompt=consent,但 Google 仍可能因既有授權而省略 refresh token。 - 若要讓 credential file 自動出現在
/root/.config/gcloud/application_default_credentials.json,請使用imagesandbox。container/firecracker目前仍只會保存 file credential metadata,不會自動投影。