개요 §
- Github 써도 된다.
- 근데 (1) 좀 디테일한 정보들을 git repo 에 넣고싶고 (2) 그런 정보들을 private repo 일지라도 Github 도 못보게 하고 싶다. (3) 어차피 Forgejo 로 private git server 구성하는게 별로 어렵지도 않다.
(주의) SSH 는 안된다. §
- 물론 이건 Forgejo 때문은 아니다.
- 작성시점 Cilium 의 TCPRoute 가 안된다 (참고).
- 물론 뭐 NodePort 같은걸로 해도 되긴 하지만 뭔가 꼬롬해서 그냥 일단은 HTTP only 로 사용하자.
설치 방법 §
- 우선 namespace 부터 만든다 (선택).
kubectl create namespace {{Namespace 이름}}
- 그리고 Forgejo Helm chart 는 admin 이름/패스워드를 별도의 Secret 으로 주입하게 해준다. 그래서 아래처럼 만들어준다.
password 는 맘대로 해도 된다. 근데 어차피 admin 은 잘 안쓸거니까 아래처럼 랜덤으로 하게 했다.
kubectl -n {{Namespace 이름}} create secret generic {{Secret 이름}} \
--from-literal=username={{Admin ID}} \
--from-literal=password="$(openssl rand -base64 24)"
- 비밀번호를 확인하고싶으면 이래하면 된다:
- 당연한거지만 secret 의 내용은 암호화된게 아니다. 그래서 이름이 secret 이긴 하지만 절대로 외부에 공개되어서는 안된다.
kubectl -n {{Namespace 이름}} get secret {{Secret 이름}} -o jsonpath='{.data.password}' | base64 -d; echo
- Helm value 작성
- 몇가지만 짚어보자.
replicaCount Forgejo 는 기본적으로 SQLite 를 사용한다. SQLite 는 기본적으로 single node 이기 때문에 replicaCount 도 1이어야 한다.
- 물론 SQLite 말고 Postgres 를 사용할 수도 있다. 근데 굳이?
service.ssh.type: ClusterIP 위에서 말한 대로 일단은 HTTP-only 로 사용할거다. 그래서 SSH Service 도 노출시키지 않고 ClusterIP 로.
tcpRoute: 위에서 말한 대로 지금 Cilium 의 TCPRoute 가 안된다. 그래서 비활성화.
- 그리고 차트 버전
17.1.3 기준, TCPRoute API 버전이 gateway.networking.k8s.io/v1alpha2 다. 근데 이 가이드 에서 설치한 TCPRoute API 버전은 gateway.networking.k8s.io/v1 이다. 그래서 어차피 이 차트에 있는 template 은 못쓴다.
replicaCount: 1
persistence:
enabled: true
size: {{PVC 사이즈}}
service:
ssh:
type: ClusterIP
ingress:
enabled: false
httpRoute:
enabled: true
parentRefs:
- name: {{Gateway 이름}}
namespace: {{Gateway 가 있는 namespace 이름}}
sectionName: {{Gateway listener 이름}}
hostnames:
- {{UI 도메인}}
terminate: true
tcpRoute:
enabled: false
gitea:
admin:
existingSecret: {{Secret 이름}}
config:
server:
ROOT_URL: https://{{UI 도메인}}
DOMAIN: {{UI 도메인}}
DISABLE_SSH: true
service:
DISABLE_REGISTRATION: true
helm upgrade --install forgejo oci://code.forgejo.org/forgejo-helm/forgejo -n {{Namespace 이름}} -f values.yaml