특정 이름 패턴을 가진 configmap을 yaml으로 추출해서 저장하기
(aaa, bbb, ccc, ddd로 시작하는 configmap만)
#!/bin/bash
# ConfigMap 이름 패턴 리스트
patterns=("aaa" "bbb" "ccc" "ddd")
# 저장할 디렉토리 생성 (존재하지 않으면 생성)
output_dir="configmaps"
mkdir -p "$output_dir"
# 각 패턴에 대해 ConfigMap 검색 및 YAML 파일로 저장
for pattern in "${patterns[@]}"; do
# 해당 패턴으로 시작하는 ConfigMap 목록 가져오기
configmaps=$(kubectl get configmap --no-headers -o custom-columns=":metadata.name" | grep "^$pattern")
# 각 ConfigMap을 YAML 파일로 저장
for configmap in $configmaps; do
kubectl get configmap "$configmap" -o yaml > "$output_dir/$configmap.yaml"
sed -i '/uid:/d' "$output_dir/$configmap.yaml"
echo "Saved $configmap.yaml"
done
done
echo "All matching ConfigMaps have been saved to the $output_dir directory."
sh 파일 만들어서 내용 복붙하고
실행 권한 주고 ./파일명.sh 로 실행하기
chmod +x 파일명.sh
./파일명.sh
#!/bin/bash
# ConfigMap 이름 패턴 리스트
patterns=("aaa" "bbb" "ccc" "ddd")
# 저장할 디렉토리 생성 (존재하지 않으면 생성)
configmap_dir="configmaps"
mkdir -p "$configmap_dir"
# 각 패턴에 대해 ConfigMap 검색 및 YAML 파일로 저장
for pattern in "${patterns[@]}"; do
# 해당 패턴으로 시작하는 ConfigMap 목록 가져오기
configmaps=$(kubectl get configmap --no-headers -o custom-columns=":metadata.name" | grep "^$pattern")
# 각 ConfigMap을 YAML 파일로 저장
for configmap in $configmaps; do
kubectl get configmap "$configmap" -o yaml > "$configmap_dir/$configmap.yaml"
sed -i '/uid:/d' "$configmap_dir/$configmap.yaml"
echo "Saved $configmap.yaml"
done
done
echo "All matching ConfigMaps have been saved to the $configmap_dir directory."
# 기존에 저장한 파일들을 90개씩 나눠서 다른 디렉토리에 저장
# 원본 파일이 있는 디렉토리
original_dir="configmaps"
# 파일을 나눠서 저장할 기준
batch_size=90
# 파일 목록 가져오기
files=("$original_dir"/*.yaml)
# 총 파일 수
total_files=${#files[@]}
# 몇 번째 그룹인지 추적할 변수
batch_number=1
# 각 배치마다 파일을 저장할 폴더 생성 및 이동
for ((i=0; i<total_files; i+=batch_size)); do
# 새로 만들 폴더 이름 (ex: configmaps1, configmaps2, ...)
batch_output_dir="${original_dir}${batch_number}"
mkdir -p "$batch_output_dir"
# 해당 배치의 파일 복사
for ((j=i; j<i+batch_size && j<total_files; j++)); do
cp "${files[j]}" "$batch_output_dir/"
done
echo "Saved ${batch_size} files to $batch_output_dir"
# 배치 번호 증가
((batch_number++))
done
echo "All files have been organized into batches."
폴더 내 파일 개수 세는 명령어
ls -1 | wc -l
#!/bin/bash
# YAML 파일이 있는 디렉토리
dir="your_directory"
# 디렉토리 내 모든 YAML 파일에 대해 작업 수행
for yaml_file in "$dir"/*.yaml; do
echo "Processing $yaml_file..."
# 삭제할 줄을 미리 추출하여 임시 파일에 저장
deleted_lines=$(grep -E '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' "$yaml_file")
if [ -n "$deleted_lines" ]; then
# 삭제할 내용 출력
echo "Deleted lines from $yaml_file:"
echo "$deleted_lines"
# 숫자.숫자.숫자.숫자 형식이 있는 줄을 삭제
sed -i '/[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+/d' "$yaml_file"
else
echo "No lines to delete in $yaml_file."
fi
echo "--------------------------------------"
done
echo "All YAML files in $dir have been processed."
'배운 내용 > Kubernetes' 카테고리의 다른 글
upbound로 gcp provider 설치하기 (1) | 2025.04.01 |
---|---|
kubeconfig 여러 개 사용하기(맥북) (0) | 2025.04.01 |
pod에 파일 넣기 (0) | 2024.08.21 |
deployment 수정 후 pod가 2개 뜨는 문제 (0) | 2024.07.22 |
[crossplane] s3 버킷 만들기 (0) | 2024.05.21 |