[Home-K8S] #22 FluxCD 계층과 분리 / 다중 클러스터 리소스 공유와 설정 분리
FluxCD - yaml 앞서 fluxcd 를 이용해서 helm chart 를 구성했습니다. 그 외에 일반적인 yaml
80번 포트가 비어있어야 하므로 nginx 서비스를 끈다.
sudo snap install certbot --classic
sudo systemctl stop nginx.service
sudo certbot certonly --standalone # Email / Y / N / domain
하면 다음과 같은 로그가 나온다.
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/<domain>/fullchain.pem
Key is saved at: /etc/letsencrypt/live/<domain>/privkey.pem443번 포트를 열어주어 https 를 사용하게 한다.
server {
listen [::]:443 ssl;
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/<domain>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<domain>/privkey.pem
server_name mydomain.com; # 자기 도메인
location / {
proxy_pass http://localhost:8080/; # code-server 포트
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
proxy_set_header Accept-Encoding gzip;
}
}
server {
if ($host = mydomain.com) { # 자기 도메인
return 301 https://$host$request_uri;
}
listen 80;
listen [::]:80;
server_name mydomain.com; # 자기 도메인
return 404;
}sudo nginx -t # nginx 설정 확인
sudo systemctl start nginx인증서를 발급하는 데 80번 포트를 사용한다. --nginx 옵션으로 사용하고 있는 nginx를 통해 재발급 받을 수도 있지만,
Standalone으로 하려면 사용하고 있는 80번 포트를 비워놔야 한다.
앞 단계에서 nginx로 80번 포트를 사용중이니, renew 하기 전에 nginx를 끄는 작업이 필요하다.
자동 재발급을 위해 crontab 을 사용한다. sudo crontab -e 로 열고 다음을 붙여 넣는다.
30 4 1,15 * * /usr/bin/certbot renew --quiet --pre-hook "/usr/sbin/service nginx stop" --post-hook "/usr/sbin/service nginx start"
(분 시 일 월 요일) 1,15일마다 4시 30 분 renew. pre/post hook 으로 nginx 재시작
잘 진행되지 않을 경우 80 번 포트를 강제로 종료 (fuser -k 80/tcp) 하는 과정을 추가
code-server 의 비밀번호 설정보다 nginx로 설정하는 것이 더 안전하단다.
nginx의 경우 팝업이 나오기 때문에 안드로이드tv 나 일반적이지 않은 환경에서 사용하기 힘들 수 도 있다.
(apache2-utils 의 경우 패스워드를 설정하고 나서는 다시 지워줘도 된다.)
# nginx 패스워드 설정sudo apt-get install apache2-utilssudo htpasswd -c /etc/nginx/.htpasswd userid # 사용할 id, password 입력nginx Config 수정
# /etc/nginx/sites-available/code-server.conf
server {
server_name domain.com;
location / {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
...
}
...
}nginx의 비밀번호를 설정했다면, Code-server의 비밀번호 인증을 해제해줘도 된다.
# ~/.config/code-server/config.yamlbind-addr: 127.0.0.1:8080auth: nonepassword: 1234cert: false
Comments