identity server์ค์ ํ๋๋ก ์๋ก ๋ฐฐ์ฐ๊ฒ ๋์๋ค.
ํ์๊ฐ์
ํ ๋ผ์ด์ผ์ค ๋ฐ๊ธฐ
์ปค๋ฎค๋ํฐ ์๋์
์ผ๋ก ๋ผ์ด์ผ์ค๋ฅผ ๋ฐ์์ ๋ค์ด๋ก๋ํด๋์.
arogocd / helm์ผ๋ก ์ค์น
Copy apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: curity
namespace: argocd
spec:
destination:
name: ''
namespace: curity
server: 'https://kubernetes.default.svc'
source:
path: ''
repoURL: 'https://curityio.github.io/idsvr-helm/'
targetRevision: 0.9.26
chart: idsvr
helm:
parameters:
- name: curity.adminUiHttp
value: 'true'
- name: curity.config.uiEnabled
value: 'true'
- name: curity.config.password
value: YOUR-PASS
- name: curity.admin.logging.stdout
value: 'true'
- name: ingress.enabled
value: 'true'
- name: ingress.runtime.host
value: curity.yourdomain.com
- name: ingress.admin.host
value: admin.curity.yourdomain.com
- name: networkpolicy.enabled
value: 'false'
- name: replicaCount
value: '3'
project: default
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
ingress๋ก ์ ๊ทผํ๋๋ฒ
https://admin.curity.yourdomain.com/admin/
port forwarding์ผ๋ก ์ ๊ทผํ๋๋ฒ
Copy export POD_NAME=$(kubectl get pods -l "role=curity-idsvr-admin" -o jsonpath="{.items[0].metadata.name}")
kubectl port-forward $POD_NAME 6749:6749
http://localhost/admin/
port forwarding์ผ๋ก๋ ์ ๊ทผ์ด ๋๊ณ ingress๋ก ์๋๋ฉด helm ์ต์
์ค์ network policy๋ฅผ ๋๊ณ ์คํํด๋ด๋ผ ๊ทธ๋ผ ๋ ๊ฒ์ด๋ค.
Run Basic Setup
์ค์ ํด๋ url๋ก ์ ๊ทผํ๋ฉด ๋ค์ ํ๋ฉด์ด ๋์จ๋ค.
์ค์ ํด๋ ๋น๋ฒ์ผ๋ก ๋ก๊ทธ์ธ
Run Basic Setup ํด๋ฆญ
์ปค๋ฎค๋ํฐ ๋ผ์ด์ผ์ค๋ฅผ ๋ฐ๊ธ๋ฐ์์ ์
๋ก๋ ํด์ฃผ์.
next ํด๋ฆญ
์ผ๋จ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋ชจ๋ next๋ฅผ ๋๋ฅด๋ฉด ๋๋ค.
๋ง์ง๋ง์ ์ปค๋ฐ๋ฒํผ์ ํด๋ฆญํ์.
curity๋ ์ ์ ๋ฐ์ดํฐ๋ฑ์ db์ ์ ์ฅํ์ง๋ง ์ด ์ค์ ํ์ผ๋ฑ์ xml๋ก ๋ก์ปฌ์ ์ ์ฅํ๋๊ฒ๊ฐ๋ค.
๋ค ๋ก๋ฉ์ด ๋๋ฉด
admin ํ๋์ runtime ๋ชจ๋ 3๊ฐ๊ฐ ์ฌ๋ผ์ ์๋ค.
url change
baseurl์ ์์ ํด์ฃผ์.
general ๋ฉ๋ด์์๋ ์์
๋ณ๊ฒฝํ ๋๋ง๋ค commit์ ํด์ผํ๋ค.
jdbc
curity๋ jdbc๋๋ผ์ด๋ฒ๋ฅผ ํฌํจํ๊ณ ์์ง ์๋ค. ์ค๋ผํด ๋ผ์ด์ผ์ค๋๋ฌธ์ ์ง์ ๋ค์ด๋ฐ์์ ์ปจํ
์ด๋์ ๋ฃ์ด์ค์ผํ๋ค.
Copy kubectl cp ~/Downloads/mysql-connector-java-8.0.26.jar -n curity $(kubectl get pods -l "role=curity-idsvr-admin" -o jsonpath="{.items[0].metadata.name}"):/opt/idsvr/lib/plugins/data.access.jdbc/
//todo ์ด๋ถ๋ถ์ ๋์ค์ ์ข๋ ๋ค๋ฌ์ด์ผํ ๋ฏ. ๋งค๋ฒ ์ปจํ
์ด๋ ์ฌ๋ผ์ฌ๋๋ง๋ค ๋ฃ์ด์ค์๋ ์์ผ๋.
์ด์ jdbc connection string์ ์ ์ด์ฃผ์.
create
Copy jdbc:mysql://MYSQL_HOST:3306/se_curity_store?useSSL=false
์ค์ ํ์.
์ถ๊ฐ ์๋ฃ
ํ
์ด๋ธ์ ์์ฑํด์ค์ผํ๋ค.
์คํฌ๋ฆฝํธ๋ ์ด๋๋ฏผ ์ปจํ
์ด๋์ ์๋ค.
๊ฐ์ง๊ณ ์์ ๋๋น์ ์ ์ฉํด์ฃผ์.
Copy create database se_curity_store;
Copy kubectl cp -n curity $(kubectl get pods -l "role=curity-idsvr-admin" -o jsonpath="{.items[0].metadata.name}"):/opt/idsvr/etc/mysql-create_database.sql ~/Downloads/mysql-create_database.sql
์ด์ํ๊ฒ ์๋ฌ๊ฐ ๋์ Linked Accounts ์๊น์ง๋ง ๋จผ์ ์คํํ๊ณ ์๋ฃํ ๋ค ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ์๋ค.
commit
๋๋น๊น์ง ์๋ฃ
ํ์ฌ๊น์ง ๊ตฌ์กฐ
custom image
Dockerfile์ ๋ง๋ค์ด์ ์ปค์คํฐ๋ง์ด์ฆํ์ jdbc ํ์ผ์ ๋ณต์ฌํด์ผํจ.
๋์ค์ ์ธ๋ ค๊ณ git๋ ์ค์น๊ฐ ์๋ฃ๊ฐ ๋์ผํจ.
Copy cat > Dockerfile <<EOF
FROM curity.azurecr.io/curity/idsvr:6.4.1
COPY mysql-connector-java-8.0.26.jar /opt/idsvr/lib/plugins/data.access.jdbc/
USER root
RUN apt update -y
RUN apt install git curl -y
USER idsvr:idsvr
EOF
docker build . -t curity-custom
docker run -it -e PASSWORD=YOUR-PASS -p 6749:6749 -p 8443:8443 --name curity curity-custom
์ ์คํ๋๋ ๋ณด๊ณ jdbc driver ์๋์ง ๋ณด๊ณ git/curl์๋๋์ง ํ์ธํ๋ฉด ๋๋ค.
์ค์ ํ์ผ ๋ฐฑ์
user data๋ ์ธ๋ถ ๋๋น์ ์ ์ฅ๋๋ฏ๋ก ์๊ด์์ง๋ง ์ค์ ํ์ผ์ pod๊ฐ ์ฎ๊ฒจ์ง๋ฉด ๋ชจ๋ ์์ด์ง๋ค.
admin์ xml๋ก ์์ฑ์ด ๋๋ ์ด๊ฑธ ๋ฐฑ์
๋ฐ์์ผํ๋ค.
์ค์ ํ์ผ์ ์ ์ฅํ ๊นํ๋ธ repo๋ฅผ ๋ง๋ค์. ๊ทธ๋ฆฌ๊ณ PAT(personal access token)์ ์์ฑ ์ ์ฅํด๋์.
curity๊ฐ commit hooks๋ฅผ ์ง์ํ๋ค.
์ปจํ
์ด๋์ /opt/idsvr/usr/bin/post-commit-scripts/ ์ ์คํธ๋ฆฝํธ๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ์คํ์ ํ๋ค.
custom image๋ฅผ ๋ง๋ค๋ ์ด ํ์ผ์ ์์ ๋ฃ์ด์ฃผ๋ฉด ์ข์๊ฑฐ๊ฐ๋ค.
Copy #!/bin/sh
git config --global user.email "teamsmiley@gmail.com"
git config --global user.name "smiley"
cd /tmp
rm -rf /tmp/curity
git clone https://teamsmiley:PAT@github.com/teamsmiley/curity.git # replace PAT with your PAT
/opt/idsvr/bin/idsh << EOF
show configuration | display xml | save /tmp/curity/config-backup.xml
EOF
cd curity
git add --all
git commit -m "curity commit update"
git push
vi Dockerfile
Copy FROM curity.azurecr.io/curity/idsvr:6.4.1
USER root
RUN apt update -y
RUN apt install git curl vim -y
USER root
COPY mysql-connector-java-8.0.26.jar /opt/idsvr/lib/plugins/data.access.jdbc/
RUN chown -R idsvr:root /opt/idsvr/lib/plugins/data.access.jdbc/mysql-connector-java-8.0.26.jar
RUN chmod -R 400 /opt/idsvr/lib/plugins/data.access.jdbc/mysql-connector-java-8.0.26.jar
COPY full-backup.cli /opt/idsvr/usr/bin/post-commit-scripts/
RUN chown -R idsvr:idsvr /opt/idsvr/usr/bin/post-commit-scripts/
RUN chmod -R 500 /opt/idsvr/usr/bin/post-commit-scripts/full-backup.cli
RUN mkdir -p /home/idsvr
RUN chown -R idsvr:idsvr /home/idsvr
USER idsvr:idsvr
EXPOSE 8443
EXPOSE 6749
EXPOSE 4465
EXPOSE 4466
์ด์ ์ด ๋์ปคํ์ผ์ ๋น๋ํด์ registry์ ๋ฑ๋ก
Copy export CR_PAT=YOUR_PAT
echo $CR_PAT | docker login ghcr.io -u USERNAME --password-stdin
# docker build . -t ghcr.io/OWNER/IMAGE_NAME:latest
docker build . -t ghcr.io/teamsmiley/curity:latest
# docker push ghcr.io/OWNER/IMAGE_NAME:latest
docker push ghcr.io/teamsmiley/curity:latest
์ด์ ์ด ์ด๋ฏธ์ง๋ฅผ ์จ๋ณด์.
์ด์ ์น์ฌ์ดํธ์์ ๋ญ๊ฐ๋ฅผ ๋ฐ๊ตฌ๊ณ commit์ ํด๋ณด์.
์ปจํ
์ด๋์ /tmp์ ํ์ผ์ด ์ ์ฅ๋ซ๋์ง ํ์ธ
์์ฑ๋์๋ค.
์๋์ผ๋ก ๊น์ผ๋ก ๋งค๋ฒ ์ปค๋ฐ์ ํ๋ค.
์ ์๋๋ฉด ๋ก๊ทธ๋ฅผ ๋ณด์ .
Copy tail -f /opt/idsvr/var/log/post-commit-scripts.log
๋ณต๊ตฌ
git์ ์ปค๋ฐ๋์๋ ํ์ผ์ ๊ฐ์ง๊ณ secret๋ฅผ ๋ง๋ ๋ค.
Copy kubectl create secret generic idsvr-config \
--from-file=default-conf=default-conf.xml
helm์ผ๋ก ๋ณต๊ตฌํ ๋ ๋ค์ ์ต์
์ ์ฌ์ฉํ๋ค.
Copy --set curity.config.configurationSecret=idsvr-config
--set curity.config.configurationSecretItemName=default-conf
helm ์ต์
์ ํตํ ๋ฐฑ์
helm ์ต์
์ curity.config.backup=true
๋ฅผ ์ฌ์ฉํ์.
commit ์ ํ ๋๋ง๋ค secret์ ์ถ๊ฐ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ์ด ๋๋ค.
๋ ์ง-ํธ๋์ญ์
ID๋ก ์ ์ฅ์ด ๋๋ค.
helm ์ ์ด์ฉํด์ ๋ณต๊ตฌ
curity.config.configurationSecret
curity.config.configurationSecretItemName๋ฅผ ์ฌ์ฉ
๋ฐฑ์
์ ๋ณต์ํฉ๋๋ค
helm์ผ๋ก ๋ณต๊ตฌํ ๋ ๋ค์ ์ต์
์ ์ฌ์ฉํ๋ค.
Copy --set curity.config.configurationSecret=curity-idsvr-config-backup
--set curity.config.configurationSecretItemName=2021-09-01-65E-71EF1-563AE.xml
์ฌ๋ฌ๊ฐ ์์๋ ํท๊ฐ๋ฆฌ๊ธฐ๋ ํ๊ฒ๋ค. git๋ฐฉ์์ด ๋ ๋์์๋ ์์๊ฑฐ๊ฐ๋ค.