알아두면 쓸모있는 제미나이 CLI(Gemini CLI) 사용법
제미나이 CLI(Gemini CLI)로 쿠버네티스를 관리하는 방법에 대한 글은 일단락되었지만, 사용하다 보니 알아두면 좋은 사용법들을 발견했습니다. 그 내용을 정리하고자 다시 글을 쓰게 되었습니다.
물론 모든 내용을 반드시 알아야 하는 것은 아니지만, 알아두면 제미나이 CLI 같은 도구들을 효과적으로 사용하는 것에 큰 도움이 되는 항목들을 정리했습니다. 한 번쯤 읽고 적용해 볼 것을 권합니다.
유용한 제미나이 CLI 명령어 3가지
대화를 지우는 /clear
챗GPT와 같은 AI를 사용하다 보면 대화를 분리해서 관리하는 방식이 익숙할 것입니다.

제미나이 CLI도 마찬가지로 하나의 대화에 모든 내용을 섞으면 정확하지 않은 답변을 받을 가능성이 높아집니다. (AI는 결국 확률 기반으로 답변을 주는 구조니까요.)
따라서 목적에 맞는 답변을 충분히 받은 후에는, /clear 명령어를 사용해 기존 대화 내용을 지우고, 새로운 질문을 시작하는 것이 정확하고 만족스러운 답변을 얻는 데 도움을 줍니다. 또한, 모델마다 차이는 있지만 일반적으로 대화는 컨텍스트 윈도우(Context Window)*를 소모하기 때문에 이를 관리할 필요도 있습니다.
*컨텍스트 윈도우: 언어 모델이 새로운 텍스트를 생성할 때 참조할 수 있는 전체 텍스트의 양과 생성하는 새로운 텍스트를 합친 것 <출처: 앤트로픽>



대화를 압축하는 /compress
컨텍스트 윈도우를 관리하려면 /compress 명령어를 사용하는 것도 좋은 방법입니다. 이 명령을 사용하면, 대화의 주요 내용을 유지하면서 사용되는 토큰 수를 줄일 수 있습니다.

장기 기억을 돕는 /memory
다만 이처럼 컨텍스트 윈도우에 있는 내용은 오래 기억되지 않습니다. 그러나 사용자를 위해 항상 참고해야 할 규칙과 같은 중요한 내용이 있을 수 있습니다. 이와 같은 내용은 /memory 명령을 사용해 장기 기억으로 저장할 수 있습니다.
장기 기억에 추가하는 명령은 /memory add, 저장된 내용을 확인하는 것은 /memory show 명령으로 확인할 수 있습니다.
예시로, 제미나이 CLI 실행 중 워크로드를 그냥 생성해 버리는 경우를 방지하고자, 네임스페이스를 지정하지 않으면 생성을 실행하지 말라고 입력했습니다.
Prompt /memory add you do not allow to run `kubectl create` and `kubectl run` without specific namespace

이후 테스트로 nginx pod를 배포하려고 시도했더니, 네임스페이스가 지정되지 않아 실행할 수 없다는 응답이 나왔습니다.
Prompt: deploy nginx pod

단, 이 결과는 환경이나 상황에 따라 달라질 수 있습니다. 예를 들어, 네임스페이스를 물어보거나, kubectl 대신 YAML 파일을 생성하고 배포하려는 시도, Helm으로 배포하려는 시도 등을 보여줄 수 있습니다. 따라서 가능한 정확하고 구체적으로 명령을 입력하는 것이 좋습니다.
GEMINI.md: 장기 기억을 도와주는 파일
/memory add 명령등으로 저장한 장기 기억의 실제 내용은 ~/.gemini/GEMINI.md 파일에 기록됩니다.
➜ gemini_k8s (☸️ |aks:default) cat ~/.gemini/GEMINI.md
## Gemini Added Memories
- you do not allow to run `kubectl create` and `kubectl run` without specific namespace
즉, GEMINI.md 파일은 제미나이 CLI가 동작하기 위한 전체 맥락을 모두 저장하는 공간입니다. 여기에는 주로 다음과 같은 내용을 담고 있습니다.
- 기술 스택: 프로젝트에 사용하는 도구와 버전 (예: Astro 4.5, Tailwind CSS 3.4)
- 프로젝트 구조: 주요 디렉토리와 각 디렉토리의 역할
- 명령어: 빌드, 테스트, 린팅, 배포 등 주요 스크립트
- 코드 스타일: 포맷팅, 네이밍 컨벤션, import/export 문법 가이드라인
- 저장소 규칙: 브랜치 명명법, 커밋 메시지 형식, 머지(Merge) vs. 리베이스(Rebase) 정책
- 핵심 파일: AI가 알아야 할 중요한 파일 (예: api.ts, utils.js)
- 금지 사항: 수정하면 안 되는 레거시 코드나 설정 파일
* 해당 내용은 클로드 코드에서 가지고 왔으며, 관련해서는 CLAUDE.md를 참고하는 것이 더 좋습니다. 참고 문서: https://apidog.com/blog/claude-md/ (국문 번역본도 있으나 번역에 문제가 있습니다.)
다만 기존 파일에 중요한 것은 정해져 있지 않습니다. 따라서 직접 입력하는 것이 필요한데, AI가 잘 이해하는 구조로 입력하려면 내용 역시 AI에게 적어달라고 하는 것이 좋습니다. “가능한 정확하게”라는 조건을 달성하려면, AI가 이해하는 형태로 AI가 직접 해석하고 쓰는 편이 더 낫기 때문입니다.
예를 들면 다음과 같이 요청할 수 있습니다.
Prompt protect to delete kubernetes resource. wrtie this policy at ~/.gemini/GEMINI.md


테스트를 위해 /quit 명령을 내린 다음, 제미나이 CLI를 다시 실행해 nginx pod를 지워달라고 요청해 보았습니다.
Prompt delete nginx pod

정책이 적용되어 있기 때문에 지우려는 시도조차 하지 않습니다. 그 대신 지우는 방법만을 안내해 줍니다.
만약 GEMINI.md에 관련 구문(= you do not allow to run `kubectl delete`)이 없다면 어떨까요? 구문을 지우고, 새로 시도해 보았습니다.
Prompt delete nginx pod

곧바로 삭제를 위해 파드를 찾기 시작하는 모습입니다.
GEMINI.md로 프로젝트별 설정하기
하나만 더 확인하겠습니다. ~/.gemini/GEMINI.md는 글로벌 설정인데, 프로젝트마다 지역 설정을 할 수도 있습니다.
동일한 내용의 정책이지만, ‘현재 디렉터리’에 정책을 만들어 달라고 요청합니다.
Prompt protect to delete kubernetes resource. wrtie this policy at current directory by GEMINI.md

보다 명확하게 하기 위해 다시 제미나이 CLI를 실행했습니다.
그리고 kubectl을 항상 허용하도록 한 다음 결과를 확인했습니다. 아래 화면처럼 지우는 명령을 알려주고는 “실행할래?”라고 물어봅니다.

이유를 찾기 위해 GEMINI.md 파일을 확인했습니다.
➜ gemini_k8s (☸️ |aks:default) cat GEMINI.md
## Gemini Added Memories
- To protect Kubernetes resources, you are not allowed to run 'kubectl delete' commands without getting explicit confirmation from the user. Before running a delete command, you must first inform the user which resources will be deleted.
정책을 보니 이번에는 사용자 확인(confirmation)을 받도록 작성되어 있습니다. 만약 이를 좀 더 강경한 어조로 고치면 지우려는 시도 자체가 줄어들 것입니다.
settings.json: 제미나이 CLI 설정 파일
이처럼 GEMINI.md를 활용하면 원하는 방향성을 만들 수 있지만, 언제나 100% 정확하게 동작시키기는 어렵습니다.
이를 위해 제미나이 CLI에는 setting.json이라는 설정 파일이 존재합니다. 해당 파일은 글로벌(유저) 설정과 지역(프로젝트) 설정, 그리고 시스템 설정으로 구분할 수 있습니다.
설정 파일의 위치와 적용 범위
사용자 설정 파일
현재 사용자의 모든 제미나이 CLI 세션에 적용되는 설정입니다. 홈 디렉터리의 ~/.gemini/settings.json 경로에 위치합니다.
프로젝트 설정 파일
해당 특정 프로젝트에서 제미나이 CLI를 실행할 때만 적용되며, 사용자 설정보다 우선순위가 높습니다. 프로젝트 디렉토리의 .gemini/settings.json에 위치합니다.
시스템 설정 파일
시스템 내부 모든 사용자의 모든 제미나이 CLI 세션에 적용되며, 모든 설정 파일의 최우선으로 적용됩니다. 운영 환경에 따라 경로가 아래와 같으며, GEMINI_CLI_SYSTEM_SETTINGS_PATH 환경 변수로 경로를 다시 정의할 수도 있습니다.
- Linux: /etc/gemini-cli/settings.json
- Windows: C:\ProgramData\gemini-cli\settings.json
- macOS: /Library/Application Support/GeminiCli/settings.json
설정 파일의 옵션들
설정 파일에는 다양한 옵션이 있습니다. 현재 공식 문서는 md 파일로 제공되니, 링크를 확인하는 것이 좋습니다. 이를 종류별로 구분하면 다음과 같습니다.
- 도구 및 명령어 관리: 사용할 도구와 사용하지 않을 도구 구분
- 파일 및 컨텍스트 관련: 파일 처리와 컨텍스트 설정
- MCP 서버 관리: MCP 서버의 설정과 허용 여부 결정
- 사용자 경험: UI/UX 관련 설정
- 고급 기능: 샌드박싱, 체크포인팅 등
- 개발자 도구: 커스텀 명령어 및 도구 개발
- 모니터링 및 통계: 텔레메트리 및 사용 통계
모두가 각 목적이 있지만, 여기서는 2가지 주요 옵션인 도구 및 명령어 관리, 파일 및 컨텍스트 관련 옵션을 살펴보겠습니다.
도구 및 명령어 관리(excludeTools)
기존 GEMINI.md로는 어떤 명령의 수행을 ‘완벽하게’ 방지할 수 없습니다. 이 정책은 일종의 가이드처럼 제공되기에 AI 스스로 우회하는 방법을 찾고는 합니다. 하지만 중요한 명령의 실행, 이를테면 배포된 워크로드를 삭제하는 작업들은 매우 중대한 문제를 불러올 수 있으니 완벽히 방지하는 것이 좋습니다. 이를 위해 excludeTools 옵션을 활용할 수 있습니다.
➜ gemini_k8s (☸️ |aks:default) cat ~/.gemini/settings.json
{
"theme": "Default",
"selectedAuthType": "gemini-api-key",
"preferredEditor": "cursor",
"excludeTools": [
"ShellTool(rm -rf)",
"ShellTool(sudo)",
"ShellTool(kubectl delete)"
]
}
이렇게 설정하고, kubectl delete 명령을 실행해 보았습니다.

“blocked by configuration”이라는 에러 메시지와 함께 명령 실행이 완전히 차단된 모습입니다.
파일 및 컨텍스트 관련
장기 기억을 쓰기 위해 제미나이 CLI는 각 디렉토리에 있는 GEMINI.md 파일을 읽어들입니다. 그러나 이것만으로는 목적에 따라 컨텍스트를 효과적으로 관리하기 어렵습니다. 따라서 그 외에도 다른 컨텍스트를 제공할 수 있어야 합니다.
예를 들어, 구성 구조를 설명하는 ARCHITECTURE.md, 에이전트 동작의 방향성과 목적을 지정하는 AGENTS.md, API 관련 참고 문서인 API_DOC.md 등 목적에 맞는 파일을 사용할 수 있습니다.
➜ gemini_k8s (☸️ |aks:default) cat ~/.gemini/settings.json
{
"theme": "Default",
"selectedAuthType": "gemini-api-key",
"preferredEditor": "cursor",
"excludeTools": [
"ShellTool(rm -rf)",
"ShellTool(sudo)",
"ShellTool(kubectl delete)"
],
"contextFileName": [
"GEMINI.md",
"ARCHITECTURE.md",
"AGENTS.md",
"API_DOC.md"
]
}
예를 들어, AGENTS.md를 작성할 때는 다음과 같이 진행할 수 있습니다.
간략하게 파드를 배포하지 말 것, 로드밸런서 타입으로 노출할 때는 사용자의 허가를 받을 것, 마지막으로 보안을 신경 써서 고려할 것, 이라는 내용을 담은 문서를 만들어 달라고 프롬프트를 입력했습니다.
Prompt
> create AGENTS.md in here (.)
Agents do no deploy pod.
Agents expose workload to LoadBalancer type after confirming by user
Agents should be care about security

여기에 좀 더 실용적인 메시지를 넣고, 주석도 채워줄 것을 마찬가지로 요청합니다.
Prompt add more practical message in AGENTS.md and add comment as well

마지막으로는 /memory refresh 명령을 입력해 생성한 AGENTS.md를 읽어 들입니다.

이러한 설정까지 적용한 다음, 단일 nginx 파드를 배포하려고 시도해 보았습니다.
Prompt deploy single nginx pod

이런 메시지가 나온 것은 AI가 업데이트된 AGENTS.md 파일을 읽고, 그 가이드라인을 따르려고 했기 때문입니다.
.env: 제미나이 CLI 환경 파일
마지막으로 알아볼 것은 제미나이 CLI의 환경 파일입니다.
앞서 글에서 반복 입력을 막고자 GEMINI_API_KEY를 각 셸의 환경 설정에 직접 넣은 적이 있습니다. 다만, 사용하다 보니 해당 KEY를 .env에 넣는 것이 더 낫겠다고 판단했습니다. 일반적으로 .bashrc나 .zshrc 파일에는 다양한 내용이 들어 있어 관리가 어렵기 때문입니다.
제미나이 CLI는 다음과 같은 방식으로 .env 파일을 검색하고 적용합니다.
.env 파일 검색 순서
- 현재 작업 디렉토리에서 .env 파일을 찾습니다.
- 만약 없다면, 프로젝트 루트 디렉토리(.git 디렉토리로 식별)나 홈 디렉토리에 도달할 때까지 부모 디렉토리에서 .env 파일을 검색합니다.
- 그래도 파일을 찾지 못하면 사용자의 홈 디렉토리에 있는 ~/.env 파일을 찾습니다.
해당 파일에서는 아래처럼 다양한 키를 설정해 상황에 따라 전환하거나, 제미나이 실행 시점에 여러 키를 라운드 로빈(Round Robin) 방식으로 교체하며 사용할 수도 있습니다.
➜ gemini_k8s (☸️ |aks:default) cat ~/.gemini/.env
# Gemini api key
# 이메일@gmail.com
#export GEMINI_API_KEY="키_값"
# 이메일@gmail.com
#export GEMINI_API_KEY="키_값"
# 이메일[email protected]
export GEMINI_API_KEY="키_값"
또한, KEY 등록 외에도 모델 설정(GEMINI_MODEL), 구글 클라우드 관련 설정 등을 진행할 수 있습니다. (참고 문서)
마치며
지금까지 제미나이 CLI를 다양하게 써보며 직접 느낀 유용한 명령어와 설정 등을 살펴보았습니다.
제미나이 CLI는 나온 지 얼마 안 된 서비스인 만큼, 워낙 빠르게 버전을 업데이트하며 발전해 나가는 중입니다. 그런 만큼 공식 홈페이지의 문서 파일들(*.md)을 읽어보며 다양하게 써볼 것을 추천합니다.
작가
조훈(CNCF 앰버서더)
시스템/네트워크 IT 벤더의 경험 이후, 메가존 GCP 클라우드 팀에서 쿠버네티스와 연관된 모든 프로젝트에 대한 Tech Advisor 및 Container Architecture Design을 제공하고 있다. 페이스북 ‘IT 인프라 엔지니어 그룹’의 운영진을 맡고 있으며, 오픈 소스 컨트리뷰터로도 활동한다. 지식 공유를 위해 인프런/유데미에서 앤서블 및 쿠버네티스에 관한 강의를 하기도 한다. 책 <컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커> 등 3권을 썼다. CNCF(Cloud Native Computing Foundation) 앰버서더로서 쿠버네티스 생태계가 더 활발하게 퍼질 수 있도록 기여하고 있다.
심근우
LG유플러스 CTO부문에서 대고객 비즈니스 시스템의 DevOps를 담당하는 UcubeDAX팀의 팀장으로 일하고 있다. 퍼블릭 클라우드와 프라이빗 클라우드에 걸친 쿠버네티스 클러스터를 안정적으로 운영하기 위해 노력하고 있으며, 특히 주니어 DevOps 엔지니어들의 육성에 큰 관심을 가지고 있다.
문성주
체커(CHEQUER) 사의 DevOps Engineer로서 쿠버네티스의 멀티 클러스터 관리 방법론과 쿠버네티스 구현체(CAPI, OCI)에 대한 명세와 컨테이너 리소스 격리 방법에 대한 연구를 병행하고 있다. 이런 연구 활동을 기반으로 쿠버네티스 볼륨 테스트 파트에 컨트리뷰션했다. 본업은 쿠버네티스 오퍼레이터와 같은 CRD(커스텀 리소스)를 개발해 현업에서 쿠버네티스를 좀 더 편리하게 사용할 수 있도록 돕는 일이다. 또한, 페이스북 그룹 ‘코딩이랑 무관합니다만'과 ‘IT 인프라 엔지니어 그룹'의 운영진을 맡고 있다.
이성민
미국 넷플릭스(Netflix) 사의 Data Platform Infrastructure 팀에서 사내 플랫폼 팀들과 데이터 사용자들을 어우르기 위한 가상화 및 도구들을 개발하는 일들을 하고 있다. 과거 컨테이너와 쿠버네티스에 큰 관심을 두고 ingress-nginx를 비롯한 오픈 소스에 참여했으며, 현재는 데이터 분야에 일하게 되면서 stateful 한 서비스들이 컨테이너화에서 겪는 어려움을 보다 근본적으로 해결하기 위한 많은 노력을 하고 있다.
©️요즘IT의 모든 콘텐츠는 저작권법의 보호를 받는 바, 무단 전재와 복사, 배포 등을 금합니다.