처음에 무지성으로,, 강의자료를 따라하다가,,,
컨피그맵을 다음과 같이 만들었고
apiVersion: v1
kind: ConfigMap
metadata:
name: env-config
data:
datasource_url : jdbc:mysql://mysql-0.mysql.default.svc.cluster.local:3306/com02?characterEncoding=UTF-8&ServerTimezone=UTC
datasource_username : root
datasource_password : (비밀번호)
mail_username : com02charge@gmail.com
mail_password : (메일앱비밀번호)
파드에 환경변수를 설정해주었고
apiVersion: v1
kind: Pod
metadata:
name: web-apl
spec:
containers:
- name: web
image: nginx
env:
- name: DB_URL ## 컨테이너 환경 변수명
valueFrom:
configMapKeyRef:
name: env-config ## 컨피그맵명
key: datasource_url ## 키 항목
- name: DB_USERNAME ## 컨테이너 환경 변수명
valueFrom:
configMapKeyRef:
name: env-config ## 컨피그맵명
key: datasource_username ## 키 항목
- name: DB_PASSWORD ## 컨테이너 환경 변수명
valueFrom:
configMapKeyRef:
name: env-config ## 컨피그맵명
key: datasource_password ## 키 항목
- name: MAIL_USERNAME ## 컨테이너 환경 변수명
valueFrom:
configMapKeyRef:
name: env-config ## 컨피그맵명
key: mail_username ## 키 항목
- name: MAIL_PASSWORD ## 컨테이너 환경 변수명
valueFrom:
configMapKeyRef:
name: env-config ## 컨피그맵명
key: mail_password ## 키 항목
디플로이먼트를 따로 지정해주었었는데,,,
## 디플로이먼트
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-deploy-parktest5
spec:
replicas: 3
selector: # deployment - pod 대응용
matchLabels:
app: web-parktest5
template: # 여기서부터 파드 템플릿
metadata:
labels:
app: web-parktest5 # 파드의 라벨
spec:
containers:
- name: com02-parktest5
image: minyeongpark5/com02-cgmtest:0.0.4
$ kubectl logs web-deploy-parktest5-58c475c9df-9zsc6 파드를 직접 확인해보았을 때
아래와 같은 오류를 배출했다.
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.1.4)
2023-12-06T10:03:47.761Z INFO 1 --- [ main] c._.c.Com02BackendProjectApplication : Starting Com02BackendProjectApplication v0.0.1-SNAPSHOT using Java 17.0.2 with PID 1 (/app.jar started by root in /)
2023-12-06T10:03:47.767Z INFO 1 --- [ main] c._.c.Com02BackendProjectApplication : No active profile set, falling back to 1 default profile: "default"
2023-12-06T10:03:49.629Z INFO 1 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2023-12-06T10:03:49.814Z INFO 1 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 170 ms. Found 3 JPA repository interfaces.
2023-12-06T10:03:51.295Z INFO 1 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2023-12-06T10:03:51.320Z INFO 1 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2023-12-06T10:03:51.321Z INFO 1 --- [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.13]
2023-12-06T10:03:51.569Z INFO 1 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2023-12-06T10:03:51.572Z INFO 1 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 3648 ms
2023-12-06T10:03:52.423Z INFO 1 --- [ main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]
2023-12-06T10:03:52.569Z INFO 1 --- [ main] org.hibernate.Version : HHH000412: Hibernate ORM core version 6.2.9.Final
2023-12-06T10:03:52.584Z INFO 1 --- [ main] org.hibernate.cfg.Environment : HHH000406: Using bytecode reflection optimizer
2023-12-06T10:03:52.918Z INFO 1 --- [ main] o.h.b.i.BytecodeProviderInitiator : HHH000021: Bytecode provider name : bytebuddy
2023-12-06T10:03:53.387Z INFO 1 --- [ main] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer
2023-12-06T10:03:53.426Z INFO 1 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2023-12-06T10:03:55.477Z ERROR 1 --- [ main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool initialization.
java.sql.SQLException: Access denied for user '${DB_USERNAME}'@'10.44.2.195' (using password: YES)
이렇게 오류가 났었다... 환경변수를 못 반영하고 있는 오류...
팀원과 함께 오류를 찾아보던 중,,,
파드에만 환경변수를 적용했기 때문이라는 것을 알게 되었고...
## 디플로이먼트
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-deploy-parktest5
spec:
replicas: 3
selector: # deployment - pod 대응용
matchLabels:
app: web-parktest5
template: # 여기서부터 파드 템플릿
metadata:
labels:
app: web-parktest5 # 파드의 라벨
spec:
containers:
- name: com02-parktest5
image: minyeongpark5/com02-cgmtest:0.0.4
env:
- name: DB_URL ## 컨테이너 환경 변수명
valueFrom:
configMapKeyRef:
name: env-config ## 컨피그맵명
key: datasource_url ## 키 항목
- name: DB_USERNAME ## 컨테이너 환경 변수명
valueFrom:
configMapKeyRef:
name: env-config ## 컨피그맵명
key: datasource_username ## 키 항목
- name: DB_PASSWORD ## 컨테이너 환경 변수명
valueFrom:
configMapKeyRef:
name: env-config ## 컨피그맵명
key: datasource_password ## 키 항목
- name: MAIL_USERNAME ## 컨테이너 환경 변수명
valueFrom:
configMapKeyRef:
name: env-config ## 컨피그맵명
key: mail_username ## 키 항목
- name: MAIL_PASSWORD ## 컨테이너 환경 변수명
valueFrom:
configMapKeyRef:
name: env-config ## 컨피그맵명
key: mail_password ## 키 항목
이렇게 아예 디플로이먼트를 만들어줄 때 아래에 환경변수를 설정해주었고...
적용해서 디플로이먼트와 파드들을 만들어주고!
파드들이 잘 돌아가는 상태!
pod/web-deploy-parktest5-794584fbb7-mhmb4
pod/web-deploy-parktest5-794584fbb7-p2c5h
pod/web-deploy-parktest5-794584fbb7-sxrtg
서비스의 loadbalancer의 external ip 주소로 접속해보면!!
잘 뜬다!!!! 와아아아아아아 도와준 팀원아,,, 정말 감사합니다..
컴피그맵 만들 때 참고한 글
https://jeongwoo.tistory.com/120
https://aws-diary.tistory.com/131