1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

社内向けathensの構築と0.6.0時点の問題

Posted at

社内向けにathensを構築する

athens

go1.13でGOPROXY環境変数のデフォルトがproxy.golang.orgを向くようになりました。そのため会社などでプライベートなリポジトリを使っている場合、最初の一発目をproxy.golang.orgに取りにいってしまいます。単純に無駄なリクエストなのと、社内開発のリポジトリ名が漏洩するという意味でもあまりよろしくありません。

これを防ぐにはGOPRIVATE環境変数にリポジトリ名を書いておけばいいのですが、それだとModules Mirrorの恩恵に預かれなくなってしまうため、折角なので社内向けにproxyサーバーであるathensを立ててみます。

Helmによる構築

athensはドキュメントがかなり充実しており、基本的には公式の手順に従うだけで構築できます。

kubernetesの環境があればHelm chartによる構築が一番楽そうなので、今回はこちらを使っていきます。

ストレージ

athensはパッケージをキャッシュするためのストレージを以下の中から選ぶことができます。
https://docs.gomods.io/configuration/storage/

  • memory
  • disk
  • mongo
  • Google Cloud Storage
  • AWS S3
  • Minio

各々の環境次第で好きなものを選べばいいと思いますが、今回は試しという意味でも運用が容易なdiskを使っていきます。

構築

まずはoverride.yamlという名前で設定ファイルを作成します。設定可能な値はドキュメントをあさるか、chartの元ファイル を見るのがいいと思います。

storage:
  type: disk
  disk:
    persistence:
      enabled: true
      accessMode: ReadWriteOnce
      size: 4Gi
ingress:
  enabled: true
  hosts:
  - go-proxy.sample.com
service:
  type: NodePort
replicaCount: 2
configEnvVars:
  - name: ATHENS_GONOSUM_PATTERNS
    value: private.git.com/*

設定ファイルを作成したら、あとは以下のようにHelmでサクッと構築しましょう。helmの環境構築などは省いています。

helm repo add gomods https://athens.blob.core.windows.net/charts
helm repo update
helm install gomods/athens-proxy -n athens -f override.yaml

go-proxy.sample.comにアクセスして、"Welcome to The Athens Proxy"が表示されれば成功です。

使ってみる

試しに手元でGOPROXY=https://go-proxy.sample.comを設定して、go mod downloadgo getしてみましょう。

export GOPROXY=https://go-proxy.sample.com
go get golang.org/x/tools/cmd/goimports

storage=diskの場合、athensはデフォルトで/var/lib/athens以下にパッケージをキャッシュします。試しにコンテナに入り、/var/lib/athensを覗くと、goimportsがキャッシュされているのが分かると思います。

v0.6.0 時点での問題点

ここまで書いておいてあれですが、実はathens v0.6.0時点では不具合でプライベートリポジトリを落としてくることができません。

athensはパッケージをリクエストされた際、内部的にはただgo mod downloadを自分で叩いているため、GONOSUMDBなどを設定しないとプライベートリポジトリのchecksumに失敗してしまいます。
そのためATHENS_GONOSUM_PATTERNSに自分のプライベートリポジトリを指定する必要がありますが、不具合でこの環境変数の内容がgo mod downloadに渡されていないため、現状うまくいかないようです。

ただ修正は既に行われているので、次回のリリースでは直っていそうです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?