|
この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。 |
自己署名証明書
SUSE Observability Server
自己署名証明書を使用してSUSE Observability Serverを公開する
SUSE Observability Serverのコンポーネントは、自らSSL終端を行うことができず、HTTPSでサービスを公開するためには、SSL保護されたIngress ControllerまたはLoadBalancerを使用する必要があります。このセクションでは、自己署名証明書を使用してIngressコントローラーを構成する方法を説明します。
TLSを使用したIngressコントローラー
自己署名証明書を使用してTraefik Ingressコントローラーを利用してSUSE Observability Serverを公開するには、次の手順が必要です:
-
サーバー証明書と秘密鍵からKubernetes TLSシークレットを作成する
-
TLS設定でIngressリソースを構成する
-
Ingressを有効にしてSUSE Observability Serverをデプロイする
TLSシークレットの作成
証明書と秘密鍵ファイルからKubernetes TLSシークレットを作成します:
# Create TLS secret for main SUSE Observability Server
kubectl create secret tls tls-secret \
--cert=server.crt \
--key=server.key \
--namespace suse-observability
# Create TLS secret for OTLP GRPC endpoint
kubectl create secret tls otlp-tls-secret \
--cert=otlp-server.crt \
--key=otlp-server.key \
--namespace suse-observability
# Create TLS secret for OTLP HTTP endpoint
kubectl create secret tls otlp-http-tls-secret \
--cert=otlp-http-server.crt \
--key=otlp-http-server.key \
--namespace suse-observability
Helm値の設定
Ingress構成を含む値ファイル(例えば、ingress-with-tls-values.yaml)を作成します:
-
Traefik(デフォルト)
-
Nginx
ingress:
enabled: true
ingressClassName: traefik
annotations:
traefik.ingress.kubernetes.io/proxy-body-size: "50m"
hosts:
- host: suse-observability.MY_DOMAIN
tls:
- hosts:
- suse-observability.MY_DOMAIN
secretName: tls-secret
opentelemetry-collector:
ingress:
enabled: true
ingressClassName: traefik
annotations:
traefik.ingress.kubernetes.io/proxy-body-size: "50m"
traefik.ingress.kubernetes.io/backend-protocol: GRPC
hosts:
- host: otlp-suse-observability.MY_DOMAIN
paths:
- path: /
pathType: Prefix
port: 4317
tls:
- hosts:
- otlp-suse-observability.MY_DOMAIN
secretName: otlp-tls-secret
additionalIngresses:
- name: otlp-http
annotations:
traefik.ingress.kubernetes.io/proxy-body-size: "50m"
hosts:
- host: otlp-http-suse-observability.MY_DOMAIN
paths:
- path: /
pathType: Prefix
port: 4318
tls:
- hosts:
- otlp-http-suse-observability.MY_DOMAIN
secretName: otlp-http-tls-secret
|
Ingress Nginxプロジェクトはhttps://kubernetes.io/blog/2025/11/11/ingress-nginx-retirement/[廃止される予定です]。ユーザーはTraefikなどの代替案を検討することをお勧めします。 |
ingress:
enabled: true
ingressClassName: nginx
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: "50m"
hosts:
- host: suse-observability.MY_DOMAIN
tls:
- hosts:
- suse-observability.MY_DOMAIN
secretName: tls-secret
opentelemetry-collector:
ingress:
enabled: true
ingressClassName: nginx
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: "50m"
nginx.ingress.kubernetes.io/backend-protocol: GRPC
hosts:
- host: otlp-suse-observability.MY_DOMAIN
paths:
- path: /
pathType: Prefix
port: 4317
tls:
- hosts:
- otlp-suse-observability.MY_DOMAIN
secretName: otlp-tls-secret
additionalIngresses:
- name: otlp-http
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: "50m"
hosts:
- host: otlp-http-suse-observability.MY_DOMAIN
paths:
- path: /
pathType: Prefix
port: 4318
tls:
- hosts:
- otlp-http-suse-observability.MY_DOMAIN
secretName: otlp-http-tls-secret
Ingressを使用したインストール
Ingress構成を使用してSUSE Observability Serverをデプロイします:
helm upgrade --install \
--namespace suse-observability \
--create-namespace \
--values ingress-with-tls-values.yaml \
suse-observability \
suse-observability/suse-observability
完全なインストール手順については、インストールを参照してください。
SUSE Observability Serverは自己署名証明書を使用して外部システムに接続します。
|
このセクションでは、SUSE Observability Serverが自己署名証明書を使用する外部システムを信頼できるように設定する方法について説明します。これは、サーバーが自己署名証明書で保護された外部サービス(ウェブフックなど)に対して外部への接続を行う必要がある場合に適用されます。 |
SUSE Observability Serverは、外部システムとのインタラクションポイントがいくつかあります。例えば、イベントハンドラーは他のシステムのウェブフックを呼び出すことができます。デフォルトの設定では、SUSE Observability Serverは自己署名証明書またはJVMによってデフォルトで信頼されていない証明書で保護されたこれらのシステムと通信できません。
これを緩和するために、SUSE Observability Serverはカスタムトラストストアの設定を許可します。
カスタムトラストストアを作成します。
カスタムTLS証明書を用意する必要があります。それがない場合は、ブラウザを介して取得する必要があります。
keytoolツールとJVM(Java Virtual Machine)インストールに含まれる`cacerts`ファイルを使用して、既存のTLS証明書ファイルをSUSE Observability Serverに必要な形式に変換します。これは、オペレーティングシステムの種類に関係なく、任意のマシンで実行できます。
コンピュータにJVMがインストールされていない場合は、代わりにJVM Dockerイメージを使用することもできます。
インストールされたJVMを使用する
コンピュータにJVMがインストールされていて、証明書がファイル`site.cert`として保存されている場合、JVMのトラストストアを取得し、追加の証明書を加えることで新しいトラストストアを作成できます。
-
作業ディレクトリ`workdir`を作成し、証明書ファイル`site.cert`をこのディレクトリにコピーします。
-
workdir`ディレクトリに移動し、Javaインストールから`cacerts`ファイルをコピーします。なお、$JAVA_HOME`はJavaインストールディレクトリのパスが格納された環境変数です。これは通常、Javaをインストールする際に設定されます。cd workdir cp $JAVA_HOME/lib/security/cacerts ./custom_cacerts -
次のkeytoolコマンドを実行して証明書を追加します。必要なパスワードは`changeit`です。エイリアスは証明書のためのユニークなエイリアスである必要があります。例えば、ドメイン名自体をドットなしで使用します。
keytool -import -keystore custom_cacerts -alias <a-name-for-the-certificate> -file site.cert -
`custom_cacerts`ストアファイルには`site.cert`証明書が含まれています。出力の中でエイリアスを検索することで確認できます。
keytool -list -keystore custom_cacerts
Docker JVMを使用する
コンピュータにJVMがインストールされていない場合は、JVM Dockerイメージを使用できます。証明書は取得され、ファイル site.cert として保存されるべきです。
-
作業ディレクトリ`workdir`を作成し、証明書ファイル`site.cert`をこのディレクトリにコピーします。
-
Java Dockerコンテナを起動し、
workdirをボリュームとしてマウントしてアクセスできるようにします:docker run -it -v `pwd`/workdir:/workdir adoptopenjdk:11 bash -
`workdir`ディレクトリに移動し、`cacerts`ファイルをコピーします:
cd /workdir cp $JAVA_HOME/lib/security/cacerts ./custom_cacerts -
次のkeytoolコマンドを実行して証明書を追加します。必要なパスワードは`changeit`です。エイリアスは証明書のためのユニークなエイリアスである必要があります。例えば、ドメイン名自体をドットなしで使用します。
keytool -import -keystore custom_cacerts -alias <a-name-for-the-certificate> -file site.cert -
`custom_cacerts`ストアファイルには`site.cert`証明書が含まれます。出力の中でエイリアスを検索することで確認できます。
keytool -list -keystore custom_cacerts
カスタムトラストストアを使用する
トラストストアとパスワードは値として指定できます。トラストストアはファイルであるため、helm コマンドラインからのみ指定できます。パスワードの値は例と同じ方法で指定されますが、`values.yaml`ファイルを介して提供することもできます。
helm upgrade \
--install \
--namespace suse-observability \
--values values.yaml \
--set-file 'stackstate.java.trustStore'=custom_cacerts \
--set 'stackstate.java.trustStorePassword'=changeit \
suse-observability \
suse-observability/suse-observability
|
注意:
|
Base64エンコードされたトラストストア
必要に応じて、JavaトラストストアはBase64エンコードされた文字列をHelmの値に渡すことで構成することもできます。
-
Linux
-
MacOs
Base64エンコードされたトラストストアを使用するには、次の helm upgrade コマンドを実行します:
helm upgrade \
--install \
--namespace suse-observability \
--values values.yaml \
--set 'stackstate.java.trustStoreBase64Encoded'=$(cat custom_cacerts | base64 -w0) \
--set 'stackstate.java.trustStorePassword'=changeit \
suse-observability \
suse-observability/suse-observability
Base64エンコードされたトラストストアを使用するには、次の helm upgrade コマンドを実行します:
helm upgrade \
--install \
--namespace suse-observability \
--values values.yaml \
--set 'stackstate.java.trustStoreBase64Encoded'=$(cat custom_cacerts | base64) \
--set 'stackstate.java.trustStorePassword'=changeit \
suse-observability \
suse-observability/suse-observability
SUSE Observability エージェント
SUSE Observability エージェントは、HTTPSを介してSUSE Observabilityサーバーに接続します。サーバーが自己署名証明書を使用している場合、エージェントを構成してこの証明書を信頼し、安全な接続を確立する必要があります。
|
この構成は、サーバーがプライベート証明書機関(CA)によって署名された証明書を使用している場合にも必要です。この場合、以下に説明するのと同じ方法でプライベートCA証明書を追加します。 |
カスタム証明書を構成する
これらの2つの方法のいずれかを使用して、Helmチャートの値を介してカスタム証明書を構成します:
方法1:直接PEMデータ
証明書データをHelm構成に直接埋め込みます:
global:
customCertificates:
enabled: true
pemData: |
-----BEGIN CERTIFICATE-----
MIIDrzCCApegAwIBAgIUDMPkLOLGJ12438MbI32eykbw2xowDQYJKoZIhvcNAQEL
BQAwKTEnMCUGA1UEAwwedmlsaWFrb3Yuc2FuZGJveC5zdGFja3N0YXRlLmlvMB4X
DTI1MDcxNzEzMjgzN1oXDTI2MDcxNzEzMjgzN1owKTEnMCUGA1UEAwwedmlsaWFr
b3Yuc2FuZGJveC5zdGFja3N0YXRlLmlvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEA0MIdPOxrCpXB+F6P6NY7MyOimuViVWJGDW9ckz4mXZYCJD4iqrKS
Y4bP6ODO4BgWxKFElxNdwNIqhLmI7RR1MWSRo47oxwPLnqw3INlsX0t1rBp6k6zK
K4YY+wGdUH/keug03uMS7HxBXEmhCaMnGPj2BBfB4URc41DkFexGU/Fi1cyv0aCq
CgxbThN/fGSGN2evLuabk9mfw4AH3K8isQ+kS9i3O459BgDGH8yjbrWfBUdPXVx5
iFiYjGJjVM0pTP1dNriTc88lpajXRK++6O2gmjL9kbf0PGzRsvqqVgI07yR8uV1I
0MaUwM2/VJrVB6t80wBuC1Tiv+RiYmtJXwIDAQABo4HOMIHLMB0GA1UdDgQWBBSh
iKBCmrp8jHSCMvUnHv/Wgg7LyDAfBgNVHSMEGDAWgBShiKBCmrp8jHSCMvUnHv/W
gg7LyDAPBgNVHRMBAf8EBTADAQH/MHgGA1UdEQRxMG+CHnZpbGlha292LnNhbmRi
b3guc3RhY2tzdGF0ZS5pb4Ijb3RscC12aWxpYWtvdi5zYW5kYm94LnN0YWNrc3Rh
dGUuaW+CKG90bHAtaHR0cC12aWxpYWtvdi5zYW5kYm94LnN0YWNrc3RhdGUuaW8w
DQYJKoZIhvcNAQELBQADggEBAIuBFVqJsJImOB4thRk+FFd7UJlK1kQna9woKv23
ju+fpEWgZZQ0U/xGS9f3JvxCUJv8oj3HYkfPQQgtPmewATVBx2cTRpogV6JFcAo7
fPSLCzOuSt3c4SM1OtDnyToUaAf6YQQT4m+V4IKb6Qo0XWfCxhkuKJlOfmDtqNg/
uVYjfG7+KOZs+6CTJwqdIwpNDbLD+DNfo3b/c731Qa1b9o8Z8rIrNrYXj4kly3D1
97QiVJCL0u/fC+/KsUxq9ynAYSPgyd2CBnxnQDcq8aQATVTlAafSfk0shvucgQmJ
KIL9xaM3iTdvrWGtWeAiEQocsRBJM5xjqtnu0R5xDlLU/TQ=
-----END CERTIFICATE-----
方法2:ConfigMap参照
証明書を含むKubernetes ConfigMapを作成し、Helm構成で参照します:
apiVersion: v1
kind: ConfigMap
metadata:
name: tls-config
data:
tls.crt: |
-----BEGIN CERTIFICATE-----
[Your certificate content here]
-----END CERTIFICATE-----
Helm構成でConfigMapを参照してください:
global:
customCertificates:
enabled: true
configMapName: "tls-config"
カスタム証明書でデプロイする
直接PEMデータを使用する
直接PEMデータアプローチでは、最初に証明書をシェル変数に保存します:
export CERT_DATA=$(cat <<'EOF'
-----BEGIN CERTIFICATE-----
[Your certificate content here]
-----END CERTIFICATE-----
EOF
)
証明書設定でエージェントをデプロイする:
helm upgrade --install \
--namespace suse-observability \
--create-namespace \
--set-string 'stackstate.apiKey'='YOUR_API_KEY' \
--set-string 'stackstate.cluster.name'='YOUR_CLUSTER_NAME' \
--set-string 'stackstate.url'='YOUR_SUSE_OBSERVABILITY_URL' \
--set 'global.customCertificates.enabled'=true \
--set 'global.customCertificates.pemData'="$CERT_DATA" \
suse-observability-agent suse-observability/suse-observability-agent
ConfigMap参照を使用する
ConfigMapアプローチでは、証明書を含むConfigMapを作成します:
kubectl create configmap tls-config \
--from-file=tls.crt=your-certificate.crt \
--namespace suse-observability
ConfigMap参照でエージェントをデプロイする:
helm upgrade --install \
--namespace suse-observability \
--create-namespace \
--set-string 'stackstate.apiKey'='YOUR_API_KEY' \
--set-string 'stackstate.cluster.name'='YOUR_CLUSTER_NAME' \
--set-string 'stackstate.url'='YOUR_SUSE_OBSERVABILITY_URL' \
--set 'global.customCertificates.enabled'=true \
--set 'global.customCertificates.configMapName'='tls-config' \
suse-observability-agent suse-observability/suse-observability-agent
SUSE Observability CLI
SUSE Observability CLIは、HTTPSを介してSUSE Observability Serverに接続します。サーバーが自己署名証明書またはプライベート証明書機関(CA)からの証明書を使用している場合、CLIがこれらの証明書を信頼するように設定します。
カスタムCA証明書を設定する
次のいずれかの方法を使用してカスタムCA証明書を設定します:
-
永続的な設定:将来のコマンドのために証明書設定を保存するには`sts context save`を使用してください
-
一時的な使用:必要に応じて、個々のCLIコマンドに証明書フラグを追加します
方法1:CA証明書ファイルパス
PEMエンコードされたCA証明書ファイルのパスを指定してください:
sts context save \
--name staging \
--url https://staging.internal \
--api-token YOUR_API_TOKEN \
--ca-cert-path /path/to/ca.crt
方法2:Base64エンコードされたCA証明書データ
CA証明書データをbase64エンコードされた文字列として提供してください:
sts context save \
--name staging \
--url https://staging.internal \
--api-token YOUR_API_TOKEN \
--ca-cert-base64-data BASE64_ENCODED_CERTIFICATE_DATA
他のコマンドでCA証明書を使用する
一時的な証明書検証のために任意のCLIコマンドで証明書フラグを使用してください:
# Using certificate file path
sts agent list \
--url https://staging.internal \
--api-token YOUR_API_TOKEN \
--ca-cert-path /path/to/ca.crt
# Using base64-encoded certificate data
sts settings list \
--url https://staging.internal \
--api-token YOUR_API_TOKEN \
--ca-cert-base64-data BASE64_ENCODED_CERTIFICATE_DATA
SUSE Observability Open Telemetry
カスタムCAのためのconfigmapを作成します
kubectl create configmap tls-config \ --namespace open-telemetry \ --from-file=tls.crt=<your-certificate>
-
次の内容を`otel-collector.yaml`の最上位に追加してconfigmapをマウントします:
# Mounting volume for CA certificate
extraVolumes:
- name: tls-config
configMap:
items:
- key: tls.crt
path: tls.crt
name: tls-config
extraVolumeMounts:
- mountPath: "/certs"
name: tls-config
readOnly: true
-
`otel-collector.yaml`内のエクスポータ設定を更新し、`tls.ca_file`キーを追加して証明書*ca_file*を使用します:
otlp/suse-observability:
auth:
authenticator: bearertokenauth
# Put in your own otlp endpoint, for example suse-observability.my.company.com:443
endpoint: <your-endpoint>
compression: snappy
tls:
ca_file: /certs/tls.crt
-
Open Telemetryコレクタをインストール(またはアップグレード)します。
SUSE ObservabilityのためのRancher UI拡張
SUSE ObservabilityのためのRancher UI拡張をインストールする際(UI拡張のインストールを参照)、拡張はSUSE Observabilityサーバーと通信する必要があります。サーバーが自己署名証明書を使用している場合、拡張のインストールは失敗します。
解決策:拡張をインストールする前に、Rancherにカスタム証明書を追加してください。Rancherのドキュメントに従ってください: カスタムCAルート証明書の設定.
Rancherで証明書を設定した後、拡張はSUSE Observability Serverに正常に接続します。