테스트용으로 끄적끄적 적어두는 것. 실무용으로는 적합하지 않다.
1. Cert-Manager 설치
최신버전의 Cert-Manager는 https://github.com/cert-manager/cert-manager/releases 여기서 확인 할 것
여기서는 1.18.0으로 진행
설치
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.18.0/cert-manager.yaml
2. AWS 자격 증명 Secret 생성
aws-secret.yaml 으로 secert을 생성한다.
aws acces key id와 access key는 생성 후 생성된 값을 입력.
apiVersion: v1
kind: Secret
metadata:
name: aws-secret
namespace: cert-manager
type: Opaque
stringData:
AWS_ACCESS_KEY_ID: <YOUR_ACCESS_KEY_ID>
AWS_SECRET_ACCESS_KEY: <YOUR_SECRET_ACCESS_KEY>
적용
kubectl apply -f aws-secret.yaml
3. ClusterIssuer 생성
cluster-issuer.yaml 파일로 생성
region과 hostedZoneId는 본인 것으로 수정할 것.
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-dns
spec:
acme:
email: your-email@example.com
server: https://acme-v02.api.letsencrypt.org/directory
privateKeySecretRef:
name: letsencrypt-dns-account-key
solvers:
- dns01:
route53:
region: <aws-region>
hostedZoneID: <optional-hosted-zone-id>
accessKeyIDSecretRef:
name: aws-secret
key: AWS_ACCESS_KEY_ID
secretAccessKeySecretRef:
name: aws-secret
key: AWS_SECRET_ACCESS_KEY
적용
kubectl apply -f cluster-issuer.yaml
4. Certificate 리소스 생성
certificate.yaml 로 생성 kani.im이라는 도메임을 가지고 있음으로
kani.im과 *.kani.im으로 도메인을 발급 받도록 한다.
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: kani-im-cert
namespace: default
spec:
privateKey:
rotationPolicy: Always
secretName: kani-im-cert-tls
issuerRef:
name: letsencrypt-dns
kind: ClusterIssuer
dnsNames:
- "*.kani.im"
- "kani.im"
적용
kubectl apply -f certificate.yaml
확인 해보자
kubectl get certificaterequest -n default
잘 발급 됐다면 AWS에 _acme challenge가 생성이 되고 아래외 같이 잘 보일 것이다.
NAME APPROVED DENIED READY ISSUER REQUESTER AGE
kani-im-cert-1 True True letsencrypt-dns system:serviceaccount:cert-manager:cert-manager 10m
무언가 잘 안되어 디버깅을 해야한다면, 잘 찾아보자.
kubectl describe certificate -n default
AWS의 SA나 권한 설정은 다루지 않았다. 만약 SA를 생성하다면 최소 권한으로 아래 policy를 이용하자. 적절하게 hostedzoneid 은 수정할 것.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowCertManagerToChangeRecords",
"Effect": "Allow",
"Action": [
"route53:ChangeResourceRecordSets"
],
"Resource": "arn:aws:route53:::hostedzone/<HOSTED_ZONE_ID>"
},
{
"Sid": "AllowCertManagerToListAndMonitor",
"Effect": "Allow",
"Action": [
"route53:ListHostedZones",
"route53:ListResourceRecordSets",
"route53:GetChange"
],
"Resource": "*"
}
]
}
'IT 관련 끄적끄적' 카테고리의 다른 글
Local Cluster에 Cilium 설치 (0) | 2025.06.15 |
---|