Closed5

IAP for Cloud Runを試す(特定ドメインにだけアプリを公開する)

hosaka313hosaka313

Cloud Runサービスの作成

なんでも良いが、たまたま触っていたNext.jsで適当なDockerfileを作成

FROM node:lts-alpine AS base

FROM base AS deps
WORKDIR /app
COPY package.json pnpm-lock.yaml ./
RUN corepack enable pnpm && pnpm install --frozen-lockfile

FROM base AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN corepack enable pnpm && pnpm run build

FROM base AS runner
WORKDIR /app
ENV NODE_ENV=production
COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static

EXPOSE 3000
CMD ["node", "server.js"]

Cloud Buildは以下のように定義。

steps:
  - name: "gcr.io/cloud-builders/docker"
    entrypoint: "bash"
    args:
      - "-c"
      - |
        echo "BACKEND_URL=${_BACKEND_URL}" >> .env
        docker build -f Dockerfile -t gcr.io/$PROJECT_ID/<serviceName>:$COMMIT_SHA .

  - name: "gcr.io/cloud-builders/docker"
    args: ["push", "gcr.io/$PROJECT_ID/<serviceName>:$COMMIT_SHA"]

  - name: "gcr.io/cloud-builders/gcloud"
    args:
      - "beta"
      - "run"
      - "deploy"
      - "<serviceName>"
      - "--image"
      - "gcr.io/$PROJECT_ID/<serviceName>:$COMMIT_SHA"
      - "--iap"
      - "--region"
      - "asia-northeast1"
images:
  - "gcr.io/$PROJECT_ID/<serviceName>:$COMMIT_SHA"
timeout: 900s

options:
  logging: CLOUD_LOGGING_ONLY
hosaka313hosaka313

ポイント

gcloudのアップデート

新しい機能なので、gcloud components updateをする。

betaコマンド & --iapを使う

gcloud beta run deploy <~~~> --iap

というコマンドで有効化できる。

hosaka313hosaka313

アクセス権限付与

アカウント単位

gcloud beta iap web add-iam-policy-binding \
  --resource-type=cloud-run \
  --role=roles/iap.httpsResourceAccessor \
  --member=user:<email> \
  --region <region> \
  --service=<serviceName>

ドメイン単位

gcloud beta iap web add-iam-policy-binding \
  --resource-type=cloud-run \
  --role=roles/iap.httpsResourceAccessor \
  --member=domain:<domain> \
  --region <region> \
  --service=<serviceName>
このスクラップは5ヶ月前にクローズされました