k8s 5일차
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으로 수정
!
댓글남기기