일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 서버간 파일전송
- describe-instances
- yaml예시
- docker
- amazon ebs활용
- nexus proxy
- Configmap
- private repostiroy
- kubectl명령어
- jenkins parameter
- sql 공유
- aws cli ec2
- pod
- ELB
- linux 파일복사
- kubectl
- cli ec2
- 쿠버네티스
- Ansible
- 쿠버네티스교과서
- React Native
- amazon ebs
- statefulset
- docker myql
- SecurityContextHolder
- aws cli
- amazon ebs종류
- k8s
- EC2
- 명령어
- Today
- Total
게으름을 위한 부지런한 게으름뱅리' 블로그
[K8S] 레플리카셋(ReplicaSet)에서 ConfigMap 적용(yaml, kubectl) 본문
레플리카셋(ReplicaSet)에서 ConfigMap을 사용하여 파드에 설정 값을 제공하는 방법을 YAML 파일과 kubectl 명령어를 사용하여 설명하겠습니다.
YAML 파일을 사용한 예시
1. ConfigMap을 사용하여 ReplicaSet을 정의하는 방법입니다.
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: my-replicaset
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app-container
image: my-app-image
env:
# ConfigMap의 데이터를 환경 변수로 주입
- name: DATABASE_URL
valueFrom:
configMapKeyRef:
name: app-config # ConfigMap의 이름
key: database-url # ConfigMap에서 사용할 key
- name: API_KEY
valueFrom:
configMapKeyRef:
name: app-config # ConfigMap의 이름
key: api-key # ConfigMap에서 사용할 key
2. ReplicaSet을 사용하여 ConfigMap을 볼륨으로 마운트하는 방법입니다.
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: my-replicaset
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
volumes:
- name: config-volume
configMap:
name: app-config # ConfigMap의 이름
containers:
- name: my-app-container
image: my-app-image
volumeMounts:
- name: config-volume
mountPath: /etc/config # 볼륨이 마운트될 경로
readOnly: true # 읽기 전용으로 마운트
ReplicaSet의 파드에 ConfigMap을 볼륨으로 마운트하고 있습니다. 이를 통해 /etc/config 경로에 ConfigMap의 데이터를 읽기 전용으로 마운트하여 애플리케이션에서 설정 값을 사용할 수 있습니다.
3. ConfigMap을 사용한 다중 파일 설정입니다.
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config # ConfigMap의 이름
data:
database.properties: |
# database.properties 파일의 내용
database.url=mysql://db.example.com:3306/mydatabase
database.user=admin
database.password=secretpassword
app.properties: |
# app.properties 파일의 내용
app.environment=production
app.log.level=info
---
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: my-replicaset
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
volumes:
- name: config-volume
configMap:
name: app-config # ConfigMap의 이름
containers:
- name: my-app-container
image: my-app-image
volumeMounts:
- name: config-volume
mountPath: /etc/config # 볼륨이 마운트될 경로
readOnly: true # 읽기 전용으로 마운트
ConfigMap을 사용하여 여러 파일의 설정을 파드에 제공하는 방법을 보여줍니다. database.properties와 app.properties라는 두 개의 파일을 ConfigMap에 포함시키고, ReplicaSet의 파드에서 이를 볼륨으로 마운트하여 각각의 파일에 대한 설정 값을 애플리케이션에서 사용할 수 있습니다.
이렇게 설정하면 ReplicaSet을 통해 여러 개의 파드를 관리하면서 각 파드에 동일한 ConfigMap을 환경 변수로 주입할 수 있습니다. ConfigMap을 사용함으로써 애플리케이션의 설정을 중앙에서 관리하고, 필요할 때 동적으로 설정 값을 변경할 수 있는 장점을 가집니다.
kubectl 명령어를 사용한 예시
1. ConfigMap을 ReplicaSet에 적용하는 방법입니다.
kubectl create configmap app-config --from-literal=database-url=mysql://db.example.com:3306/mydatabase --from-literal=api-key=abc123xyz456
kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: my-replicaset
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app-container
image: my-app-image
env:
- name: DATABASE_URL
valueFrom:
configMapKeyRef:
name: app-config
key: database-url
- name: API_KEY
valueFrom:
configMapKeyRef:
name: app-config
key: api-key
EOF
- ConfigMap 생성: 먼저 kubectl create configmap 명령어를 사용하여 ConfigMap을 생성합니다. 여기서는 app-config라는 이름으로 database-url과 api-key를 포함한 ConfigMap을 생성하고 있습니다.
- ReplicaSet 정의: ReplicaSet의 YAML 파일에서는 spec.template.spec.containers 아래의 env 필드를 사용하여 각 환경 변수에 ConfigMap을 연결합니다.
- configMapKeyRef를 사용하여 ConfigMap의 이름과 특정 key를 참조하여 환경 변수로 주입합니다.
2. kubectl 명령어를 사용하여 ReplicaSet을 생성하고, ConfigMap을 환경 변수로 주입하는 방법입니다.
# ConfigMap 생성
kubectl create configmap app-config --from-literal=database-url=mysql://db.example.com:3306/mydatabase --from-literal=api-key=abc123xyz456
# ReplicaSet 생성
kubectl create replicaset my-replicaset --image=my-app-image --replicas=3 --env="DATABASE_URL=$(kubectl get configmap app-config -o=jsonpath='{.data.database-url}')" --env="API_KEY=$(kubectl get configmap app-config -o=jsonpath='{.data.api-key}')"
kubectl create configmap 명령어로 ConfigMap을 생성하고, 이후에 kubectl create replicaset 명령어를 사용하여 ReplicaSet을 생성합니다. ReplicaSet을 생성할 때 --env 옵션을 사용하여 ConfigMap의 데이터를 환경 변수로 주입하고 있습니다.
3. ReplicaSet을 생성하고, ConfigMap을 볼륨으로 마운트하는 방법을 보여줍니다.
# ConfigMap 생성
kubectl create configmap app-config --from-literal=database-url=mysql://db.example.com:3306/mydatabase --from-literal=api-key=abc123xyz456
# ReplicaSet 생성
kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: my-replicaset
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
volumes:
- name: config-volume
configMap:
name: app-config # ConfigMap의 이름
containers:
- name: my-app-container
image: my-app-image
volumeMounts:
- name: config-volume
mountPath: /etc/config # 볼륨이 마운트될 경로
readOnly: true # 읽기 전용으로 마운트
EOF
ConfigMap을 생성한 후에 kubectl apply 명령어와 리다이렉션(<<EOF)을 사용하여 ReplicaSet의 YAML을 인라인으로 정의하고 있습니다. 이를 통해 ReplicaSet을 생성하면서 ConfigMap을 볼륨으로 마운트하여 설정 값을 파드에 제공하고 있습니다.