티스토리 뷰
k8s cluster를 설치할 때 API server의 IP는 보안 때문에 보통 private IP를 지정합니다.
아래와 같이 말입니다.
kubeadm init --pod-network-cidr=<value> --apiserver-advertise-address=<master node의 private ip>
어떠한 이유로 외부에서 k8s의 API server로 접근해야 한다면 kubernetes cluster를 다시 설치해야 할까요 ?
예를 들어 본인 PC에 Oracle VirtualBox같은걸로 Centos를 설치하고, 그 VM에서 kubectl로 k8s cluster를 접근하고 싶을때 말입니다.
아래 글에 그 방법을 자세하게 설명하고 있습니다.
https://blog.dudaji.com/kubernetes/2020/04/08/add-ip-to-kube-api-cert.html
단, 위에서 'kubeadm init phase certs apiserver --config {yaml file path}'명령 대신에 아래 명령을 사용하셔야 합니다.
kubeadm init phase upload-config kubelet --config {yaml file path}
시간 없으신 분을 위해 간단히 정리하면 아래와 같습니다.
1) 작업 디렉토리 생성
$ mkdir -p ~/work
$ cd ~/work
2) kubeadm config 내용 추출
$ kubectl get configmap kubeadm-config -n kube-system -o jsonpath='{.data.ClusterConfiguration}' > kubeadm-conf.yaml
3) kubeadm-conf.yaml파일에 certSANS항목 추가
아래 예처럼 apiServer밑에 'certSANs'를 추가하고, master node의 private, public IP를 지정합니다.
apiServer:
certSANs:
- 169.56.70.205
- 10.178.189.25
extraArgs:
authorization-mode: Node,RBAC
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: k8s.gcr.io
kind: ClusterConfiguration
kubernetesVersion: v1.22.1
networking:
dnsDomain: cluster.local
podSubnet: 10.244.0.0/16
serviceSubnet: 10.96.0.0/12
scheduler: {}
4) api server CERT key 재생성
- 기존 api server CERT key들을 백업합니다. 기존에 key가 있으면 생성 되지 않습니다.
$ cd /etc/kubernetes/pki
$ mkdir backup
$ mv apiserver.* backup
- key파일 생성
$ kubeadm init phase certs apiserver --config ~/work/kubeadm-conf.yaml
$ ls -al /etc/kubernetes/pki/apiserver.*
-rw-r--r--. 1 root root 1302 Aug 23 08:57 /etc/kubernetes/pki/apiserver.crt
-rw-------. 1 root root 1679 Aug 23 08:57 /etc/kubernetes/pki/apiserver.key
5) configmap 'kubeadm-config'에 변경 사항 반영
$ kubeadm init phase upload-config kubelet --config ~/work/kubeadm-conf.yaml
6) 접근할 외부 서버(예: bastion)에 k8s config파일 다시 다운로드 하고 k8s config의 API Server IP를 public IP로 변경
scp root@{k8s master ip}:~/.kube/config ~/.kube/config
vi ~/.kube/config
'Cloud > Kubernetes' 카테고리의 다른 글
쿠버네티스 시크릿 데이터 암호화 저장 설정 (1) | 2022.01.18 |
---|---|
kubernetes리소스 관리 유틸리티 k9s 소개 (1) | 2021.10.07 |
OS user생성과 Kubernetes config 자동화 shell (0) | 2021.03.23 |
prometheus와 grafana를 이용한 통합모니터링 체계 구축 (2) | 2021.02.03 |
EFK스택을 이용한 통합로깅체계 구축 (3) | 2021.02.02 |
- Total
- Today
- Yesterday
- API Composition
- agile
- 스핀프로젝트
- SAGA
- 버라이어티가격
- 스포티파이
- 육각형인간
- spotify
- AXON
- CQRS
- 분초사회
- Event Sourcing
- 디토소비
- 돌봄경제
- 마이크로서비스 패턴
- 호모프롬프트
- 리퀴드폴리탄
- 애자일
- 요즘남편 없던아빠
- 마이크로서비스
- micro service
- 도파밍
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |