2 분 소요

SVC- Cluster IP, LoadBalancer 실습

# svc - cluster IP

cd /c/users/keduit/k8s/k8s_code1/chapter6
ls
kubectl apply -f deployment-hostname.yaml
kubectl get pods -o wide
kubectl run -i --tty --rm debug --image=moon682/ubuntu:curl --restart=Never
curl [192.168.0.114] // verify

vi hostname-svc-clusterip //  type이 ClusterIP 임을 확인
kubectl apply -f hostname-svc-clusterip.yaml
kubectl get svc // clusterIP 10.100.138.223 생성됨을 확인
kubectl run -i --tty --rm debug --image=moon682/ubuntu:curl --restart=Never
curl 10.100.138.223:8080 // verify 내부 container에서 clusterIP:8080 포트로 접속이 된다.
# SVC - LoadBalancer

vi hostname-svc-lb.yaml
!
apiVersion: v1
kind: Service
metadata:
  name: hostname-svc-lb
spec:
  ports:
    - name: web-port
      port: 80
      targetPort: 80
  selector:
    app: webserver
  type: LoadBalancer
!
kubectl apply -f hostname-svc-lb.yaml 
kubectl get svc // Type이 loadblancer인 svc 확인
curl EXTERNALIP // verify

k8s - Configmap, Secret

  • 컨피그맵은 일반적인 설정값을 담아 저장할 수 있는 쿠버네티스 오브젝트이다.

  • 네임스페이스에 속하기 때문에 네임스페이스별로 컨피그맵이 존재한다.

  • YAML 파일을 사용해 컨피그맵을 생성해도 되지만, kubectl create configmap 명령어를 사용하면 쉽게 컨피그맵을 생성할 수 있다.

  • YAML 파일과 설정값을 분리할 수 있다.

  • 컨피그맵에서는 설정값을, 시크릿에는 노출되어서는 안되는 비밀값을 저장할 수 있다.

  • 시크릿은 SSH 키, 비밀번호 등과 같이 민감한 정보를 저장하기 위한 용도로 사용된다.

# k8s - configmap 컨피그맵의 값을 포드 내부의 파일로 마운트해 사용

kubectl create configmap log-level-configmap --from-literal LOG_LEVEL=DEBUG // LOG_LEVEL 환경변수가 담긴 configmap을 생성
cd chapter7
vi volume-mount-configmap.yaml // name: log-level-configmap 으로 수정
kubectl apply -f volume-mount-configmap.yaml
kubectl exec configmap-volume-pod --cat ./etc/config // DEBUG 출력 확인
# k8s- secret

kubectl create secret generic my-password --from-literal password=chaerinkang // my-password라는 이름의 시크릿을 생성하며,  password=chaerinkang의 키-값 쌍을 저장
kubectl get secret // Opaque type 확인, base64형식
kubectl get secret my-password -o yaml // 암호화됨을 확인할 수 있다. Y2hhZXJpbmthbmc=
echo Y2hhZXJpbmthbmc= | base64 -d // chaerinkang 확인할 수 있다.
echo mypassword > pw1 && echo youpassword > pw2
kubectl create secret generic our-password --from-file pw1 --from-file pw2 // 컨피그맵처럼 from-file 옵션으로 값을 읽어와 사용할 수 있다

vi env-from-secrey.yaml
kubectl apply -f env-from-secret.yaml
kubectl get pod 
kubectl exec secret-env-example env // 해당 내용의 평문으로 출력됨을 확인할 수 있다.

cd /c/users/keduit/k8s/k8s_code2/wordpress
ls
vi testpass.txt
!
testpass
!
kubectl create secret generic testpass --from-file ./testpass.txt
kubectl get sercet testpass -o yaml // data: 암호화됨을 확인
echo 암호화 | base64 -d // testpass 확인

vi mysql.yaml
!
name: mysql-pass // secret 명 확인
key: password.txt // 파일명 확인
kind: PersistentVolumeClaim // 볼륨을 사용하는 옵션이다. local-volume.yaml 파일에 정의된 볼륨을 사용하는 쪽이 claim
labels:
  app: mysql // local-volume.yaml 파일에 레이블도 동일해야한다.
port: 3306 // mysql 포트
!

kubectl api-resources // deploy의 version이 aapls/v1임을확인
vi wordpress.yaml
!
apiVersion: apps/v1  // 기존 다른 버전에서 aaps/v1으로 수정
!

댓글남기기