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.targetType | AverageValue | オートスケーリングCPUターゲット・タイプを設定します。Utilization またはAverageValue
|
hpa.cpu.targetAverageValue | 100m | オートスケーリングCPUターゲット値の設定 |
hpa.cpu.targetAverageUtilization | オートスケーリングCPUターゲット使用率の設定 | |
hpa.memory.targetType |
Utilization 、またはAverageValue
| |
hpa.memory.targetAverageValue | オートスケーリング・メモリ・ターゲットの値を設定します。 | |
hpa.memory.targetAverageUtilization | オートスケーリングメモリ使用率の設定 | |
hpa.minReplicas | 1 | 最小レプリカ数 |
hpa.maxReplicas | 10 | 最大レプリカ数 |
hpa.targetAverageValue | 自動スケーリングCPU目標値の設定 | |
image.pullPolicy | IfNotPresent | GitLabイメージプルポリシー |
image.pullSecrets | 画像リポジトリのシークレット | |
image.repository | registry.gitlab.com/gitlab-org/build/cng/gitlab-exporter | GitLab Exporter イメージリポジトリ |
image.tag | イメージタグ | |
init.image.repository | initContainer 画像 | |
init.image.tag | initContainer画像タグ | |
init.containerSecurityContext | {} | initContainer コンテナ固有のsecurityContext |
keda.enabled | false | の代わりにKEDA ScaledObjects を使用します。HorizontalPodAutoscalers
|
keda.pollingInterval | 30 | 各トリガーを |
keda.cooldownPeriod | 300 | リソースを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.cpu とhpa.memory
| |
metrics.enabled | true | メトリクスエンドポイントをスクレイピングのために利用可能にする場合 |
metrics.port | 9235 | メトリクス・エンドポイント・ポート |
metrics.path | /metrics | メトリクスエンドポイントパス |
metrics.serviceMonitor.enabled | false | Prometheus Operatorがメトリクスのスクレイピングを管理できるようにServiceMonitorを作成する必要がある場合、これを有効にすると、prometheus.io スクレイピング注釈が削除されることに注意してください。 |
metrics.serviceMonitor.additionalLabels | {} | ServiceMonitorに追加するラベル |
metrics.serviceMonitor.endpointConfig | {} | ServiceMonitorの追加エンドポイント設定 |
metrics.annotations | 廃止明示的なメトリクス・アノテーションを設定します。テンプレート・コンテンツに置き換えられました。 | |
metrics.tls.enabled | false | メトリクス・エンドポイントで TLS を有効にします。 |
metrics.tls.secretName | {Release.Name}-pages-metrics-tls | メトリクス・エンドポイントのシークレット TLS 証明書と鍵 |
podLabels | ポッドラベルの補足。セレクタには使用されません。 | |
resources.requests.cpu | 900m | GitLab Pagesの最小CPU |
resources.requests.memory | 2G | GitLab Pagesの最小メモリ |
securityContext.fsGroup | 1000 | ポッドを起動するグループID |
securityContext.runAsUser | 1000 | ポッドを起動するユーザーID |
securityContext.fsGroupChangePolicy | ボリュームの所有権と権限を変更するためのポリシー (Kubernetes 1.23 が必要) | |
containerSecurityContext | コンテナが起動するコンテナsecurityContext をオーバーライドします。 | |
containerSecurityContext.runAsUser | 1000 | コンテナが起動される特定のセキュリティコンテキストを上書きできるようにします。 |
service.externalPort | 8090 | GitLab Pages の公開ポート |
service.internalPort | 8090 | GitLab Pages 内部ポート |
service.name | gitlab-pages | GitLab Pagesサービス名 |
service.annotations | すべてのPagesサービスの注釈。 | |
service.primary.annotations | 主サービスのみの注釈 | |
service.metrics.annotations | メトリクス・サービスのみの注釈。 | |
service.customDomains.annotations | カスタム・ドメイン・サービスのみの注釈。 | |
service.customDomains.type | LoadBalancer | カスタムドメインを扱うために作成されたサービスの種類 |
service.customDomains.internalHttpsPort | 8091 | PagesデーモンがHTTPSリクエストをリッスンするポート |
service.customDomains.internalHttpsPort | 8091 | PagesデーモンがHTTPSリクエストをリッスンするポート |
service.customDomains.nodePort.http | HTTP接続用にオープンされるノードポート。service.customDomains.type 。NodePort
| |
service.customDomains.nodePort.https | HTTPS 接続用にオープンするノード・ポート。service.customDomains.type の場合のみ有効です。NodePort
| |
service.sessionAffinity | None | セッション・アフィニティのタイプ。ClientIP またはNone のいずれかである必要があります (これはクラスター内部からのトラフィックに対してのみ意味を持ちます)。 |
service.sessionAffinityConfig | セッションアフィニティの設定。service.sessionAffinity ==ClientIP の場合、デフォルトのセッション粘着時間は 3 時間 (10800) です。 | |
serviceLabels | {} | 補足サービスラベル |
tolerations | [] | ポッド割り当て用のトレラベル |
ページ固有の設定
パラメータ | デフォルト | 説明 |
---|---|---|
artifactsServerTimeout | 10 | アーティファクト・サーバーへのプロキシされたリクエストのタイムアウト(秒単位 |
artifactsServerUrl | アーティファクトリクエストのプロキシ先API URL | |
extraVolumeMounts | 追加する追加ボリューム・マウントのリスト | |
extraVolumes | 作成する追加ボリュームのリスト | |
gitlabCache.cleanup | int | を参照してください:グローバル設定 |
gitlabCache.expiry | int | を参照してください:グローバル設定 |
gitlabCache.refresh | int | を参照してください:グローバル設定 |
gitlabClientHttpTimeout | GitLab API HTTP クライアント接続タイムアウト (秒) | |
gitlabClientJwtExpiry | JWTトークンの有効期限(秒 | |
gitlabRetrieval.interval | int | を参照してください:グローバル設定 |
gitlabRetrieval.retries | int | を参照してください:グローバル設定 |
gitlabRetrieval.timeout | int | を参照してください:グローバル設定 |
gitlabServer | GitLab サーバー FQDN | |
headers | [] | 各レスポンスでクライアントに送信する追加の http ヘッダを指定します。複数のヘッダを配列で指定することも、ヘッダと値をひとつの文字列で指定することもできます。['my-header: myvalue', 'my-other-header: my-other-value']
|
insecureCiphers | false | デフォルトの暗号スイートリストを使用。3DES や RC4 のような安全でないものが含まれる可能性があります。 |
internalGitlabServer | API リクエストに使用される GitLab 内部サーバー | |
logFormat | json | ログ出力フォーマット |
logVerbose | false | 冗長ロギング |
maxConnections | HTTP、HTTPSまたはプロキシリスナーへの同時接続数の制限 | |
maxURILength | URIの長さの制限、無制限の場合は0。 | |
propagateCorrelationId | もし存在すれば、受信リクエストヘッダX-Request-ID から既存の Correlation-ID を再利用します。 | |
redirectHttp | false | ページをHTTPからHTTPSにリダイレクト |
sentry.enabled | false | Sentryレポートの有効化 |
sentry.dsn | Sentryクラッシュ報告の送信先アドレス | |
sentry.environment | Sentryクラッシュレポートの送信環境 | |
serverShutdowntimeout | 30s | GitLab Pagesサーバーのシャットダウンタイムアウト(秒単位 |
statusUri | ステータスページのURLパス | |
tls.minVersion | SSL/TLSの最小バージョンを指定します。 | |
tls.maxVersion | SSL/TLSの最大バージョンを指定します。 | |
useHTTPProxy | false | GitLab Pagesがリバースプロキシの後ろにある場合、このオプションを使用します。 |
useProxyV2 | false | HTTPSリクエストがPROXYv2プロトコルを利用するように強制します。 |
zipCache.cleanup | int | を参照してください:Zip サーバーとキャッシュの設定を参照してください。 |
zipCache.expiration | int | を参照してください:Zip サーバーとキャッシュの設定を参照してください。 |
zipCache.refresh | int | を参照してください:Zip サーバーとキャッシュの設定を参照してください。 |
zipOpenTimeout | int | を参照してください:Zip サーバーとキャッシュの設定を参照してください。 |
zipHTTPClientTimeout | int | を参照してください: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のレート制限 | |
serverReadTimeout | 5s | 参照GitLab Pages のグローバル設定 |
serverReadHeaderTimeout | 1s | 参照GitLab Pages のグローバル設定 |
serverWriteTimeout | 5m | 参照GitLab Pages のグローバル設定 |
serverKeepAlive | 15s | 参照GitLab Pages のグローバル設定 |
authCookieSessionTimeout | 10m | 参照GitLab Pages のグローバル設定 |
設定ingress
このセクションでは GitLab Pages Ingress をコントロールします。
名前 | 種類 | デフォルト | 説明 |
---|---|---|---|
apiVersion | 文字列 |
apiVersion フィールドで使用する値。 | |
annotations | 文字列 | このフィールドは、Kubernetes Ingressの標準annotations 。 | |
configureCertmanager | ブール値 | false | Ingress 注釈cert-manager.io/issuer とacme.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 接続を必要とします。この例では、次のネットワークポリシーを追加します:
- TCP
0.0.0.0/0
ポート 80 および 443 のネットワークからのすべての Ingress リクエストが許可されます。 - DNS については、UDP
10.0.0.0/8
ポート 53 のネットワークへのすべての Egress リクエストが許可されます。 - TCP
10.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アクセスするには、以下のことが必要です:
-
GitLab Pages ドメイン専用のワイルドカード証明書を以下のフォーマットで作成します:
*.pages.<yourdomain>
. -
Kubernetesでシークレットを作成します:
kubectl create secret tls tls-star-pages-<mysecret> --cert=<path/to/fullchain.pem> --key=<path/to/privkey.pem>
-
このシークレットを使用するようにGitLab Pagesを設定します:
gitlab: gitlab-pages: ingress: tls: secretName: tls-star-pages-<mysecret>
-
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.cpu とhpa.memory
|