테마 자동화

안녕하세요, 여러분. 여기 처음 온 사람입니다 :slight_smile:

저는 Kubernetes 클러스터에서 bitnami Discourse의 Docker화 버전(최신 버전)을 실행하고 있습니다. 정말 멋진 프로젝트인 것 같습니다. 다만, 테마 설치를 자동화하는 과정에서 몇 가지 문제에 직면했습니다. 기본적으로 CI/CD를 통해 이 Docker 이미지를 빌드, 배포, 실행 및 설정해야 하므로, 최초 로그인 시 모든 것이 준비되어 있어야 합니다. 설정 사항 중 하나는 커스텀 테마 설치입니다. 여러 포럼과 문서를 살펴본 결과, 이를 프로그래매틱하게 설치하는 네이티브 방식은 없는 것으로 이해하고 있습니다. 찾은 것은 클릭 단계별 가이드뿐이었습니다(제가 틀렸다면 지적해 주세요).

제 첫 번째 아이디어는 k8s를 통해 Discourse 파일 시스템에 테마 파일을 “수동으로” 추가하는 것이었습니다. 하지만 Discourse는 파일 자체를 내부 로직에 따라 이름을 변경하는 등 독특한 방식으로 관리하고 있어, 예측이 불가능한 상황입니다.

더 자세히 살펴보다가 discourse_theme라는 훌륭한 CLI 도구를 발견했습니다. 여기서의 문제는 Discourse에서 먼저 API 키를 생성해야만 작동한다는 점입니다(다시 한번… 제가 틀렸다면 지적해 주세요).

결국 몇 가지 질문이 있습니다:
첫째, 제가 놓친 Discourse에서 테마를 프로그래매틱하게 설치하는 다른/네이티브 방식이 있나요?
둘째, 스크립트에서 Discourse의 API 키를 가져오는 방법이 있나요?
마지막으로, 이 같은 문제를 우회할 수 있는 Kubernetes 트릭을 아시는 분이 계신가요?

미리 감사드립니다.

감사합니다

공식 설치 방법을 사용할 경우 지원됩니다: Install a Theme programatically

제가 생각하기에 유일한 해결책은 원하는 플러그인이 포함된 이미지를 빌드하고, 이를 Docker 리포지토리에 푸시한 뒤, 적절한 ENV 변수를 지정하여 실행하는 것입니다. 그리고 적어도 해당 이미지가 처음 실행될 때 데이터베이스 마이그레이션이 수행되고 에셋이 사전 컴파일되어 S3에 푸시되는 것을 확인해야 합니다. 기존 이미지가 실행 중인 동안 SKIP_POST_DEPLOYMENT_MIGRATIONS가 설정된 상태로 한 번 마이그레이션을 수행하고, 새 이미지가 시작되고 기존 이미지들이 종료된 후 SKIP_POST_DEPLOYMENT_MIGRATIONS를 해제한 상태에서 다시 수행하거나, db:ensure_post_migrations rake 작업을 실행하는 것이 좋습니다.

실행 중인 이미지 중 하나에서 rake 작업을 실행할 수 있습니다. 예를 들어 다음과 같이 실행할 수 있습니다.

         rake api_key:create_master['description of key']

위 방법들이 조금 더 진행하는 데 도움이 될 수 있습니다. 과거에 GCP와 AWS에서 클라이언트를 위해 kubernetes 인스턴스를 운영한 경험이 있습니다. 당시에는 작동 방식에 대해 100% 만족하지 못했습니다(클라이언트 관점에서는 완벽하게 작동했지만, 제 관점에서는 매우 우아하지는 않았습니다. 하지만 제가 고칠 정도로 비효율적이지도 않았습니다!). 여기서 더 많은 것을 제안하기는 어렵지만, 더 많은 도움이 필요하시면 직접 연락 주십시오.