Cert-manager๋?
Cert-manager๋ Kubernetes ๋ด๋ถ์์ HTTPS ํต์ ์ ์ํ ์ธ์ฆ์๋ฅผ ์์ฑํ๊ณ , ๋ ์ธ์ฆ์์ ๋ง๋ฃ ๊ธฐ๊ฐ์ด ๋๋ฉด ์๋์ผ๋ก ์ธ์ฆ์๋ฅผ ๊ฐฑ์ ํด์ฃผ๋ ์ญํ ์ ํ๋ Certificate manager controller์ ๋๋ค.
์ฝ๊ฒ ๋งํด Kubernetes ๋ด์์ ์ธ๋ถ์ ์กด์ฌํ๋ Issuers๋ฅผ ํ์ฉํ๊ฑฐ๋ selfsigned Issuer๋ฅผ ์ง์ ์์ฑํด์ ์์ฑํ์ฌ Certificate๋ฅผ ์์ฑํ๊ณ , ์ด๋ ์์ฑ๋ Certificate๋ฅผ ๊ด๋ฆฌํ๋ฉฐ ์ธ์ฆ์์ ๋ง๋ฃ ์๊ฐ์ด ๊ฐ๊น์์ง๋ฉด ์ธ์ฆ์๋ฅผ ์๋์ผ๋ก ๊ฐฑ์ ํด์ค๋๋ค.
Cert-manager๊ฐ ์ฌ์ฉํ๋ ์ธ๋ถ์ ์กด์ฌํ๋ Issuer๋ ์๋์ ์ด๋ฏธ์ง์ ๊ฐ์๋ฐ, ๋ํ์ ์ธ Issuer๋ก ๋ฌด๋ฃ๋ก ์ฌ์ฉ๋๊ณ ์๋ let's enscrypt๋ฅผ ๋ง์ด ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ํ์ง๋ง let's enscrypt๋ฅผ ์ฌ์ฉํ ์์ ๋ฅผ ๊ตฌ๊ธ๋ง์ ํ๋ฉด ์ฝ๊ฒ ๊ฒ์ํ ์ ์๊ธฐ ๋๋ฌธ์ ํด๋น ํฌ์คํ ์์๋ self-signed Issuer๋ฅผ ์์ฑํ๊ณ ๊ทธ๋ฅผ ์ด์ฉํด Certificate๋ฅผ ์์ฑ ๋ฐ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ผ๋ก ์์ฑ๋ Certificate๋ฅผ ์ด์ฉํด์ MySQL์ HTTPS๋ฅผ ์ ์ฉํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
ํด๋น ํฌ์คํ ์์ ์๋์ ๊ฐ์ version์ ์ฌ์ฉํ์์ต๋๋ค.
kubernetes version : v1.17.12
cert-manager version: v1.1.0
๐ Cert-manager deploy
cert-manager๋ ์คํ์์ค์ด๋ฉฐ ์ฌ๊ธฐ์์ ๊ณต์์ ์ธ ๋ฆด๋ฆฌ์ฆ ๋ฒ์ ์ ํ์ธํ ์ ์์ต๋๋ค.
jetstack / cert-manager
์์ ์ด๋ฏธ์ง์ ๊ฐ์ด Release ๋ฒ์ ์ ํด๋ฆญํ๊ณ ๋ฐ์ผ๋ก ์คํฌ๋กค์ ๋ด๋ฆฌ๋ค ๋ณด๋ฉด ํ์ฌ release ๋ฒ์ ์ ํด๋นํ๋ cert-manager.yaml ํ์ผ์ ์ฐพ์ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์๋์ yaml ํ์ผ์ ์ด์ฉํด์ kubernetes ํด๋ฌ์คํฐ์ cert-manager๋ฅผ ๋ฐฐํฌํ ๊ฒ์ ๋๋ค.
๋จผ์ cert-manager๋ฅผ ๋ฐฐํฌํ cert-manager๋ผ๋ ์ด๋ฆ์ namespace๋ฅผ ์์ฑํ๋๋ก ํ๊ฒ ์ต๋๋ค.
# Create namespace
kubectl create namespace cert-manager
๊ทธ ํ ์๋์ ๋ช ๋ น์ด๋ก kuberetes์ ๋ฐ๋ก cert-manager๋ฅผ ๋ฐฐํฌํ ์ ์์ต๋๋ค. ์๋์ ๋ช ๋ น์ด์์ ํ์ฌ ๊ธฐ์ค์ผ๋ก ์ต์ release ๋ฒ์ ์ธ v1.1.0 ๋ฒ์ ์ ์ฌ์ฉํ์์ง๋ง, ์ฌ์ฉํ๊ธฐ์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ฒ์ ์ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค.
kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v1.1.0/cert-manager.yaml
์ ๋ cert-manager๋ฅผ ์ ์ธ์ ์ผ๋ก ๋ ๋ค์ ์ฌ์ฉํ ๊ฒ์ ์ผ๋ํด์ local์ cert-manager.yaml ํ์ผ์ ๋ฐ๊ณ , apply ๋ช ๋ น์ด๋ฅผ ํตํด์ cert-manaer๋ฅผ ๋ฐฐํฌํ๊ฒ ์ต๋๋ค.
# cert-manager.yaml ํ์ผ ๋ค์ด๋ก๋
curl -LO https://github.com/jetstack/cert-manager/releases/download/v1.1.0/cert-manager.yaml
# ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ์ํด cert-manager.yaml -> cert-manager.1.1.0.yaml๋ก ์ด๋ฆ ๋ณ๊ฒฝ
mv cert-manager.yaml cert-manager.1.1.0.yaml
# cert-manager install
kubectl apply -f cert-manager.1.1.0.yaml
install์ด ์๋ฃ๋๋ค๋ฉด `kubectl get all` ๋ช ๋ น์ด๋ฅผ ํตํด์ ํด๋ฌ์คํฐ์ cert-manager๊ฐ ์ ์์ ์ผ๋ก ์ค์น๋์๋์ง ํ์ธํด๋ด ๋๋ค.
๐ Cert-manager๋ฅผ ์ด์ฉํด selfsigned ์ธ์ฆ์ ์์ฑํ๊ธฐ
Cert-manager๋ ๊ธฐ๋ณธ์ ์ผ๋ก let's enscypt๊ฐ ์๋ Cluster ๋ด๋ถ์์ ์ฌ์ฉํ ์ ์๋ ์์ฒด์ ์ผ๋ก ์๋ช ๋ self-signed issuer๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์ Issuer๋ ํํ CA๋ผ๊ณ ์นญํ๋ ์๋ช ํ ์ ์๋ ์ฃผ์ฒด๋ฅผ ์ง์นญํ๋ ๋จ์ด๋ก Certificate(์ธ์ฆ์)๋ฅผ ์์ฑํ ์ ์๋ ๋์์ ๋๋ค.
self-signed ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๊ฒ ๋ ๊ฒฝ์ฐ ๋ธ๋ผ์ฐ์ ์์ ์๋์ ์ด๋ฏธ์ง์ ๊ฐ์ด ์ข์ง ์์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ค ์ ์์ง๋ง, cluster ๋ด๋ถ์์ ์ฌ์ฉํ๊ฑฐ๋ ํ ์คํธ ์ฉ๋๋ก ์ฌ์ฉํ๋ ๊ฒ์ด๋ผ๋ฉด self-signed ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ด ๋ ์ ์์ต๋๋ค.
self-signed ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๊ฒ ๋ ๊ฒฝ์ฐ ๋ธ๋ผ์ฐ์ ์ ํํ
์ฐ๋ฆฌ๊ฐ ๊ตฌ์ฑํ๊ฒ ๋ ๋๋ต์ ์ธ ์์คํ ๊ตฌ์ฑ๋๋ ์๋์ ์ด๋ฏธ์ง์ ๊ฐ์ต๋๋ค. ์ ์ผ ๋จผ์ cert-manager๋ฅผ ์ด์ฉํด์ ํด๋ฌ์คํฐ ์ ์ญ์์ ์ฌ์ฉํ ์ ์๋ Cluster Issuer๋ฅผ ์์ฑํ๊ณ , ํด๋น Issuer๋ฅผ ์ด์ฉํด์ ๊ฐ๊ฐ์ Namespace ๋ณ๋ก Certificate๋ฅผ ์์ฑํ๋๋ก ํ๊ฒ ์ต๋๋ค.
1. Issuer ์์ฑ
์, ์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก Cluster์ ์ธ์ฆ์๋ฅผ ๋ง๋ค์ด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๊ฐ์ฅ ๋จผ์ ํ ์ผ์ Self-signed Issuer๋ฅผ ๋ง๋๋ ์ผ์ ๋๋ค. ์กฐ๊ธ ์ ์ ์ด์ผ๊ธฐํ๋ฏ์ด Issuer๋ Certificate๋ฅผ ๋ง๋ค ์ ์๋ ์ฃผ์ฒด์ธ๋ฐ, Issuer์๋ ๊ทธ๋ฅ Issuer์ ClusterIssuer๊ฐ ์์ต๋๋ค.
์ฌ๊ธฐ์ Issuer๋ Namespace์ ๋ฆฌ์์ค๋ก ์ํด์๋ Namespace ์์์๋ง ์ฌ์ฉํ ์ ์๋ ๋ฆฌ์์ค์ ๋๋ค. ๋ฐ๋ฉด ClusterIssuer๋ Namespace๋ฅผ ๊ฐ๋ฆฌ์ง ์๊ณ Cluster ์ ์ญ์์ ์ ๊ทผํ ์ ์๋ ๋ฆฌ์์ค์ ๋๋ค.
์ ๋ ClusterIssuer๋ก ์์ฑํ๋๋ก ํ๊ฒ ์ต๋๋ค.
# selfsigned-issuer.yaml
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: selfsigned-issuer
spec:
selfSigned: {}
2. Certificate ์์ฑ
์ด๋ฒ์๋ ์์ฑํ ClusterIssuer๋ฅผ ์ฌ์ฉํด์ self-signed Certificate๋ฅผ ์์ฑํ๊ณ ์ด๋ฅผ ์ด์ฉํด์ MySQL์ ์ ์ฉํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. cert-manager๊ฐ Issuer๋ฅผ ํตํด Certificate๋ฅผ ์์ฑํ๊ฒ ๋๋ฉด ํด๋น Certificate๋ ์ํด์๋ Namespace ๋ด์ ๋ชจ๋ ์๋น์ค๊ฐ ์ฌ์ฉํ ์ ์๋ ์ธ์ฆ์๊ฐ ๋ฉ๋๋ค.
ํด๋น ์ธ์ฆ์๊ฐ ์์ฑ๋จ๊ณผ ๋์์ Certificate๋ Kubernetes๋ด์์ ์ฌ์ฉํ ์ ์๋๋ก Public key, Secret key์ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง secret ๋ฆฌ์์ค๊ฐ ์์ฑํ๊ฒ ๋๋๋ฐ, ์ด๋ ์์ฑ๋๋ secret ๋ฆฌ์์ค๋ฅผ ์ด์ฉํด์ kubernetes ๋ด์์ pod์ ์ฃผ์ ํ๋ ๋ฑ ๋ค์ํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
secret์ ๊ดํ ๋ด์ฉ์ ์๋์ ์ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํฉ๋๋ค.
# selfsigned-cert.yaml
apiVersion: cert-manager.io/v1alpha2
kind: Certificate
metadata:
name: selfsigned-cert
namespace: default
spec:
secretName: selfsigned-cert-tls
duration: 2880h # 120d
renewBefore: 360h # 15d
commonName: ooeunz.tistory.com
isCA: false
keySize: 2048
keyAlgorithm: rsa
keyEncoding: pkcs1
usages:
- digital signature
- key encipherment
- server auth
issuerRef:
name: selfsigned-issuer
kind: ClusterIssuer
group: cert-manager.io
Certificate์ spec์ ๊ฐ๋ตํ๊ฒ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
- secretName: Certificate์ ๋์์ ํจ๊ป ์์ฑ๋๋ secret์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.
- duration: ์ธ์ฆ์์ ์ ํจ๊ธฐ๊ฐ์ ์ง์ ํฉ๋๋ค.
- renewBefore: ์๋์ผ๋ก ์ธ์ฆ์๋ฅผ ๊ฐฑ์ ํ ๋๋ฅผ ์ง์ ํฉ๋๋ค. ์ฌ๊ธฐ์ duration๊ณผ renewBefore๋ go time์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ "ms", "s", "m", "h"๋ง์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ ์์ธํ ๋ด์ฉ์ ์ฌ๊ธฐ์์ ํ์ธ ํ์ค ์ ์์ต๋๋ค.
- commonName: host name์ ์ง์ ํ๋ ํ๋์
๋๋ค. dnsName ์ต์
๊ณผ ํจ๊ฒ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ๋ง์ฝ commonName์ด ์ค์ ๋์ง ์์์ ๊ฒฝ์ฐ์ dnsName์ ๊ฐ์ฅ ์ฒซ๋ฒ์งธ ๊ฐ์ commonName์ผ๋ก ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค. ํ์ง๋ง ํด๋น ์์ ์์ dnsName์ ์ง์ ํ์ง ์๊ฒ ์ต๋๋ค.
- isCa: ์ด ์ธ์ฆ์๋ฅผ CA์๋ช
์ด ์ ํจํ๋๋ก ํ๋ ์ต์
์
๋๋ค. ํด๋น ์ต์
์ true๋ก ํด์ค ๊ฒฝ์ฐ `cert sign`๊ฐ์ด usages ๋ฆฌ์คํธ์ ์๋์ผ๋ก ์ถ๊ฐ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๊ณต์ ๋ํ๋จผํธ์์ ํ์ธํ์ค ์ ์์ต๋๋ค.
- keySize: ์ํธํํ key์ ๊ธธ์ด๋ฅผ ์ง์ ํฉ๋๋ค. ๊ธธ์ด๊ฐ ๊ธธ์ด์ง์๋ก ์ํธํ์ ์์ค์ด ๋์์ง๋ฉฐ ์ง์ ํ์ง ์์ ์์ default๋ก 2048 ๊ฐ์ ๊ฐ์ง๋๋ค. ์ง์ ํ ์ ์๋ ์ต์
์ผ๋ก 2048 ์ด์ธ์ 4096, 8192๊ฐ ์์ต๋๋ค. ๋ณด์๊ฐ๋์ ๋ํ ๋ ์์ธํ ๋ด์ฉ์ ์ฌ๊ธฐ์ ํ์ธํ ์ ์์ต๋๋ค.
- keyAlgorithm: ์ฌ์ฉํ ์ํธํ ์๊ณ ๋ฆฌ์ฆ์ ์ง์ ํฉ๋๋ค.
- keyEncoding: ์ด๋ค keyEncoding์ ์ฌ์ฉํ ๊ฒ์ธ์ง์ ๊ดํ ๋ถ๋ถ์ ๋๋ค. PKCS#1๊ณผ PKCS#8๋ง์ ์ฌ์ฉํ ์ ์๊ณ default๋ก PKCS#1์ ์ง์ํฉ๋๋ค.
์์ yaml ํ์ผ์ apply ํ๋ฉด ๋ง์๋๋ฆฐ ๊ฒ์ฒ๋ผ certificate์ secret ๋ฆฌ์์ค๊ฐ ํจ๊ป ์์ฑ๋ฉ๋๋ค. secret์๋ ์๋์ ๊ฐ์ data๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
- ca.crt: public certificate file
- tls.crt: Public Key
- tls.key: Private Key
์ด์ ๊ฐ์ด ์์ฑ๋ Secret์ MySQL์ ์ฃผ์ ์์ผ์ฃผ๊ณ , ๋์์ ์๋์ ๊ฐ์ด my.cnf ํ์ผ์ secret์์ ์๋ ํค๋ค์ ๋ฃ์ด์ฃผ๋๋ก ํฉ๋๋ค.
# mysql-pvc.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: mysql-pv-volume
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 20Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/data"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pv-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
# mysql-config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: mysql-config
namespace: default
data:
my.cnf: |-
[mysqld]
ssl-ca=/etc/mysql/tls/ca.crt
ssl-cert=/etc/mysql/tls/tls.crt
ssl-key=/etc/mysql/tls/tls.key
require_secure_transport=ON ## This line is the only setting required to enforce secure connections
# mysql-server.yaml
apiVersion: v1
kind: Service
metadata:
name: mysql-http
spec:
ports:
- port: 3306
selector:
app: mysql
clusterIP: None
# mysql-statefulset.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mysql
spec:
selector:
matchLabels:
app: mysql
serviceName: mysql
template:
metadata:
labels:
app: mysql
spec:
terminationGracePeriodSeconds: 10
containers:
- name: mysql
image: mysql:8.0.21
env:
- name: MYSQL_ROOT_PASSWORD
value: password
imagePullPolicy: Always
ports:
- containerPort: 3306
name: mysql
volumeMounts:
- name: mysql-persistent-storage
mountPath: /var/lib/mysql
- name: mysql-cnf
mountPath: /etc/mysql/conf.d/my.cnf
subPath: my.cnf
- name: mysql-tls
mountPath: /etc/mysql/tls
readOnly: true
volumes:
- name: mysql-persistent-storage
persistentVolumeClaim:
claimName: mysql-pv-claim
- name: mysql-cnf
configMap:
name: mysql-config
- name: mysql-tls
secret:
secretName: selfsigned-cert-tls
์ด์ ์์ ๊ฐ์ด secret์ ์ฃผ์ ํ๊ณ , mysql์ ๋ค์ด๊ฐ์ ์๋์ ๋ช ๋ น์ด๋ก SSL์ด ์ ์์ ์ผ๋ก ์ ์ฉ๋๋์ง ํ์ธํด ๋ณผ ์ ์์ต๋๋ค.
SHOW VARIABLES LIKE '%ssl%';
have_openssl๊ณผ have_ssl ์ต์ ์ด YES๋ก ๋์ด์๊ณ , ssl_ca, ssl_cert, ssl_key์ ๋ฐฉ๊ธ mountํด์ค key๊ฐ ์ ์์ ์ผ๋ก ์ ์ฉ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
๐ค Jdbc๋ก ์ฐ๊ฒฐํ ๋ ์ฃผ์ํ ์
์ด์ Spring Boot์์ MySQL์ ์ฐ๊ฒฐ์ ํด๋ณผ ํ ๋ฐ์. jdbc๋ก ์ฐ๊ฒฐ์ ํ ๊ฒฝ์ฐ์ ์ฃผ์ํ ์ ์ด ๋ช ๊ฐ์ง๊ฐ ์์ต๋๋ค. ํ์ฌ require_secure_transport=ON ์ต์ ์ ์ฃผ์๊ธฐ ๋๋ฌธ์ MySQL์ ์ ์ํ๊ธฐ ์ํด์ ํ์์ ์ผ๋ก SSL ์ ์์ ํ์ฌ์ผ ํฉ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ฐ๋ฆฌ๋ self-sigend ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ tomcat์์ ์ธ์ฆ์๋ฅผ vailation ํ๋ ๊ณผ์ ์์ ์ปค๋ฅ์ ์ ๋์ด๋ฒ๋ฆฌ๊ฒ ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ธ์ฆ์์ ๋ํ์ฌ validation ํ์ง ์๋ ์ต์ ์ ์ฃผ๋๋ก ํ๊ฒ ์ต๋๋ค. (๋๋ ์๋ฐ์๋ ์ธ์ฆ์๋ฅผ ํฌํจํ์ฌ ์๋ฐฉํฅ ์ธ์ฆํ๋ ๋ฐฉ๋ฒ๋ ์์ง๋ง, ์ฌ๊ธฐ์ ๋จ์ํ validation์ ํ์ง ์๋๋ก ํ๊ฒ ์ต๋๋ค.)
์ฌ๊ธฐ์ MySQL ๋ฒ์ ์ ๋ฐ๋ผ validation ์ต์ ์ ์ฃผ๋ ๋ฐฉ๋ฒ์ด ์กฐ๊ธ ์ฐจ์ด๊ฐ ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๊ณต์ ๋ํ๋จผํธ๋ฅผ ์ฐธ๊ณ ํฉ๋๋ค.
MySQL 8.0.12
MySQL 8.0.12 ์ดํ ๋ฒ์ ์์ useSSL=true, verifyServerCertificate=true ์ผ ๊ฒฝ์ฐ ์๋ฒ ์ธ์ฆ์์ ์ ํจ์ฑ ๊ฒ์ฆ์ด ํ์ฑํ ๋๊ฒ ๋ฉ๋๋ค. (๋ค๋ง hostname์ ๊ฒ์ฆํ์ง ์์ต๋๋ค.) ๋ฐ๋ผ์ 8.0.12 ๋ฒ์ ์ดํ์์ verifyServerCertificate=false๋ฅผ ์ฃผ์ด ์ ํจ์ฑ ๊ฒ์ฆ์ ํ์ง ์๋๋ก ํฉ๋๋ค.
# MySQL 8.0.12 ๋ฒ์ ์ดํ
jdbc:mysql://localhost:3306/cruise?useSSL=true&verifyServerCertificate=false
MySQL 8.0.13 ์ดํ
๋ฐ๋ฉด MySQL 8.0.13 ์ดํ ๋ฒ์ ์์๋ SSLMode๊ฐ VERTIFY_CA์ด๊ฑฐ๋ VERIFY_IDENTITY์ผ ๋๋ง ์๋ฒ ์ธ์ฆ์ ์ ํจ์ฑ์ ํ์ธํ๊ฒ ๋ฉ๋๋ค. ๋ํ useSSL์ต์ ์ญ์ true๊ฐ์ด default์ด๋ฏ๋ก ๋ฐ๋ก ์ต์ ์ ์ฃผ์ง ์์ผ๋ฉด useSSL=true& verifyServerCertificate=false์ ๊ธฐ๋ฅ์ ํ๊ฒ ๋ฉ๋๋ค.
# MySQL 8.0.13 ๋ฒ์ ์ดํ
jdbc:mysql://localhost:3306/cruise?
ํฌ์คํ ์ ์ฌ์ฉํ ์ฝ๋๋ ์๋์ URL์์ ํ์ธํ ์ ์์ต๋๋ค. ๐
'...' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[K8S] EKS ํด๋ฌ์คํฐ ์ธ์ฆ(authenfication) ๋ฐ ๊ถํ(authorization) ์ค์ ํ๊ธฐ (7) | 2021.10.27 |
---|---|
[Kubernetes] ์ฟ ๋ฒ๋คํฐ์ค Docker Hub-Private Image ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ (0) | 2021.10.25 |
[MySQL] ๋คํ / ์ํฌํธ ํ๊ธฐ Dump / Import (0) | 2021.10.22 |
[MySQL] MySQL ๊ถํ (0) | 2021.10.22 |
[Docker] Configuring MySQL NDB Cluster by using Docker and pointing with WSO2 APIM (0) | 2021.10.22 |