Rancher 인증서 설정
- 재훈 정
- 2022년 7월 8일
- 1분 분량
1) 공인인증서는 인증서로 kubernetes/tls secret 생성 ingress 등록
2) 사설인증서는 CA 인증서, 서버 인증서로 kubernetes/tls secret 생성 ingress 등록
ca 인증서 : cattle-system 네임스페이스 "tls-ca" 로 생성, Rancher 구동 시 볼륨 등록
server 인증서 : rancher ingress "tls-rancher-ingress" 에 등록
3) Cert-Manager 이용 인증서 등록 시 ingress annotation 삭제 후 신규 인증서 적용
#CA 키 / 인증서 생성
openssl genrsa -out ca.key 2048
openssl req -new -x509 -days 3650 -key ca.key -subj "/C=KR/ST=SE/L=SE/O=Kubeworks/CN=KW Root CA" -out ca.crt
#서버 키 / 인증서 생성
openssl req -newkey rsa:2048 -nodes -keyout server.key -subj "/C=KR/ST=SE/L=SE/O=Kubeworks/CN=*.kubeworks.net" -out server.csr
openssl x509 -req -extfile <(printf "subjectAltName=DNS:kubeworks.net,DNS:rancher.kubeworks.net") -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt
#서버 인증서 출력
openssl x509 -in server.crt -text
#Rancher private CA secret 생성
kubectl -n cattle-system create secret generic tls-ca --from-file=cacerts.pem=./ca.crt
#서버 인증서 Secret 생성
k create secret tls tls-rancher-ingress --key server.key --cert server.crt
#Rancher Chart 설정 값
ingress.tls.source=secret
privateCA=true
helm upgrade -i rancher rancher-stable/rancher \
--namespace cattle-system \
--set hostname=rancher.kw01 \
--set ingress.tls.source=secret \
--set privateCA=true
#사설인증서를 통해 Agent 등록을 위한 CA CHECKSUM 확인
curl -k -s -fL rancher.kw01/v3/settings/cacerts | jq -r .value > cacert.tmp
sha256sum cacert.tmp | awk '{print $1}'
#ingress.yml
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
# 아래 2줄 삭제
cert-manager.io/issuer: rancher
cert-manager.io/issuer-kind: Issuer
nginx.ingress.kubernetes.io/proxy-connect-timeout: "30"
nginx.ingress.kubernetes.io/proxy-read-timeout: "1800"
nginx.ingress.kubernetes.io/proxy-send-timeout: "1800"
labels:
app: rancher
name: rancher
namespace: cattle-system
spec:
rules:
- host: rancher.kubeworks.net
http:
paths:
- backend:
serviceName: rancher
servicePort: 80
tls:
- hosts:
- rancher.kubeworks.net
secretName: tls-rancher-ingress
Comments