【AWS】ELB+Gitlab의 구축·설정(Google 인증 첨부)

4144 단어 elbGitLabAWS

목적



AWS에서 Gitlab을 구축함에 있어서 ELB에서 HTTPS를 접수하고 후단 EC2의 Gitlab 서버에서 처리.
그것을 실현하기 위한 Gitlab 설정 방법을 정리한다.
아울러 Gitlab에서 oogle 인증을 할 경우의 설정도 기재.

전체 개요는 이런 느낌


  • ELB는 "https://xxx"로 보통 443 포트 개방
  • "https://xxx/gitlab/"로 액세스한 경우는 Gitlab 서버에 "http://xxx/gitlab"로 보냅니다.
  • 그 외에 「https://xxx/app1/」라고 했을 경우는 다른 서버에 배분하는 이미지



  • 하지 않는 것


  • ELB, EC2 등의 AWS 설정
  • 공식적으로 나열된 Gitlab 설치 절차
  • google 인증을위한 google 측 설정

  • 전제



    Gitlab 버전: GitLab Community Edition 9.3.6
    표준 gitlab 설치 완료
    공식 설치 절차 (CentOS6)
    ※AWSLinux에서도 마찬가지

    gitlab에 SSH 통신을하지 않습니다. Push 등은 HTTPS로 인증한다.

    1. ELB와 Gitlab의 협력



    1-1. gitlab.rb 편집
    ==[ELBの連携まで]==
    #cd /etc/gitlab/gitlab.rb
    #diff gitlab.rb gitlab.rb.org
    
    13,14c13
    < external_url 'https://xxx/gitlab'
    ---
    > external_url 'http://xxx'
    807c806
    < nginx['listen_port'] = 80
    ---
    > # nginx['listen_port'] = nil
    811c810
    < nginx['listen_https'] = false #https通信の無効化
    ---
    > # nginx['listen_https'] = nil
    817c816
    <  nginx['proxy_set_headers'] = {
    ---
    > # nginx['proxy_set_headers'] = {
    821c820
    <   "X-Forwarded-Proto" => "https",
    ---
    > #  "X-Forwarded-Proto" => "https",
    825c824
    <  }
    ---
    > # }
    

    1-2. 재부팅
    gitlab-ctl reconfigure
    gitlab-ctl start
    

    1-3. ELB 연계의 포인트

    gitlab.rb 만 편집하고 reconfigure로 반영하기 위해 가장 깨끗한 방법이라고 생각합니다.
    직접 nginx.conf 등 수정하면 reconfigure 시에 덮어쓰기 때문에.

    브라우저로부터의 화면 표시(링크나 POST의 경로)는 HTTPS로 할 필요가 있지만,
    gitlab 서버 자체를 HTTP로 처리하는 것이 귀찮았습니다.

    2. Gitlab에서 Google 인증을 설정하는 경우



    2-1. gitlab.rb 편집
    ==[GoogleAuthまで]==
    #cd /etc/gitlab/gitlab.rb
    #diff gitlab.rb gitlab.rb.org
    
    221c220
    < gitlab_rails['omniauth_enabled'] = true
    ---
    > # gitlab_rails['omniauth_enabled'] = false
    223d221
    < gitlab_rails['omniauth_allow_single_sign_on'] = ['google_oauth2']
    230,239c228,235
    < gitlab_rails['omniauth_external_providers'] = ['google_oauth2']
    < gitlab_rails['omniauth_providers'] = [
    <   {
    <     "name" => "google_oauth2",
    <     "app_id" => "各自のapp-id",
    <     "app_secret" => "各自のシークレット",
    <     "args" => { "access_type" => "offline", "approval_prompt" => "",
    <     "hd" =>  "許容ドメイン(hoge.com)" }
    <   }
    < ]
    ---
    > # gitlab_rails['omniauth_providers'] = [
    > #   {
    > #     "name" => "google_oauth2",
    > #     "app_id" => "YOUR APP ID",
    > #     "app_secret" => "YOUR APP SECRET",
    > #     "args" => { "access_type" => "offline", "approval_prompt" => "" }
    > #   }
    > # ]
    

    2-2. 재부팅
    gitlab-ctl reconfigure
    gitlab-ctl start
    

    2-3. google 인증 포인트

    특정 도메인만 허용하려면 hd 옵션을 사용하는 것입니다.
    google 인증 측에서 특정 도메인만 대응해 줍니다.
    특정 도메인이 필요하지 않은 경우 옵션을 제외하면 괜찮을 것입니다.



    Gitlab, Redmine, Jenkins 등 이용합니다만, 모두/부하나 Https->Http의 전환 방법이 다르므로,
    일일이 조사하는 것이 귀찮다. 뭔가 좋은 방법 없을까.

    참고



    비슷한 대응으로서 아래의 기사를 참고로 했습니다만, Reconfigure를 하면,
    설정이 변경되어 버리기 때문에 메인터넌스 할 때 번거롭기 때문에,/etc/gitlab/gitlab.rb만으로 대응할 수 있는 방법을 썼습니다.
    h tp : // 쿠이타. 이 m/모로즈미_h/있어 ms/128d3254fd2에 b4671966

    좋은 웹페이지 즐겨찾기