반응형
이번 포스팅에서는 HTTPS통신을 위해 Nginx Ingress + cert-manager를 구성해 보겠다.
1. cert-manager
- kubernetes에서 HTTPS통신을 위해 인증서 생성 및 갱신을 해주는 역할을 한다.
- 설치방법은 아래 URL을 참고한다.
- https://cert-manager.io/docs/installation/kubectl/
2. self-signed Issuer
- cert-manager는 다양한 Issuer를 통해 인증서 관리가 가능하다.
- 테스트 용도를 위한 구축으로 실제 인증서가 없기 때문에 이번 포스팅에서는 self-signed issuer를 사용한다.
- Issuer는 Namespace별로 종속되는 Issuer와 Cluster전체에 적용 가능한 ClusterIssuer가 존재한다.
3. Issuer 및 certificate 생성
- Namespace에 종속되지 않는 ClusterIssuer를 생성한다.
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: selfsigned-cluster-issuer
spec:
selfSigned: {}
- 위에 생성한 ClusterIssuer를 참조하는 Certificate를 생성한다.
- Certificate는 Namespace별로 종속되며 해당 Certificate를 통해 key를 갖는 secret이 생성된다.
- 해당 secret을 통해 Namespace내의 서비스들은 HTTPS통신이 가능하다.
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: my-selfsigned-ca
namespace: test
spec:
isCA: true
commonName: example.test.com
secretName: example-secret
privateKey:
algorithm: RSA
size: 2048
issuerRef:
name: selfsigned-cluster-issuer
kind: ClusterIssuer
group: cert-manager.io
- 각각의 resource가 생성되었는지 확인한다.
test@DESKTOP-F55SF6V:~/cert-manager (⎈|test-cluster:default)# k get clusterissuer
NAME READY AGE
selfsigned-cluster-issuer True 27h
test@DESKTOP-F55SF6V:~/cert-manager (⎈|test-cluster:default)# k get cert -n test
NAME READY SECRET AGE
my-selfsigned-ca True example-secret 38m
test@DESKTOP-F55SF6V:~/cert-manager (⎈|test-cluster:default)# k get secret -n test
NAME TYPE DATA AGE
example-secret kubernetes.io/tls 3 17m
4. Ingress 설정하기
- 생성된 secret을 참고하여 Ingress설정을 진행한다.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
name: test-ing
namespace: test
spec:
ingressClassName: nginx
rules:
- host: example.test.com
http:
paths:
- backend:
service:
name: nginx-svc
port:
number: 80
path: /
pathType: ImplementationSpecific
tls:
- hosts:
- example.test.com
secretName: example-secret
- Ingress를 생성 후 https://example.test.com 을 호출해보면 아래와 같이 접속되는 것을 확인할 수 있다.
- 정식 인증서가 아니라 에러는 나지만 테스트용도로 사용하기엔 문제가 없다.
반응형
최근 Let's Encrypt나 CSP에서 제공하는 다른 Issuer들도 많이 사용한다.
갱신기간을 정해두고 자동으로 관리해준다는 점에서 cert-manager는 큰 장점이 있다.
반응형
'Cloud > Kubernetes' 카테고리의 다른 글
Container의 개념 (0) | 2024.10.13 |
---|---|
Kubernetes PodDisruptionBudget(PDB) 활용 (0) | 2023.05.03 |
kubernetes환경에 nginx ingress 설치하기 (0) | 2023.04.12 |
EKS multiple CIDR사용 방법 (0) | 2023.04.01 |
Kubernetes plug-in 설치 및 사용 가이드(kube-ctx, ns, node-shell, neat, kube-ps1) (0) | 2023.03.29 |