CKA Study Day8

김건호·2023년 4월 4일
0

94-104

Commands

docker run 컨테이너 바로 꺼짐
컨테이너는 운영체제 호스팅 하도록 되어 있지 않음

Dockerfile에 CMD가 있음 컨테이너 실행 후 실행되는 커맨드

bash 터미널 못 찾으면 종료
docker 터미널 연결하지 않음 -> 그래서 컨테이너가 바로 꺼짐

docker run ubuntu sleep 5 5초 기다렸다가 꺼짐 -> 영구적으로는?

CMD ["sleep", "5"] 명령과 변수는 따로따로

ENTRYPOINT 프로그램 시작 시 지정할 수 있음

ENTRYPOINT ["sleep"]

docker un ubuntu-sleeper 10

CMD와 결합 시, CMD ["5"]는 디폴트가 됨

--entrypoint 로 docker run 시 10으로 변경가능

Commands and Arguments

파드 정의 파일에 커맨드를 명시하는 법

pod.spec.containers.args로 설정 -> CMD in Dockerfile

pod.spec.containers.command: ["sleep2.0"]가 ENTRYPOINT in Dockerfile

Configure Environment Variables in App

pod.spec.env를 통해 설정가능
바로 지정하는법

env:
  - name: APP_COLOR
    value: pink

cm이나 secrets로 지정하는 법

env:
  - name: APP_COLOR
    valueFrom:
      configMapKeyRef:
      ...
      secretKeyRef:

Configuring ConfigMaps in App

ConfigMap

APP_COLOR: blue
APP_MODE: prod
  1. 컨피그맵 생성
  2. 파드에 마운트

생성하는 법
imperative

kubectl create cm \
app-config --from-literal=APP_COLOR=blue 값 추가시 여러번 지정
or
config-name -from=file=path-to-file

Declarative

apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  APP_COLOR: blue
  APP_MODE: prod

용도에 따른 configma 생성 가능 및 이름을 적절히 지정해야함 -> 파드와 연결 해야 함으로

파드와 연결 하는법

pod.spec.envFrom

spec:
  envFrom:
    - configMapRef:
        name: configmap-name

Configure Secrets in App

ConfigMap 일반 텍스트 형식으로 저장 -> 암호 저장은 어울리지 않음

Secret 인코딩 하여 저장 함
1. 시크릿 생성
2. 파드에 마운트

Imperative

kubectl create secret generic \
app-config --from-literal=DB_HOSTY=mysql 값 추가시 여러번 지정
or
config-name -from=file=path-to-file

Declarative

apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  DB_HOST: mysql
  DB_USER: root
  DB_Passwrod: passwd -> 인코딩 형식으로 지정해야함

echo -n 을 하여 인코딩

echo -n 'paswrd' | base64

디코딩 하는법

echo -n 'dd' | base64 -d

파드와 연결

pod.spec.envFrom

spec:
  envFrom:
    - secretRef:
        name: configmap-name

volumes로 넣는 법

volumes:
- name: app-secret-volume
  secret:
    secretName: app-sercret

ls /opt/app-secret-volumes
cat /opt/app-secret-volume/DB_Password
컨테이너 안에서 실행 시 값 확인 가능

주의점

  • 암호화가 아닌 인코딩 -> 기밀 데이터 확인 가능 -> Git에 올릴 때 주의
  • etcd 에서 암호화가 되어 있지 않음 -> enable encryption at rest https://kubernetes.io/docs/tasks/administer-cluster/encrypt-data/
  • 같은 네임스페이스에서 모두 접근 가능 -> RBAC로 제한 해야함
  • 3rd paryt 시크릿 저장 제공자 사용 aws azue gcp -> 보안 처리해줌
profile
Ken, 🔽🔽 거노밥 유튜브(house icon) 🔽🔽

0개의 댓글