GitLab Pages チャートの使い方

gitlab-pages サブチャートは GitLab プロジェクトから静的ウェブサイトを提供するためのデーモンを提供します。

要件

このチャートは、GitLabチャートの一部として、またはこのチャートがデプロイされたKubernetesクラスターからアクセス可能な外部サービスとして提供されるWorkhorseサービスへのアクセスに依存します。

設定

gitlab-pages Chart の設定は以下の通りです:グローバル設定と チャート設定

グローバル設定

私たちのチャートでは、いくつかの共通のグローバル設定があります。詳細はグローバル・ドキュメントをご覧ください。

チャート設定

以下の2つのセクションの表は、--set フラグを使用してhelm install コマンドに供給できるすべての可能なチャート設定を含んでいます。

一般設定

パラメータデフォルト説明
annotations ポッド注釈
common.labels{}このChartで作成されたすべてのオブジェクトに適用される補助ラベル。
deployment.strategy{}デプロイで使用される更新ストラテジを設定できます。指定しない場合は、クラスターのデフォルトが使用されます。
extraEnv 公開する追加環境変数のリスト
extraEnvFrom 公開する他のデータソースの追加環境変数のリスト
hpa.behavior{scaleDown: {stabilizationWindowSeconds: 300 }}ビヘイビアには、アップスケーリングとダウンスケーリングのビヘイビアの仕様が含まれます(autoscaling/v2beta2 以上が必要です)。
hpa.customMetrics[]カスタム・メトリクスには、希望するレプリカ数を計算するために使用するメトリクスの設定が含まれます(targetAverageUtilization で設定された平均CPU使用率をデフォルトで上書きします)。
hpa.cpu.targetTypeAverageValueオートスケーリングCPUターゲット・タイプを設定します。Utilization またはAverageValue
hpa.cpu.targetAverageValue100mオートスケーリングCPUターゲット値の設定
hpa.cpu.targetAverageUtilization オートスケーリングCPUターゲット使用率の設定
hpa.memory.targetType  Utilization 、またはAverageValue
hpa.memory.targetAverageValue オートスケーリング・メモリ・ターゲットの値を設定します。
hpa.memory.targetAverageUtilization オートスケーリングメモリ使用率の設定
hpa.minReplicas1最小レプリカ数
hpa.maxReplicas10最大レプリカ数
hpa.targetAverageValue 自動スケーリングCPU目標値の設定
image.pullPolicyIfNotPresentGitLabイメージプルポリシー
image.pullSecrets 画像リポジトリのシークレット
image.repositoryregistry.gitlab.com/gitlab-org/build/cng/gitlab-exporterGitLab Exporter イメージリポジトリ
image.tag イメージタグ
init.image.repository initContainer 画像
init.image.tag initContainer画像タグ
init.containerSecurityContext{}initContainer コンテナ固有のsecurityContext
keda.enabledfalseの代わりにKEDA ScaledObjects を使用します。HorizontalPodAutoscalers
keda.pollingInterval30各トリガーを
keda.cooldownPeriod300リソースを0にスケールバックする前に、最後のトリガがアクティブであると報告された後、待機する期間。
keda.minReplicaCount KEDAがリソースをスケールダウンする最小レプリカ数。hpa.minReplicas
keda.maxReplicaCount KEDAがリソースをスケールアップする際の最大レプリカ数。hpa.maxReplicas
keda.fallback KEDAフォールバック設定。
keda.hpaName KEDAが作成するHPAリソースの名前。keda-hpa-{scaled-object-name}
keda.restoreToOriginalReplicaCount  ScaledObject が削除された後、ターゲットリソースを元のレプリカ数にスケールバックするかどうかを指定します。
keda.behavior アップスケーリングとダウンスケーリングの動作を指定します。hpa.behavior
keda.triggers 対象リソースのスケーリングを有効にするトリガーのリスト。デフォルトはhpa.cpuhpa.memory
metrics.enabledtrueメトリクスエンドポイントをスクレイピングのために利用可能にする場合
metrics.port9235メトリクス・エンドポイント・ポート
metrics.path/metricsメトリクスエンドポイントパス
metrics.serviceMonitor.enabledfalsePrometheus Operatorがメトリクスのスクレイピングを管理できるようにServiceMonitorを作成する必要がある場合、これを有効にすると、prometheus.io スクレイピング注釈が削除されることに注意してください。
metrics.serviceMonitor.additionalLabels{}ServiceMonitorに追加するラベル
metrics.serviceMonitor.endpointConfig{}ServiceMonitorの追加エンドポイント設定
metrics.annotations  廃止明示的なメトリクス・アノテーションを設定します。テンプレート・コンテンツに置き換えられました。
metrics.tls.enabledfalseメトリクス・エンドポイントで TLS を有効にします。
metrics.tls.secretName{Release.Name}-pages-metrics-tlsメトリクス・エンドポイントのシークレット TLS 証明書と鍵
podLabels ポッドラベルの補足。セレクタには使用されません。
resources.requests.cpu900mGitLab Pagesの最小CPU
resources.requests.memory2GGitLab Pagesの最小メモリ
securityContext.fsGroup1000ポッドを起動するグループID
securityContext.runAsUser1000ポッドを起動するユーザーID
securityContext.fsGroupChangePolicy ボリュームの所有権と権限を変更するためのポリシー (Kubernetes 1.23 が必要)
containerSecurityContext コンテナが起動するコンテナsecurityContext をオーバーライドします。
containerSecurityContext.runAsUser1000コンテナが起動される特定のセキュリティコンテキストを上書きできるようにします。
service.externalPort8090GitLab Pages の公開ポート
service.internalPort8090GitLab Pages 内部ポート
service.namegitlab-pagesGitLab Pagesサービス名
service.annotations すべてのPagesサービスの注釈。
service.primary.annotations 主サービスのみの注釈
service.metrics.annotations メトリクス・サービスのみの注釈。
service.customDomains.annotations カスタム・ドメイン・サービスのみの注釈。
service.customDomains.typeLoadBalancerカスタムドメインを扱うために作成されたサービスの種類
service.customDomains.internalHttpsPort8091PagesデーモンがHTTPSリクエストをリッスンするポート
service.customDomains.internalHttpsPort8091PagesデーモンがHTTPSリクエストをリッスンするポート
service.customDomains.nodePort.http HTTP接続用にオープンされるノードポート。service.customDomains.typeNodePort
service.customDomains.nodePort.https HTTPS 接続用にオープンするノード・ポート。service.customDomains.type の場合のみ有効です。NodePort
service.sessionAffinityNoneセッション・アフィニティのタイプ。ClientIP またはNone のいずれかである必要があります (これはクラスター内部からのトラフィックに対してのみ意味を持ちます)。
service.sessionAffinityConfig セッションアフィニティの設定。service.sessionAffinity ==ClientIP の場合、デフォルトのセッション粘着時間は 3 時間 (10800) です。
serviceLabels{}補足サービスラベル
tolerations[]ポッド割り当て用のトレラベル

ページ固有の設定

パラメータデフォルト説明
artifactsServerTimeout10アーティファクト・サーバーへのプロキシされたリクエストのタイムアウト(秒単位
artifactsServerUrl アーティファクトリクエストのプロキシ先API URL
extraVolumeMounts 追加する追加ボリューム・マウントのリスト
extraVolumes 作成する追加ボリュームのリスト
gitlabCache.cleanupintを参照してください:グローバル設定
gitlabCache.expiryintを参照してください:グローバル設定
gitlabCache.refreshintを参照してください:グローバル設定
gitlabClientHttpTimeout GitLab API HTTP クライアント接続タイムアウト (秒)
gitlabClientJwtExpiry JWTトークンの有効期限(秒
gitlabRetrieval.intervalintを参照してください:グローバル設定
gitlabRetrieval.retriesintを参照してください:グローバル設定
gitlabRetrieval.timeoutintを参照してください:グローバル設定
gitlabServer GitLab サーバー FQDN
headers[]各レスポンスでクライアントに送信する追加の http ヘッダを指定します。複数のヘッダを配列で指定することも、ヘッダと値をひとつの文字列で指定することもできます。['my-header: myvalue', 'my-other-header: my-other-value']
insecureCiphersfalseデフォルトの暗号スイートリストを使用。3DES や RC4 のような安全でないものが含まれる可能性があります。
internalGitlabServer API リクエストに使用される GitLab 内部サーバー
logFormatjsonログ出力フォーマット
logVerbosefalse冗長ロギング
maxConnections HTTP、HTTPSまたはプロキシリスナーへの同時接続数の制限
maxURILength URIの長さの制限、無制限の場合は0。
propagateCorrelationId もし存在すれば、受信リクエストヘッダX-Request-ID から既存の Correlation-ID を再利用します。
redirectHttpfalseページをHTTPからHTTPSにリダイレクト
sentry.enabledfalseSentryレポートの有効化
sentry.dsn Sentryクラッシュ報告の送信先アドレス
sentry.environment Sentryクラッシュレポートの送信環境
serverShutdowntimeout30sGitLab Pagesサーバーのシャットダウンタイムアウト(秒単位
statusUri ステータスページのURLパス
tls.minVersion SSL/TLSの最小バージョンを指定します。
tls.maxVersion SSL/TLSの最大バージョンを指定します。
useHTTPProxyfalseGitLab Pagesがリバースプロキシの後ろにある場合、このオプションを使用します。
useProxyV2falseHTTPSリクエストがPROXYv2プロトコルを利用するように強制します。
zipCache.cleanupintを参照してください:Zip サーバーとキャッシュの設定を参照してください。
zipCache.expirationintを参照してください:Zip サーバーとキャッシュの設定を参照してください。
zipCache.refreshintを参照してください:Zip サーバーとキャッシュの設定を参照してください。
zipOpenTimeoutintを参照してください:Zip サーバーとキャッシュの設定を参照してください。
zipHTTPClientTimeoutintを参照してください:Zip サーバーとキャッシュの設定を参照してください。
rateLimitSourceIP 参照GitLab Pages のレート制限。レート制限を有効にするにはextraEnv=["FF_ENFORCE_IP_RATE_LIMITS=true"]
rateLimitSourceIPBurst をご覧ください:GitLab Pagesのレート制限
rateLimitDomain 参照GitLab Pages のレート制限。レート制限を有効にするにはextraEnv=["FF_ENFORCE_DOMAIN_RATE_LIMITS=true"]
rateLimitDomainBurst をご覧ください:GitLab Pagesのレート制限
rateLimitTLSSourceIP 参照GitLab Pages のレート制限。レート制限を有効にするにはextraEnv=["FF_ENFORCE_IP_TLS_RATE_LIMITS=true"]
rateLimitTLSSourceIPBurst をご覧ください:GitLab Pagesのレート制限
rateLimitTLSDomain 参照GitLab Pages のレート制限。レート制限を有効にするにはextraEnv=["FF_ENFORCE_DOMAIN_TLS_RATE_LIMITS=true"]
rateLimitTLSDomainBurst をご覧ください:GitLab Pagesのレート制限
serverReadTimeout5s参照GitLab Pages のグローバル設定
serverReadHeaderTimeout1s参照GitLab Pages のグローバル設定
serverWriteTimeout5m参照GitLab Pages のグローバル設定
serverKeepAlive15s参照GitLab Pages のグローバル設定
authCookieSessionTimeout10m参照GitLab Pages のグローバル設定

設定ingress

このセクションでは GitLab Pages Ingress をコントロールします。

名前種類デフォルト説明
apiVersion文字列  apiVersion フィールドで使用する値。
annotations文字列 このフィールドは、Kubernetes Ingressの標準annotations
configureCertmanagerブール値falseIngress 注釈cert-manager.io/issueracme.cert-manager.io/http01-edit-in-place を切り替えます。ワイルドカード証明書の取得には、DNS01ソルバーを持つcert-manager Issuerが必要であり、このChartでデプロイされたIssuerはHTTP01ソルバーのみを提供しているため、cert-managerによるGitLab PagesのTLS証明書の取得は無効になっています。詳細については、GitLab PagesのTLS要件を参照してください。
enabledブール値 Ingressオブジェクトをサポートするサービスに対してIngressオブジェクトを作成するかどうかを制御する設定。設定されていない場合は、global.ingress.enabled 設定が使用されます。
tls.enabledブール値  false に設定すると、PagesサブチャートのTLSを無効にします。これは主に、Ingress Controllerの前にTLS終端プロキシがある場合など、ingress-level でTLS終端を使えない場合に便利です。
tls.secretName文字列 ページURLの有効な証明書とキーを含むKubernetes TLSシークレットの名前。設定されていない場合、代わりにglobal.ingress.tls.secretName が使用されます。デフォルトは設定されていません。

Chart設定例

エクストラボリューム

extraVolumes を使用すると、Chart 全体で追加ボリュームを設定できます。

以下は、extraVolumes の使用例です:

extraVolumes: |
  - name: example-volume
    persistentVolumeClaim:
      claimName: example-pvc

extraVolumeMounts

extraVolumeMounts を使用すると、コンテナ全体で追加の VolumeMount を設定できます。

以下は、extraVolumeMounts の使用例です:

extraVolumeMounts: |
  - name: example-volume
    mountPath: /etc/example

設定networkpolicy

このセクションではNetworkPolicyを制御します。この設定はオプションで、ポッドの Egress および Ingress を特定のエンドポイントに制限するために使用します。

名前種類デフォルト説明
enabledブール値falseこの設定はNetworkPolicy
ingress.enabledブール値false true に設定すると、Ingress ネットワーク ポリシーがアクティビティになります。これにより、ルールが指定されていない限り、すべての Ingress 接続がブロックされます。
ingress.rules配列[]詳細はhttps://kubernetes.io/docs/concepts/services-networking/network-policies/#the-networkpolicy-resource と以下の例を参照してください。
egress.enabledブール値false true に設定すると、Egress ネットワーク ポリシーがアクティビティになります。これにより、ルールが指定されていない限り、すべてのイグレス接続がブロックされます。
egress.rules配列[]イグレスポリシーのルール。詳細はhttps://kubernetes.io/docs/concepts/services-networking/network-policies/#the-networkpolicy-resource と以下の例を参照してください。

ネットワークポリシーの例

gitlab-pages サービスは、ポート 80 と 443 の Ingress 接続と、デフォルトの Workhorse ポート 8181 への様々な Egress 接続を必要とします。この例では、次のネットワークポリシーを追加します:

  • TCP0.0.0.0/0 ポート 80 および 443 のネットワークからのすべての Ingress リクエストが許可されます。
  • DNS については、UDP10.0.0.0/8 ポート 53 のネットワークへのすべての Egress リクエストが許可されます。
  • TCP10.0.0.0/8 ポート 8181 のネットワークへのすべての Egress リクエストは Workhorse に許可されています。

提供された例は単なる例であり、完全ではない可能性があることに注意してください。

networkpolicy:
  enabled: true
  ingress:
    enabled: true
    rules:
      - to:
        - ipBlock:
            cidr: 0.0.0.0/0
        ports:
          - port: 80
            protocol: TCP
          - port: 443
            protocol: TCP
  egress:
    enabled: true
    rules:
      - to:
        - ipBlock:
            cidr: 10.0.0.0/8
        ports:
          - port: 8181
            protocol: TCP
          - port: 53
            protocol: UDP

GitLab PagesへのTLSアクセス

GitLab Pages機能にTLSアクセスするには、以下のことが必要です:

  1. GitLab Pages ドメイン専用のワイルドカード証明書を以下のフォーマットで作成します:*.pages.<yourdomain>.

  2. Kubernetesでシークレットを作成します:

    kubectl create secret tls tls-star-pages-<mysecret> --cert=<path/to/fullchain.pem> --key=<path/to/privkey.pem>
    
  3. このシークレットを使用するようにGitLab Pagesを設定します:

    gitlab:
      gitlab-pages:
        ingress:
          tls:
            secretName: tls-star-pages-<mysecret>
    
  4. DNS プロバイダに*.pages.<yourdomaindomain> という名前でロードバランサを指す DNS エントリを作成します。

KEDAの設定

このkeda セクションでは、通常のHorizontalPodAutoscalersの代わりにKEDA ScaledObjects をインストールできるようにします。この設定はオプションで、カスタムまたは外部のメトリクスに基づいてオートスケーリングする必要がある場合に使用できます。

ほとんどの設定は、該当する場合はhpa セクションで設定された値にデフォルト設定されます。

以下が真である場合、hpa セクションで設定された CPU とメモリのしきい値に基づいて、CPU とメモリのトリガーが自動的に追加されます:

  • triggers がセットされていません。
  • 対応するrequest.cpu.request またはrequest.memory.request の設定もゼロ以外の値に設定されます。

トリガーが設定されていない場合、ScaledObject は作成されません。

これらの設定の詳細については、KEDAのドキュメントを参照してください。

名前種類デフォルト説明
enabledブール値falseの代わりにKEDA ScaledObjects を使用します。HorizontalPodAutoscalers
pollingInterval整数30各トリガーを
cooldownPeriod整数300リソースを0にスケールバックする前に、最後のトリガがアクティブであると報告された後、待機する期間。
minReplicaCount整数 KEDAがリソースをスケールダウンする最小レプリカ数。hpa.minReplicas
maxReplicaCount整数 KEDAがリソースをスケールアップする際の最大レプリカ数。hpa.maxReplicas
fallbackマップ KEDAフォールバック設定。
hpaName文字列 KEDAが作成するHPAリソースの名前。keda-hpa-{scaled-object-name}
restoreToOriginalReplicaCountブール値  ScaledObject が削除された後、ターゲットリソースを元のレプリカ数にスケールバックするかどうかを指定します。
behaviorマップ アップスケーリングとダウンスケーリングの動作を指定します。hpa.behavior
triggers配列 対象リソースのスケーリングを有効にするトリガーのリスト。デフォルトはhpa.cpuhpa.memory