CloudNetaStudy - Kubernets Networtk 3기 실습 스터디 게시글입니다.
HTTPS 처리 (TLS 종료) -링크
- svc-pod.yaml
apiVersion: v1 kind: Pod metadata: name: pod-https labels: app: https spec: containers: - name: container image: k8s.gcr.io/echoserver:1.6 terminationGracePeriodSeconds: 0 --- apiVersion: v1 kind: Service metadata: name: svc-https spec: selector: app: https ports: - port: 8080
- ssl-termination-ingress.yaml
출처 : https://kschoi728.tistory.com/266 cat <<EOT> ssl-termination-ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: https spec: ingressClassName: nginx tls: - hosts: - kans.com secretName: secret-https rules: - host: kans.com http: paths: - path: / pathType: Prefix backend: service: name: svc-https port: number: 8080 EOT
- 생성 확인 및 secret 생성 후 접속 확인
# 서비스와 파드 생성 curl -s -O https://raw.githubusercontent.com/gasida/NDKS/main/7/svc-pod.yaml kubectl apply -f svc-pod.yaml # 도메인 변경 MYDOMAIN1=<각자 자신의 닉네임의 도메인> 예시) gasida.com MYDOMAIN1=kans.com echo $MYDOMAIN1 sed -i "s/kans.com/$MYDOMAIN1/g" ssl-termination-ingress.yaml # 인그레스 생성 kubectl apply -f ssl-termination-ingress.yaml # 인증서 생성 # openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=dkos.com/O=dkos.com"mkdir key && cd key MYDOMAIN1=kans.com openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=$MYDOMAIN1/O=$MYDOMAIN1" tree # Secret 생성 kubectl create secret tls secret-https --key tls.key --cert tls.crt # Secret 확인 kubectl get secrets secret-https kubectl get secrets secret-https -o yaml ------------------- # 자신의 PC 에서 접속 확인 : PC 웹브라우저 # 접속 확인 : -k 는 https 접속 시 : 접속 포트 정보 확인 curl -Lk https://$MYDOMAIN1:30443 ## (옵션) /etc/hosts 파일 변경 없이 접속 방안 curl -Lk -H "host: $MYDOMAIN1" https://$MYDOMAIN1:30443
- Nginx SSL Termination 패킷 확인 : 중간 172.16.29.11 이 nginx controller
# 패킷 캡처 명령어 참고 export IngHttp=$(kubectl get service -n ingress-nginx ingress-nginx-controller -o jsonpath='{.spec.ports[0].nodePort}') export IngHttps=$(kubectl get service -n ingress-nginx ingress-nginx-controller -o jsonpath='{.spec.ports[1].nodePort}') tcpdump -i <nginx 파드 veth> -nnq tcp port 80 or tcp port 443 or tcp port 8080 or tcp port $IngHttp or tcp port $IngHttps tcpdump -i <nginx 파드 veth> -nn tcp port 80 or tcp port 443 or tcp port 8080 or tcp port $IngHttp or tcp port $IngHttps -w /tmp/ingress.pcap
- 오브젝트 삭제 kubectl delete pod,svc,ingress --all
- Nginx 인그레스 컨트롤러 삭제 helm uninstall -n ingress ingress-nginx
(옵션) HTTP → HTTPS Redirect 설정 - 링크
- 설정 및 확인
# nginx 서비스 편집 : 아래 내용 추가 kubectl edit svc -n ingress-nginx ingress-nginx-controller --- annotaion nginx.ingress.kubernetes.io/ssl-redirect: 'true' ---
'Kubernetes' 카테고리의 다른 글
[ Kans 3 Study - 7w ] 실습환경 구성 (1) | 2024.10.19 |
---|---|
[ Kans 3 Study - 6w ] 4. Gateway API (0) | 2024.10.13 |
[ Kans 3 Study - 6w ] 3. Host 기반 라우팅 / 카나리 업그레이드 (0) | 2024.10.13 |
[ Kans 3 Study - 6w ] 2. Ingress (2) | 2024.10.12 |
[ Kans 3 Study - 6w ] 1.실습환경 구성 (6) | 2024.10.12 |