この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

KubernetesクラスターにSUSE Rancher Primeをインストール/アップグレードする

このセクションでは、Helm CLIを使用してKubernetesクラスターにRancherをデプロイする方法を学びます。

前提条件

Kubernetesクラスタ

RancherサーバーのローカルKubernetesクラスターを設定します。

Rancherは任意のKubernetesクラスターにインストールできます。このクラスターは、アップストリームKubernetesを使用することも、RancherのKubernetesディストリビューションのいずれかを使用することも、Amazon EKSなどのプロバイダーからの管理されたKubernetesクラスターであることもできます。

Kubernetesクラスターの設定に関するヘルプとして、これらのチュートリアルを提供しています:

  • *K3s:*K3s Kubernetesクラスターをインストールするためのチュートリアルについては、このページを参照してください。高可用性K3sクラスターのインフラストラクチャを設定するためのヘルプについては、このページを参照してください。

  • *RKE2:*RKE2 Kubernetesクラスターをインストールするためのチュートリアルについては、このページを参照してください。高可用性RKE2クラスターのインフラストラクチャを設定するためのヘルプについては、このページを参照してください。

  • *Amazon EKS:*Amazon EKSにRancherをインストールする方法の詳細、RancherサーバーにアクセスできるようにIngressコントローラーをインストールする方法については、このページを参照してください。

  • *AKS:*Azure Kubernetes ServiceでRancherをインストールする方法の詳細、RancherサーバーにアクセスできるようにIngressコントローラーをインストールする方法については、このページを参照してください。

  • *GKE:*Google Kubernetes EngineでRancherをインストールする方法の詳細、RancherサーバーにアクセスできるようにIngressコントローラーをインストールする方法については、このページを参照してください。GKEには、Kubernetesクラスターを作成する際にAutopilotモードとStandardモードの2つの操作モードがあります。Autopilotモードのクラスター構成には、kube-systemネームスペースの編集に制限があります。ただし、Rancherはインストール中にkube-systemネームスペースにリソースを作成する必要があります。その結果、Autopilotモードで作成されたGKEクラスターにRancherをインストールすることはできません。

Ingressコントローラー

RancherのUIとAPIはIngressを通じて公開されます。これは、RancherをインストールするKubernetesクラスターにIngressコントローラーが含まれている必要があることを意味します。

RKE2およびK3sのインストールでは、デフォルトでIngressコントローラーがインストールされるため、手動でインストールする必要はありません。

EKS、GKE、AKSなどのホステッドKubernetesクラスターのように、デフォルトでIngressコントローラーが含まれていないディストリビューションの場合、最初にIngressコントローラーをデプロイする必要があります。Rancher Helmチャートは、デフォルトでIngressに`ingressClassName`を設定しないことに注意してください。このため、`ingressClassName`のないIngressも監視するようにIngressコントローラーを構成する必要があります。

例は、上記の*Amazon EKS*、AKS、および*GKE*のチュートリアルに含まれています。

CLIツール

Kubernetesクラスターをセットアップするために必要なCLIツールは次のとおりです。これらのツールがインストールされており、あなたの`$PATH`で利用可能であることを確認してください。

Rancher Helm チャートをインストールします。

Rancherは、Kubernetes用の Helmパッケージマネージャーを使用してインストールされます。Helmチャートは、Kubernetes YAMLマニフェストドキュメントのテンプレート構文を提供します。Helmを使用すると、静的ファイルを使用する代わりに、設定可能なデプロイメントを作成できます。

直接インターネットにアクセスできないシステムについては、エアギャップ:Kubernetesのインストールを参照してください。

インストールするRancherのバージョンを選択するには、xref:[Rancherバージョンの選択]を参照してください。

RancherをインストールするためのHelmのバージョンを選択するには、Helmのバージョン要件を参照してください。

インストール手順は、Helm 3を使用していることを前提としています。

Rancherをセットアップするには、

1.Helmチャートリポジトリを追加します。

`helm repo add`コマンドを使用して、Rancher Primeをインストールするためのチャートを含むHelmチャートリポジトリを追加します。

helm repo add rancher-prime <helm-chart-repo-url>

To learn more about the Rancher Prime Helm chart repository URL, see our Prime-only documentation. Authentication is required. Use your SUSE Customer Center (SCC) credentials to log in.

2.Rancherのネームスペースを作成します。

チャートによって作成されるリソースがインストールされるKubernetesネームスペースを定義する必要があります。これは常に`cattle-system`であるべきです:

kubectl create namespace cattle-system

3.SSL設定を選択してください。

Rancher管理サーバーはデフォルトで安全に設計されており、SSL/TLS設定が必要です。

SSL/TLSを外部で終了させたい場合は、外部ロードバランサーでのTLS終了を参照してください。そのページに記載されているように、このオプションにはTLS検証のための追加要件があります。

RancherサーバーでTLS終了に使用される証明書のソースとして推奨されるオプションは3つあります:

  • *Rancher生成のTLS証明書:*この場合、クラスターに`cert-manager`をインストールする必要があります。Rancherは`cert-manager`を利用して証明書を発行および維持します。Rancherは独自のCA証明書を生成し、そのCAを使用して証明書に署名します。`cert-manager`はその証明書の管理を担当します。`agent-tls-mode`が厳格に設定されている場合、追加のアクションは必要ありません。この設定に関する詳細情報は、エージェントTLS強制で見つけることができます。

  • *Let’s Encrypt:*Let’s Encryptオプションも`cert-manager`を使用します。ただし、この場合、cert-managerはLet’s Encryptの特別なIssuerと組み合わされており、Let’s Encrypt発行の証明書を取得するために必要なすべてのアクション(リクエストと検証を含む)を実行します。この構成はHTTP検証(HTTP-01)を使用するため、ロードバランサーはパブリックDNSレコードを持ち、インターネットからアクセス可能でなければなりません。agent-tls-mode`を`strict`に設定する際は、--privateCA=true`も指定し、TLSシークレットの追加に記載されているようにLet’s Encrypt CAをアップロードする必要があります。この設定に関する詳細情報は、エージェントTLS強制で確認できます。

  • *Bring Your Own Certificate:*このオプションでは、独自の公開CAまたはプライベートCAによって署名された証明書を持参できます。Rancherは、その証明書を使用してWebSocketおよびHTTPSトラフィックを保護します。この場合、証明書(および関連するキー)をPEMエンコードされたファイルとして、`tls.crt`および`tls.key`という名前でアップロードする必要があります。プライベートCAを使用している場合、その証明書もアップロードする必要があります。これは、このプライベートCAがノードによって信頼されない可能性があるためです。RancherはそのCA証明書を取得し、そこからチェックサムを生成します。これをさまざまなRancherコンポーネントがRancherへの接続を検証するために使用します。`agent-tls-mode`が`strict`に設定されている場合、CAをアップロードする必要があります。これにより、ダウンストリームクラスターが正常に接続できるようになります。この設定に関する詳細情報は、エージェントTLS強制で見つけることができます。

設定 Helmチャートオプション cert-managerが必要です

Rancher生成の証明書(デフォルト)

ingress.tls.source=rancher

yes

Let’s Encrypt

ingress.tls.source=letsEncrypt

yes

ファイルからの証明書

ingress.tls.source=secret

no

4.cert-managerをインストールします。

独自の証明書ファイルを持参する場合(オプション`ingress.tls.source=secret`)、または外部ロードバランサーでのTLS終了を使用する場合は、このステップをスキップしてください。

このステップは、Rancherが生成したCA(ingress.tls.source=rancher)によって発行された証明書を使用する場合、またはLet’s Encryptによって発行された証明書をリクエストする場合にのみ必要です。

クリックして開く
重要:

cert-managerへの最近の変更により、アップグレードが必要です。Rancherをアップグレードしており、cert-managerのバージョンがv0.11.0より古い場合は、アップグレードドキュメントを参照してください。

これらの指示は、 公式cert-managerドキュメントから適応されています。

cert-managerのインストールをカスタマイズする方法(クラスターがPodSecurityPoliciesを使用する場合を含む)についてのオプションは、 cert-managerドキュメントを参照してください。

# If you have installed the CRDs manually, instead of setting `installCRDs` or `crds.enabled` to `true` in your Helm install command, you should upgrade your CRD resources before upgrading the Helm chart:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/<VERSION>/cert-manager.crds.yaml

# Add the Jetstack Helm repository
helm repo add jetstack https://charts.jetstack.io

# Update your local Helm chart repository cache
helm repo update

# Install the cert-manager Helm chart
helm install cert-manager jetstack/cert-manager \
  --namespace cert-manager \
  --create-namespace \
  --set crds.enabled=true

cert-managerをインストールしたら、実行中のポッドがあるかどうかをcert-managerネームスペースで確認することで、正しくデプロイされているかを確認できます。

kubectl get pods --namespace cert-manager

NAME                                       READY   STATUS    RESTARTS   AGE
cert-manager-5c6866597-zw7kh               1/1     Running   0          2m
cert-manager-cainjector-577f6d9fd7-tr77l   1/1     Running   0          2m
cert-manager-webhook-787858fcdb-nlzsq      1/1     Running   0          2m

5.Helmを使用してRancherをインストールし、選択した証明書オプションを指定します。

Rancherをインストールするための正確なコマンドは、証明書の設定によって異なります。

ただし、証明書の設定に関係なく、`cattle-system`名前空間におけるRancherインストールの名前は常に`rancher`である必要があります。

テストと開発:

Rancherをインストールするためのこの最終コマンドは、Rancherにトラフィックを転送するドメイン名を必要とします。Helm CLIを使用して概念実証を設定する場合、hostname`オプションを渡す際に偽のドメイン名を使用できます。偽のドメイン名の例としては、<IP_OF_LINUX_NODE>.sslip.io`があり、これはRancherが実行されているIPでRancherを公開します。本番環境のインストールには、実際のドメイン名が必要です。

  • Rancher生成の証明書

  • Let’s Encrypt

  • ファイルからの証明書

デフォルトでは、RancherがCAを生成し、`cert-manager`を使用してRancherサーバーインターフェースへのアクセス用の証明書を発行します。

`rancher`は`ingress.tls.source`のデフォルトオプションであるため、`helm install`コマンドを実行する際に`ingress.tls.source`を指定していません。

  • `hostname`をロードバランサーにポイントしたDNS名に設定します。

  • `bootstrapPassword`を`admin`ユーザーのためにユニークなものに設定します。

  • 特定のRancherバージョンをインストールするには、--version`フラグを使用します。例:--version 2.7.0`

helm install rancher rancher-prime/rancher \
  --namespace cattle-system \
  --set hostname=rancher.my.org \
  --set bootstrapPassword=admin

Rancherがデプロイされるのを待ちます:

kubectl -n cattle-system rollout status deploy/rancher
Waiting for deployment "rancher" rollout to finish: 0 of 3 updated replicas are available...
deployment "rancher" successfully rolled out

このオプションは、`cert-manager`を使用して Let’s Encrypt証明書を自動的にリクエストおよび更新します。これは、Let’s Encryptが信頼されたCAであるため、有効な証明書を提供する無料のサービスです。

HTTP-01チャレンジはポート80でのみ実行できるため、ポート80を開いておく必要があります。

次のコマンドでは、

  • `hostname`は公開DNSレコードに設定されています、

  • `bootstrapPassword`を`admin`ユーザーのためにユニークなものに設定します。

  • `ingress.tls.source`は`letsEncrypt`に設定されています

  • `letsEncrypt.email`は証明書に関する通信に使用されるメールアドレスに設定されています(例えば、期限通知など)

  • letsEncrypt.ingress.class`を、あなたのイングレスコントローラーに合わせて設定します。例:`traefiknginx、`haproxy`など。

agent-tls-mode`が`strict`に設定されている場合(Rancherの新しいインストールのデフォルト値はv2.9.0から)、`privateCA=true`チャート値を提供し(例:--set privateCA=true`を通じて)、TLSシークレットの追加に記載されているようにLet’s Encrypt証明書機関をアップロードする必要があります。Let’s EncryptルートCAの特定に関する情報は、Let’s Encrypt docsにあります。CAをアップロードしない場合、Rancherは新しいまたは既存のダウンストリームクラスターに接続できない可能性があります。

helm install rancher rancher-prime/rancher \
  --namespace cattle-system \
  --set hostname=rancher.my.org \
  --set bootstrapPassword=admin \
  --set ingress.tls.source=letsEncrypt \
  --set letsEncrypt.email=me@example.org \
  --set letsEncrypt.ingress.class=nginx

Rancherがデプロイされるのを待ちます:

kubectl -n cattle-system rollout status deploy/rancher
Waiting for deployment "rancher" rollout to finish: 0 of 3 updated replicas are available...
deployment "rancher" successfully rolled out

このオプションでは、Rancherが使用するために自分の証明書からKubernetesシークレットが作成されます。

このコマンドを実行する際、`hostname`オプションは`Common Name`またはサーバー証明書の`Subject Alternative Names`エントリと一致する必要があります。そうしないと、イングレスコントローラーは正しく構成されません。

`Subject Alternative Names`のエントリは技術的に必要ですが、一致する`Common Name`を持つことで古いブラウザやアプリケーションとの互換性が最大化されます。

証明書が正しいかどうかを確認したい場合は、サーバー証明書のコモンネームと代替名を確認するにはどうすればよいですか?を参照してください。

  • `hostname`を設定します。

  • `bootstrapPassword`を`admin`ユーザーのためにユニークなものに設定します。

  • `ingress.tls.source`を`secret`に設定します。

helm install rancher rancher-prime/rancher \
  --namespace cattle-system \
  --set hostname=rancher.my.org \
  --set bootstrapPassword=admin \
  --set ingress.tls.source=secret

プライベートCA署名の証明書を使用している場合は、コマンドに`--set privateCA=true`を追加してください:

helm install rancher rancher-prime/rancher \
  --namespace cattle-system \
  --set hostname=rancher.my.org \
  --set bootstrapPassword=admin \
  --set ingress.tls.source=secret \
  --set privateCA=true

Rancherがデプロイされたので、TLSシークレットの追加を参照して、Rancherとイングレスコントローラーが使用できるように証明書ファイルを公開します。

Rancherチャートの設定には、特定の環境に合わせてインストールをカスタマイズするための多くのオプションがあります。ここにいくつかの一般的な高度なシナリオがあります。

オプションの完全なリストについては、チャートオプションを参照してください。

6.Rancherサーバーが正常にデプロイされていることを確認してください。

シークレットを追加した後、Rancherが正常にデプロイされたかどうかを確認してください:

kubectl -n cattle-system rollout status deploy/rancher
Waiting for deployment "rancher" rollout to finish: 0 of 3 updated replicas are available...
deployment "rancher" successfully rolled out

次のエラーが表示された場合:error: deployment "rancher" exceeded its progress deadline、次のコマンドを実行してデプロイメントのステータスを確認できます:

kubectl -n cattle-system get deploy rancher
NAME      DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
rancher   3         3         3            3           3m

`DESIRED`と`AVAILABLE`のカウントが同じである必要があります。

7.オプションを保存する

使用した`--set`オプションを保存してください。RancherをHelmで新しいバージョンにアップグレードする際に、同じオプションを使用する必要があります。

完了

以上です。機能するRancherサーバーがあるはずです。

ウェブブラウザで、トラフィックをロードバランサーに転送するDNS名にアクセスしてください。その後、カラフルなログインページが表示されるはずです。

動作しませんか?トラブルシューティングページを確認してください。