Start Building for Free
CircleCI.comアカデミーブログコミュニティサポート

Setting Up HTTP Proxies

5 months ago2 min read
Server v2.x
Server Admin
このページの内容

This section describes how to configure CircleCI to use an HTTP proxy.

概要

Amazon を通してプロキシを設定する場合は、読み進める前に以下の AWS ドキュメントをご確認ください。

特に Services マシンについては、内部リクエストに対するプロキシの適用を避けてください。 To add these to the NO_PROXY rules, run:

export NO_PROXY=<services_box_ip>

In an ideal case, traffic to S3 will not be proxied, and will instead be bypassed by adding s3.amazonaws.com,*.s3.amazonaws.com to the NO_PROXY rule.

これらの命令は、未認証の HTTP プロキシが 10.0.0.33:3128、Services マシンが 10.0.1.238 であり、GitHub Enterprise ホストとして ghe.example.com を使用することを想定しています。

Services マシンのプロキシ設定

Services マシンには多数のコンポーネントがあり、以下のネットワーク呼び出しを行う必要があります。

  • 外部ネットワーク呼び出し - Replicated は、CircleCI の管理コンソール用に使用しているベンダーサービスです。 CircleCI requires Replicated to make an outside call to validate the license, check for updates, and download upgrades. また Replicated は、Docker をダウンロードしてローカルマシンにインストールし、Docker コンテナを使用して S3 バケットの作成と設定を行います。 GitHub Enterprise may or may not be behind the proxy, but github.com will need to go through the proxy.

  • 内部ネットワーク呼び出し

    • S3 トラフィックが HTTP プロキシを経由する必要がある場合、CircleCI はプロキシ設定をコンテナに渡す必要があります。

    • Services マシン上の CircleCI インスタンスは Docker コンテナで実行されるため、すべての機能を維持するにはプロキシ設定をコンテナに渡す必要があります。

Services マシンのプロキシサポートの設定

For a static installation, not on AWS, SSH into the Services machine and run the following code snippet with your proxy address:

echo '{"HttpProxy": "http://<proxy-ip:port>"}' | sudo tee /etc/replicated.conf
(cat <<'EOF'
export HTTP_PROXY=<proxy-ip:port>
export HTTPS_PROXY=<proxy-ip:port>
EOF
) | sudo tee -a /etc/circle-installation-customizations

systemctl restart replicated\*

If you run in Amazon’s EC2 service then you’ll need to include 169.254.169.254 EC2 services as shown below:

echo '{"HttpProxy": "http://<proxy-ip:port>"}' | sudo tee /etc/replicated.conf
(cat <<EOF
export HTTP_PROXY=<proxy-ip:port>
export HTTPS_PROXY=<proxy-ip:port>
export NO_PROXY=169.254.169.254,<circleci-service-ip>,127.0.0.1,localhost,ghe.example.com
export JVM_OPTS="-Dhttp.proxyHost=<proxy-ip> -Dhttp.proxyPort=<proxy-port> -Dhttps.proxyHost=<proxy-ip> -Dhttps.proxyPort=<proxy-port> -Dhttp.nonProxyHosts=169.254.169.254|<circleci-service-ip>|127.0.0.1|localhost|ghe.example.com"
EOF
) | sudo tee -a /etc/circle-installation-customizations

systemctl restart replicated\*
export HTTP_PROXY=http://<userid>:<password>@<proxy-ip>:<port>
export HTTPS_PROXY=https://<userid>:<password>@<proxy-ip>:<port>

コーポレートプロキシ

Nomad クライアントの設定

External Network Calls

CircleCI uses curl and awscli scripts to download initialization scripts, along with jars from Amazon S3. Both curl and awscli respect environment settings, but if you have allowed traffic from Amazon S3 you should not have any problems.

内部ネットワーク呼び出し

  • CircleCI JVM

    • 他の Nomad クライアントマシンまたは Services マシンへの接続は、HTTP プロキシから除外する必要があります。

    • GitHub Enterprise への接続は、HTTP プロキシから除外する必要があります。

  • The following contains parts that may be impacted due to a proxy configuration:

    • Amazon EC2 metadata. このデータに対しては、プロキシ設定を行うべきでは*ありません*。 プロキシ設定を行うと、マシンの設定が不適切になります。

    • Amazon S3 traffic — note S3 discussion above

    • Amazon EC2 API - EC2 API traffic may need to be proxied. プロキシ設定が誤っている場合、ログに多数の障害 (タイムアウト障害) が記録されますが、CircleCI の機能が停止することはありません。

Nomad クライアントのプロキシ設定

  • If you are installing CircleCI server on AWS using Terraform, you should add the below to your Nomad client launch configuration – these instructions should be added to /etc/environment.

  • If you are using Docker refer to the Docker HTTP Proxy Instructions documentation.

  • If you are running a static installation, add the following to the server before installation:

    #!/bin/bash
    
    (cat <<EOF
    HTTP_PROXY=<proxy-ip:port>
    HTTPS_PROXY=<proxy-ip:port>
    NO_PROXY=169.254.169.254,<circleci-service-ip>,127.0.0.1,localhost,ghe.example.com
    JVM_OPTS="-Dhttp.proxyHost=<ip> -Dhttp.proxyPort=<port> -Dhttps.proxyHost=<proxy-ip> -Dhttps.proxyPort=3128 -Dhttp.nonProxyHosts=169.254.169.254|<circleci-service-ip>|127.0.0.1|localhost|ghe.example.com"
    EOF) | sudo tee -a /etc/environment
    
    set -a
    . /etc/environment

    If your containers need to use a proxy server you will need to set the following schedulerer environment variables: DOCKER_HTTP_PROXY, DOCKER_HTTPS_PROXY, NO_PROXY, corresponding to those listed in the Docker instructions. This will ensure your containers have outbound/proxy access. For more information on creating configuration overrides, see the Customizations Guide.

トラブルシューティング

Can’t access the Management Console

If you cannot access the CircleCI Management Console, but the Services machine seems to be running, try to SSH tunnel into the machine by running the following, substituting your proxy address and the IP address of your Services machine:

ssh -L 8800:<address you want to proxy through>:8800 ubuntu@<ip_of_services_machine>

REPL time out

If you experience a timeout when connecting to the REPL, you will need to allow access, through your corporate proxy, to the domains of any Clojure library repositories that are required to download dependencies for running the REPL.

sudo su
docker exec -it frontend /bin/bash
lein repl :connect 6005

Refer to the error output for guidance on which repositories need to be granted access. The list will be different for each corporate proxy, but following is an example list:

  • repo1.maven.org

  • build.clojure.org

  • clojars.org

  • repo.clojars.org

データの永続化

Contact CircleCI Support to discuss externalizing services for data persistence.


ドキュメントの改善にご協力ください

このガイドは、CircleCI の他のドキュメントと同様にオープンソースであり、 GitHub でご利用いただけます。 ご協力いただき、ありがとうございます。

サポートが必要ですか

CircleCI のサポートエンジニアによる、サービスに関する問題、請求およびアカウントについての質問への対応、設定の構築に関する問題解決のサポートを行っています。 サポートチケットを送信して、CircleCI のサポートエンジニアにお問い合わせください。日本語でお問い合わせいただけます。

または、 サポートサイト から、サポート記事やコミュニティフォーラム、トレーニングリソースをご覧いただけます。