Skip to content

CI Pipelines クイズ

関連ドキュメント: CI Pipelines

選択問題

1. ECR lifecycle policies の主な目的は何ですか?

  • A) container image を自動的にビルドすること
  • B) image の保持を管理し、ストレージコストを削減すること
  • C) image の脆弱性をスキャンすること
  • D) 複数のリージョン間で image をレプリケートすること
回答を表示

回答: B) image の保持を管理し、ストレージコストを削減すること

解説: ECR lifecycle policies は、経過日数や数などのルールに基づいて古い images を自動的に期限切れにして削除します。これにより、重要な images(production tags など)を無期限に保持しつつ、ストレージの無制限な増加を防ぎ、コストを削減できます。

2. GitLab Runner を EKS 上で実行する場合、分離のために推奨される executor type はどれですか?

  • A) Shell executor
  • B) Docker executor
  • C) Kubernetes executor
  • D) SSH executor
回答を表示

回答: C) Kubernetes executor

解説: Kubernetes executor は各 CI job を個別の Pod で実行し、jobs 間に強力な分離を提供します。jobs の完了後にリソースを自動的にクリーンアップし、node selectors や tolerations などの Kubernetes 機能を活用できます。

3. GitHub Actions Runner Controller (ARC) とは何ですか?

  • A) GitHub-hosted runner service
  • B) self-hosted GitHub runners のための Kubernetes operator
  • C) GitHub API client library
  • D) container registry controller
回答を表示

回答: B) self-hosted GitHub runners のための Kubernetes operator

解説: ARC は、workflow の需要に基づいて self-hosted GitHub Actions runners を自動的にスケールする Kubernetes operator です。jobs がキューに入ると runner pods を作成し、完了後にクリーンアップします。

4. multi-platform container builds (linux/amd64, linux/arm64) の利点は何ですか?

  • A) image sizes が小さくなる
  • B) build times が速くなる
  • C) 異なる CPU architectures (x86 and Graviton) のサポート
  • D) security scanning が向上する
回答を表示

回答: C) 異なる CPU architectures (x86 and Graviton) のサポート

解説: multi-platform builds は、x86 (amd64) と ARM (arm64/Graviton) processors の両方で動作する images を作成します。これにより、Graviton instances を使用したコスト最適化が可能になり、多様な deployment environments をサポートできます。

5. BuildKit cache は container build performance をどのように向上させますか?

  • A) すべての build steps をスキップすることによって
  • B) layer artifacts をキャッシュし、変更されていない layers を再利用することによって
  • C) images をより小さく圧縮することによって
  • D) すべての operations を並列化することによって
回答を表示

回答: B) layer artifacts をキャッシュし、変更されていない layers を再利用することによって

解説: BuildKit は build artifacts と layer outputs をインテリジェントにキャッシュします。source files が変更されていない場合、再ビルドする代わりに cached layers を再利用します。Cache は registries、S3、または local storage に保存して、builds 間で共有できます。

6. Kaniko は主に何に使用されますか?

  • A) Container orchestration
  • B) Docker daemon なしで container images をビルドすること
  • C) Container runtime security
  • D) Image vulnerability scanning
回答を表示

回答: B) Docker daemon なしで container images をビルドすること

解説: Kaniko は Docker daemon や privileged mode を必要とせずに、Dockerfiles から container images をビルドします。これにより、Docker-in-Docker の実行がセキュリティ上の懸念を生む、または利用できない CI/CD environments に最適です。

7. GitLab CI において、services keyword の目的は何ですか?

  • A) deployment targets を定義すること
  • B) テスト用に補助 containers(databases など)を起動すること
  • C) GitLab Pages を設定すること
  • D) monitoring をセットアップすること
回答を表示

回答: B) テスト用に補助 containers(databases など)を起動すること

解説:services keyword は、main job container と並行して実行される containers を定義します。これらは、tests がやり取りする必要のある databases (PostgreSQL, MySQL) や caches (Redis) などの test dependencies によく使用されます。

8. CI/CD で container build cache を保存するための推奨アプローチは何ですか?

  • A) local disk のみ
  • B) --cache-to と --cache-from flags を使用した registry-based cache
  • C) CI/CD では cache を使用しない
  • D) cache を git repository に保存する
回答を表示

回答: B) --cache-to と --cache-from flags を使用した registry-based cache

解説: registry-based caching は build cache layers を container registry に保存し、異なる CI runners 間でアクセスできるようにします。BuildKit の --cache-to--cache-from flags により、このパターンを使って一貫した build acceleration を実現できます。

9. GitHub ARC を設定する際、minRunners setting は何を制御しますか?

  • A) 最大 concurrent jobs
  • B) 維持される idle runners の最小数
  • C) Runner memory allocation
  • D) Job timeout duration
回答を表示

回答: B) 維持される idle runners の最小数

解説:minRunners は、warm runners の baseline が常に利用可能であることを保証し、job startup latency を低減します。これを 0 より大きく設定すると、時間に敏感な workflows の cold-start delays を防げますが、idle resource costs は増加します。

10. CI/CD runners に long-lived credentials の代わりに IAM roles を使用することの security benefit は何ですか?

  • A) 認証が速くなる
  • B) credential の自動ローテーションと exposure risk の低減
  • C) 設定がより簡単になる
  • D) Cross-account access
回答を表示

回答: B) credential の自動ローテーションと exposure risk の低減

解説: IAM roles は自動的にローテーションされる temporary credentials を提供し、long-lived access keys が漏えいまたは侵害されるリスクを排除します。Pod Identity または IRSA と組み合わせることで、runners は secrets を保存せずに scoped permissions を取得できます。