k3sでのコンテナ化されたSUSE Managerプロキシのインストール

1. k3sのインストール

コンテナホストマシン上でロードバランサとtraefikルータを使用せずにk3sをインストールします(<K3S_HOST_FQDN>をk3sホストのFQDNに置き換えます)。

curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--disable=traefik --disable=servicelb --tls-san=<K3S_HOST_FQDN>" sh -

2. クラスタアクセスの設定

helmには、ターゲットKubernetesクラスタに接続するための設定ファイルが必要です。

クラスタサーバマシン上で次のコマンドを実行して、kubeconfig-k3s.yaml設定ファイルを作成します。 kubeconfig-k3s.yamlファイルは必要に応じて作業マシンに転送できます。

kubectl config view --flatten=true | sed 's/127.0.0.1/<K3S_HOST_FQDN>/' >kubeconfig-k3s.yaml

helmを呼び出す前に、次のコマンドを実行します。

export KUBECONFIG=/path/to/kubeconfig-k3s.yaml

3. helmのインストール

Containersモジュールがhelmをインストールするために必要です。

インストールするには、次のコマンドを実行します。

zypper in helm

4. metalLBのインストール

MetalLBは、SUSE Managerプロキシポッドサービスを外部に公開するロードバランサです。 インストールするには、次のコマンドを実行します。

helm repo add metallb https://metallb.github.io/metallb
helm install --create-namespace -n metallb metallb metallb/metallb

MetalLBでは、使用する仮想IPアドレス範囲を知るための設定が必要です。 この例では、仮想IPアドレスは192.168.122.240から192.168.122.250になりますが、ホストがSUSE Managerプロキシのみを公開している場合は、その範囲を単一のアドレスに狭めることができます。 これらのアドレスは、サーバネットワークのサブセットである必要があります。

次の設定および配備されたネットワークに対応するIPアドレス範囲を指定して、metallb-config.yaml設定ファイルを作成します。

apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: l2-pool
  namespace: metallb
spec:
  addresses:
  - 192.168.122.240-192.168.122.250
---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
  name: l2
  namespace: metallb
spec:
  ipAddressPools:
  - l2-pool

次のコマンドを実行して、この設定を適用します。

kubectl apply -f metallb-config.yaml

5. SUSE Managerプロキシhelmチャートの配備

SUSE ManagerプロキシサービスにMetalLBが使用するIPアドレスを強制する設定ファイルを作成します。 このIPアドレスは、プロキシ設定の作成時にプロキシFQDNが入力されたアドレスである必要があります。 また、プロキシに接続するには、SUSE Managerサーバとクライアントシステムの両方から解決できる必要があります。

次の例では、192.168.122.241を使用します。

次の内容を含むcustom-values.yamlファイルを作成します。 MetalLB IPアドレス範囲に1つのアドレスしか含まれていない場合は、最後の行を削除できます。

services:
  annotations:
    metallb.universe.tf/allow-shared-ip: key-to-share-ip
    metallb.universe.tf/loadBalancerIPs: 192.168.122.241

パラメータmetallb.universe.tf/allow-shared-ipは変更する必要はありません。 パラメータmetallb.universe.tf/loadBalancerIPsをネットワーク設定に合わせて調整する必要があります。

SUSE Managerプロキシポッドで使用するボリュームのストレージを設定するには、次のクレームに対して永続ボリュームを定義します。 詳細については、https://kubernetes.io/docs/concepts/storage/persistent-volumes/ (kubernetes)またはhttps://rancher.com/docs/k3s/latest/en/storage/ (k3s)のドキュメントを参照してください。 永続ボリュームクレームの名前は次のとおりです。

  • squid-cache-pv-claim

  • /package-cache-pv-claim

  • /tftp-boot-pv-claim

コンテナ化されたSUSE Managerプロキシの設定に記載されているように、SUSE Managerプロキシの設定を作成します。 設定tar.gzファイルをコピーして抽出し、helmチャートを配備します。

tar xf /path/to/config.tar.gz
helm install uyuni-proxy oci://registry.suse.com/suse/manager/4.3/proxy -f config.yaml -f httpd.yaml -f ssh.yaml -f custom-values.yaml