lakeFS Enterprise 트러블슈팅
lakeFS Enterprise 배포에는 특히 초기 설정 중에 올바르게 구성해야 하는 다양한 구성 컴포넌트가 포함되어 있어요. 구성과 배포 문제를 트러블슈팅하는 데 도움이 되도록 lakeFS에는 flare 명령이 포함되어 있어요.
출처: 문서
본문
flare 명령
개요
lakeFS 바이너리에는 flare 명령이 포함되어 있어요
lakefs flare [flags]
플래그
--env-var-filename the name of the file environment variables will be written to (default: lakefs-env.txt)
--include-env-vars should environment variables be collected by flare (default: true)
-o, --output Output path relative to the current path
-p, --package Package generated artifacts into a .zip file (default: false)
--stdout Output to stdout instead of files (default: false)
--zip-filename The name of the zip file created when the -p option is used (default: lakefs-flare.zip)
사용 예시
# This will run flare with output set to stdout, which is redirected into a file
$ ./lakefs flare --stdout > lakefs.flare
flare 명령은 어떤 정보를 수집하나요?
구성
lakeFS Enterprise는 구성을 여러 방식으로 제공할 수 있어요: 설정 파일, 환경 변수, 명령 플래그. flare 명령은 lakeFS 프로세스가 사용하는 완전히 해석된 최종 구성을 수집해요.
환경 변수
트러블슈팅 시 lakeFS가 실행 중인 환경을 파악하는 것이 중요해요. 특히 환경 변수를 광범위하게 사용하는 Kubernetes 같은 컨테이너 기반 배포 환경에서 그렇죠. flare 명령은 다음 접두사를 가진 환경 변수를 수집해요:
-
LAKEFS_ -
HTTP_ -
HOSTNAME
새니타이징과 시크릿 마스킹
구성과 환경 변수에는 민감한 시크릿이 포함되어 있어요. flare 명령은 수집한 내용에서 시크릿을 마스킹하는 다단계 프로세스를 갖추고 있어요. flare 명령은 다음 유형의 시크릿을 감지할 수 있어요:
-
AWS 정적 자격 증명
-
Azure 스토리지 키
-
Basic HTTP auth 사용자명/비밀번호
-
JWT
-
Bearer 인증 헤더
-
GitHub 토큰
-
인증서 개인 키
위에 나열된 특정 시크릿 유형 외에도 flare는 시크릿일 가능성이 높은 일반적인 고엔트로피 문자열을 감지하고 마스킹할 수 있어요.
마스킹된 시크릿은 실제 값을 노출하지 않으면서 값의 SHA512 해시로 대체돼요.
사용법 - flare 수집 및 전송
다음 스크립트는 로컬에서 실행하도록 의도되었으며, lakeFS Enterprise가 권장 구성인 Kubernetes 클러스터에 배포되어 있다고 가정해요.
이 스크립트를 실행하려면 실행 머신에 kubectl이 설치되어 있고, kubectl이 클러스터에 접근할 수 있는 올바른 컨텍스트와 자격 증명으로 구성되어 있어야 해요. lakeFS Enterprise에서 flare 명령을 실행하는 것 외에도 이 스크립트는 lakeFS의 실행 중 모든 파드에서 로그를 가져와요.
1단계 - 스크립트 변수 설정
스크립트 상단에 Variables 블록이 있어요. lakeFS가 클러스터에 어떻게 배포되었는지에 맞게 이 값들을 변경하는 것이 중요해요.
NAMESPACE - lakeFS가 배포된 K8s 네임스페이스
LAKEFS_DEPLOYMENT - lakeFS K8s 배포의 이름
LAKEFS_LOGS_OUTPUT_FILE - lakeFS 로그가 저장될 로컬 파일 이름
LAKEFS_FLARE_FILE - lakeFS flare 결과가 저장될 로컬 파일 이름
2단계 - 스크립트 실행
#!/bin/bash
RED='\033[0;31m'
NC='\033[0m'
# Variables
NAMESPACE=lakefs-prod
LAKEFS_DEPLOYMENT=lakefs-server
LAKEFS_LOGS_OUTPUT_FILE=lakefs.log
LAKEFS_FLARE_FILE=lakefs.flare
# Find kubectl
KUBECTLCMD=$(which kubectl)
if [ -z "$KUBECTLCMD" ]
then
echo -e "${RED}Couldn't find kubectl in path${NC}"
exit 1
fi
$KUBECTLCMD get pods -o name -n $NAMESPACE | grep pod/$LAKEFS_DEPLOYMENT | xargs -I {} $KUBECTLCMD logs -n $NAMESPACE --all-containers=true --prefix --ignore-errors --timestamps {} > $LAKEFS_LOGS_OUTPUT_FILE
$KUBECTLCMD exec deployment/$LAKEFS_DEPLOYMENT -- ./lakefs flare --stdout > $LAKEFS_FLARE_FILE
3단계 - 출력 파일 검토
스크립트 실행 후 두 개의 파일이 생겨요: lakeFS 로그와 lakeFS flare 출력. 이 파일들을 공유하기 전에 모든 시크릿이 올바르게 마스킹되었고 수집된 정보가 공유 가능한지 검토하세요.
4단계 - 출력 파일 압축 후 지원 티켓에 첨부
파일 검토가 끝나면 하나의 파일로 압축해 지원 포털의 지원 티켓에 첨부할 수 있어요.
새 티켓
새 티켓을 제출할 때 새 티켓 폼 하단의 파일 업로드 입력으로 zip 파일을 첨부할 수 있어요.
기존 티켓
기존 티켓에 파일을 추가하려면 지원 포털에서 티켓 제목을 클릭하세요. 티켓 세부 화면에서 파일을 새 응답으로 첨부하세요. 추가 세부 사항을 담아 응답에 텍스트를 더할 수도 있어요.
더 알아보기 (Learn more)
공식 문서의 트러블슈팅 페이지는 https://docs.lakefs.io/admin/troubleshooting 에서 확인할 수 있어요.