Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 7879
- Ingress Controller Fake
- formik
- 개발 어렵당.ㅠ
- Armeria
- jar 배포
- 노드간 통신
- RedirectService
- ㅉ때
- LPOS
- 플루터
- 오블완
- OIDC
- 월급루팡 일지
- R2DBC Paging
- 티스토리챌린지
- jsonMarshaller
- intellij
- 애자일 싫타
- hbase 저장공간 설정
- nGinder
- 핀포인트
- pinpoint
- save/update
- fake jwt
- UnsupportedOperationException
- reids
- pinpoint 2.5.3
- 논블록킹 성능
- Loki 로그
Archives
- Today
- Total
대머리개발자
grpc tls 설정. 본문
728x90
pod간 Grpc 통신은 단순 PlainText로 간단하게 하면 된다.
하지만 테스트가 녹록하지 않다.. 매번 반영해서 테스트를 해왔다.
미루고 미루던 작업을 진행한다.
내부 통신은 일절 변경 없다... 인그레스가 다 감춰준다. ㅎ
ingress 설정
grpc 전용 인그레스 별도 추가 해야 한다.
metadata:
name: grpc-ingress
namespace: default
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/backend-protocol: "GRPC" // 필수
spec:
tls:
- hosts:
- dev.도메인.co.kr
secretName: tls-secrets
rules:
http:
paths:
- path: /oauth.user.UserService
pathType: Prefix
backend:
service:
name: oauth-service
port:
number: 80
아르메리아 프레임워크를 이용하기 때문에. http 포트와 grpc 포트가 동일하다.
설정은.. 너무 힘들다.
// TLS
private fun createTlsChannel(): ManagedChannel {
val sslContext = SslContextBuilder.forClient()
.trustManager(File(certFilePath))
.applicationProtocolConfig(io.grpc.netty.shaded.io.netty.handler.ssl.ApplicationProtocolConfig(
io.grpc.netty.shaded.io.netty.handler.ssl.ApplicationProtocolConfig.Protocol.ALPN,
io.grpc.netty.shaded.io.netty.handler.ssl.ApplicationProtocolConfig.SelectorFailureBehavior.NO_ADVERTISE,
io.grpc.netty.shaded.io.netty.handler.ssl.ApplicationProtocolConfig.SelectedListenerFailureBehavior.ACCEPT,
io.grpc.netty.shaded.io.netty.handler.ssl.ApplicationProtocolNames.HTTP_2))
.build()
// url 도메인
return NettyChannelBuilder.forAddress(url, 443)
.keepAliveTimeout(3, TimeUnit.SECONDS)
.sslContext(sslContext)
.maxInboundMessageSize(33554432)
.build()
}
// service (pod) 간 호출 - 내부 통신
private fun createChannel() : ManagedChannel{
// url 서비스 이름
return ManagedChannelBuilder.forAddress(url, 80)
.keepAliveTimeout(3, TimeUnit.SECONDS)
.maxInboundMessageSize(33554432)
.usePlaintext()
.build();
}
728x90
'개발이야기 > 개념' 카테고리의 다른 글
아르메리아 프레임워크 최신화 UP (0) | 2025.03.27 |
---|---|
flatMap vs Map...(3) 논블록킹 vs 블록킹 (0) | 2025.03.14 |
앱 푸시 - FCM - 조금 고도화 (0) | 2025.02.27 |
1년이 더해지는 날짜 Formatter 이슈 (0) | 2025.01.03 |
앱 푸시 - FCM (0) | 2024.11.27 |