|
この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。 |
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`で利用可能であることを確認してください。
-
kubectl - Kubernetesコマンドラインツール。
-
helm - Kubernetes用のパッケージ管理。RancherをインストールするためのHelmのバージョンを選択するには、Helmのバージョン要件を参照してください。特定のプラットフォームに関する指示については、 Helmプロジェクトが提供する指示を参照してください。
Rancher Helm チャートをインストールします。
Rancherは、Kubernetes用の Helmパッケージマネージャーを使用してインストールされます。Helmチャートは、Kubernetes YAMLマニフェストドキュメントのテンプレート構文を提供します。Helmを使用すると、静的ファイルを使用する代わりに、設定可能なデプロイメントを作成できます。
直接インターネットにアクセスできないシステムについては、エアギャップ:Kubernetesのインストールを参照してください。
インストールするRancherのバージョンを選択するには、xref:[Rancherバージョンの選択]を参照してください。
RancherをインストールするためのHelmのバージョンを選択するには、Helmのバージョン要件を参照してください。
|
インストール手順は、Helm 3を使用していることを前提としています。 |
Rancherをセットアップするには、
-
cert-managerをインストールする(Bring Your Own Certificateの場合、またはTLSがロードバランサーで終了する場合を除く)
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生成の証明書(デフォルト) |
|
|
Let’s Encrypt |
|
|
ファイルからの証明書 |
|
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を使用して概念実証を設定する場合、 |
-
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`を、あなたのイングレスコントローラーに合わせて設定します。例:`traefik、nginx、`haproxy`など。
|
|
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`のカウントが同じである必要があります。
完了
以上です。機能するRancherサーバーがあるはずです。
ウェブブラウザで、トラフィックをロードバランサーに転送するDNS名にアクセスしてください。その後、カラフルなログインページが表示されるはずです。
動作しませんか?トラブルシューティングページを確認してください。