minikube echo server 외부 오픈
2023. 3. 18. 23:22ㆍk8s
# pod 생성
kubectl create deployment hello-node --image=registry.k8s.io/echoserver:1.4
kubectl get deployments
# pod 확인
kubectl get pods
kubectl logs -f hello-node-cddb6ccd5-w4rpk
kubectl get events
kubectl describe pod/hello-node-cddb6ccd5-w4rpk
# minikube 외부에서 접속할 수 있도록, service 생성
kubectl expose deployment hello-node --type LoadBalancer --port=8080
# ip 지정
kubectl expose deployment hello-node --type LoadBalancer --load-balancer-ip=192.168.131.201 --port=8080
# service 확인
kubectl get service
kubectl get service/hello-node -o yaml
minikube ip
# service 접속 주소 확인
minikube service hello-node
# 결과 확인
curl http://<minikube ip>:<service port>
curl http://<external ip>:8080
# minikube를 stop하고 start하면 서비스에 접속이 안됨
# 조치
kubectl delete service hello-node
kubectl expose deployment hello-node --type LoadBalancer --port=8080
minikube service hello-node
remote PC에서 접속
1. proxy 사용
# port정보가 없으면, 기본 8001 포트로 할당됨
# disable-filter 설정 안하면, 통신 안됨
kubectl proxy --address=0.0.0.0 --disable-filter=true &
or
kubectl proxy --address=0.0.0.0 --disable-filter=true --port=8081 &
# 접속
http://<VM IP>:8001/api/v1/namespaces/default/services/http:hello-node:/proxy/
or
http://<VM IP>:8081/api/v1/namespaces/default/services/http:hello-node:/proxy/
2. port-forward 사용
# port-forward 설정
kubectl port-forward service/hello-node --address 0.0.0.0 8787:8080 &
# 확인
curl http://127.0.0.1:8787
curl http://localhost:8787
curl http://<VM IP>:8787
3. nginx 설정
# nginx reverse proxy 설정
# /etc/nginx/sites-available/reverse-proxy.conf
server {
listen 8080;
listen [::]:8080;
location / {
proxy_pass http://{minikube ip}:8080;
}
}
# 접속
http://{minikube가 설치된 서버의 IP}:8080
4. Basic Authentication 지원하지 않음
https://docs.datadoghq.com/security/default_rules/cis-kubernetes-1.5.1-1.2.2/
https://coffeewhale.com/kubernetes/authentication/http-auth/2020/05/03/auth02/
Basic Authentication 적용시, 'minikube error: unknown flag: --basic-auth-file' 에러 발생
4. Bearer Authentication 사용
https://minikube.sigs.k8s.io/docs/tutorials/token-auth-file/
https://kubernetes.io/docs/reference/access-authn-authz/authentication/#static-token-file
https://coffeewhale.com/kubernetes/authentication/http-auth/2020/05/03/auth02/
https://m.blog.naver.com/onevibe12/222062965425
token 생성
# 디렉토리 생성
# .minikube/files 아래에 두면, 자동으로 node안에 동일한 위치에 파일이 생성됨
mkdir -p ~/.minikube/files/etc/ca-certificates
# token 파일 생성
# token, usr, uid, group 은 적절하게 셋팅 필요
echo token,user,uid,"group1,group2,group3" > token.csv
minikube 시작
# 생성한 token 파일과 동일한 위치 지정
minikube start --extra-config=apiserver.token-auth-file=/etc/ca-certificates/token.csv
# 이미 생성된 minikube에 적용(작동 여부는 확인 필요)
minikube ssh
cd /etc/kubernetes/manifests
vi kube-apiserver.yaml
# -kube-apiserver 아래에 아래 내용 추가
- --token-auth-file=/etc/ca-certificates/token.csv
nginx 설정
# proxy 설정
# ${token}을 token값으로 변경
proxy_set_header Authorization "Bearer ${toekn}";
token 키만 있으면 무조건 접속이 되니, 적절한지는 판단 필요함
'k8s' 카테고리의 다른 글
minikube 설정 테스트 (0) | 2023.04.08 |
---|---|
miniKube LoadBalancer 설정(metallb) (0) | 2023.03.19 |
minikube 명령어 (0) | 2023.03.18 |
Window에 kubectl 설치 및 minikube 연결하기 (0) | 2023.03.01 |
우분투에 Minikube 설치 (0) | 2023.02.25 |