일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- redis-cli
- aws
- Ngrinder Docker
- 패캠챌린지
- vscode
- ERR unknown command 'JSON.GET'
- redis cli
- 직장인자기계발
- nodemailer
- 한 번에 끝내는 AWS 인프라 구축과 DevOps 운영 초격차 패키지 Online
- AWS S3 버킷 삭제
- Avast Security
- 패스트캠퍼스
- gitlab 잔디옮기기
- AWS S3 migration
- aws s3
- Redis
- Window redis-cli
- Avast 구독취소
- 잔디이전
- ERR unknown command 'JSON.SET'
- 직장인인강
- 패스트캠퍼스후기
- 캐시백
- 캐시백챌린지
- AWS S3 계정이동
- 환급챌린지
- putty Inactive
- RedisJSON
- elastic cache
- Today
- Total
Developing
패스트캠퍼스 캐시백 챌린지 63일차 본문
ConfigMap API Resource와 관련된 내용의 클립을 수강하는식으로 챌린지를 진행하였다. Configmap이 파드에 환경변수나 볼륨 형태로 전달하는 용도임을 알게되었고 imperative/declarative 방식으로 configmap을 생성하는 법에 대해 확인할 수 있었다. 어느덧 9주차가 저물고 챌린지의 끝이 눈앞에 보인다..ㅎㅎ;; 다음 포스팅으로는 Secret API Resource과 관련된 포스팅을 할 예정이다.
컨피그맵(ConfigMap)
- 설정 정보를 환경변수 혹은 볼륨의 형태로 파드에 전달하기위한 목적으로 사용
- 파드에서 직접 환경변수를 관리하지 않고 ConfigMap을 분리하여 목적에 따라 설정 데이터를 다르게 주입 가능
ConfigMap의 사용방법
- ConfigMap의 값을 컨테이너의 환경변수로 사용
- ConfigMap의 값을 파드 볼륨으로 마운트하여 사용
실습링크는 하단의 링크에 해당한다.
https://github.com/tedilabs/fastcampus-devops/tree/main/3-docker-kubernetes/10-k8s-configmap
$ cd no
$ kubectl apply -f deployment.yaml
$ kubectl exec -it deploy/mysql bash
# deployment.yaml에서 devops로 만들어준 데이터베이스 내용을 확인해본다.
$ mysql -h localhost -u root -p
mysql> show databases;
# 제거
$ kubectl delete -f deployment.yaml
cd ..
cd env-from
cat configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: mysql-config
data:
MYSQL_ROOT_PASSWORD: fastcampus
MYSQL_DATABASE: devops
특이점은 대부분의 오브젝트들은 spec이라는key를 가지고있었지만 이번 경우에는 data라는 key를 가지고있다.
이것을 deployment의 환경변수로 전달하고자 한다. deployment.yaml의 envFrom-configMapRef의 내용으로 들어가게 된다.
$ kubectl apply -f confignamp.yaml
$ kubectl apply -f deployment.yaml
# 축약어 cm 확인
$ kubectl api-resources | grep configamp
$ kubectl describe cm mysql-config
$ kubectl exec -it deploy/mysql bash
# 명령어 잘 전달되었는지 확인
$ # echo $MYSQL_ROOT_PASSWORD
$ # echo $MYSQL_DATABASE
이 경우에도 동일하게 devops db가 존재함을 확인할 수 있다.
$ kubectl delete -f deployment.yaml
$ cd ../env-value-from
$ cat deployment.yaml
...(생략)
spec:
selector:
matchLabels:
app: mysql
template:
metadata:
name: mysql
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql:5.7
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
configMapKeyRef:
name: mysql-config
key: MYSQL_ROOT_PASSWORD
$ cat configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: mysql-config
data:
MYSQL_ROOT_PASSWORD: fastcampus
MYSQL_DATABASE: devops
이번엔 envfrom이 아니라 env를 사용하고, value가 아니라 valueFrom을 사용한다. configmap을 참조하는 것이 아니라 configmap내의 key를 참조한다.
configmap에서 Rootpassword만 참조하였기에 mysql database를 주입하지 않아 devops 데이터베이스를 초기화하지 않은 모습이다.
#볼륨으로 마운트
$ cd ../volume
$ cat deployment.yaml
volumeMouonts: /tmp/config 위치에 mysql-config라는 볼륨을 명시하여라.
volumes : 해당 파드가 사용하게될 볼륨 목록 정리
⇒name: volume 이름정의
⇒하위옵션: 볼륨 드라이버 옵션 설정 (configMap 볼륨을 사용하여 mysql configmap을 참조하도록 설정)
mysql-config에 해당하는 configmap이 디렉토리로 마운트되면 하위의 key-value 값이 file의 형태로 만들어진다. (filename : data)
해당 디렉토리에 가보면 MYSQL_DATABASE와 MYSQL_ROOT_PASSWORD 라는 이름으로 파일이 만들어진 것을 확인할 수 있다.
kubectl ConfigMap 생성 명령어 (imperative한 방식)
# my-config 이름의 ConfigMap 생성
$ kubectl create configmap my-config
# my-config 이름의 ConfigMap 생성
$ kubectl create configmap my-config --from-file config.yaml
# my-config 이름의 ConfigMap 생성 - 로컬의 config.yaml 파일의 내용을 config라는 키로 저장
$ kubectl create configmap my-config --from-file config=config.yaml
# my-config 이름의 ConfigMap YAML 출력 - 로컬의 config.yaml 파일의 내용을 config라는 키로 저장
$ kubectl create configmap my-config --from-file config=config.yaml --dry-run -o yaml
dry-run 옵션은 가짜로 실행하라는 의미이다. 명령어의 결과를 클러스터에 반영하지 말고 어떤결과를 내는지 확인할때 유용하다.
-o yaml 은 yaml 형태로 출력함을 의미한다.
그 외에 “—from-literal key=value “ 같은 옵션을 주게되면 key-value 값이 등록된다.
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
* 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'Devops > Fastcampus 캐시백 챌린지' 카테고리의 다른 글
패스트캠퍼스 캐시백 챌린지 65일차 (0) | 2022.06.21 |
---|---|
패스트캠퍼스 캐시백 챌린지 64일차 (0) | 2022.06.20 |
패스트캠퍼스 캐시백 챌린지 62일차 (0) | 2022.06.18 |
패스트캠퍼스 캐시백 챌린지 61일차 (0) | 2022.06.17 |
패스트캠퍼스 캐시백 챌린지 60일차 (0) | 2022.06.16 |