おうちクラスタにKubeVirtをデプロイした時の話を書いておきます。
実際に変更したコミットは以下にあるので参考にしてください。
マニフェストを用意する
公式のInstalling KubeVirt on Kubernetesを元に必要なファイルを書いていきます。 まずは以下のコマンドをkustomization.yamlに書き換えてArgo CDでデプロイできるようにします。
# Point at latest release $ export RELEASE=$(curl https://storage.googleapis.com/kubevirt-prow/release/kubevirt/kubevirt/stable.txt) # Deploy the KubeVirt operator $ kubectl apply -f https://github.com/kubevirt/kubevirt/releases/download/${RELEASE}/kubevirt-operator.yaml # Create the KubeVirt CR (instance deployment request) which triggers the actual installation $ kubectl apply -f https://github.com/kubevirt/kubevirt/releases/download/${RELEASE}/kubevirt-cr.yaml # wait until all KubeVirt components are up $ kubectl -n kubevirt wait kv kubevirt --for condition=Available
↓ kustomization.yamlに書き換える
--- apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization namespace: kubevirt resources: - https://github.com/kubevirt/kubevirt/releases/download/v1.1.0/kubevirt-operator.yaml - https://github.com/kubevirt/kubevirt/releases/download/v1.1.0/kubevirt-cr.yaml
クラスタにデプロイする
おうちクラスタではArgo CDを使ってマニフェストを反映しています。 なので、Argo CD Applicationを作成してデプロイします。
--- apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: kubevirt finalizers: - resources-finalizer.argocd.argoproj.io spec: project: default sources: - path: manifests/kubevirt/base repoURL: https://github.com/corrupt952/home destination: server: "https://kubernetes.default.svc" namespace: kubevirt syncPolicy: syncOptions: - CreateNamespace=true automated: prune: true selfHeal: true
後はデフォルトブランチにプッシュすれば、弊宅では反映されます。
これで諸々の作業は完了です。 krew経由でvirtctlをインストールしておくと楽なのでオススメしておきます。
余談
弊宅のクラスタネットワークはサブネットが異なるため、ただのsshだけでは接続ができないのでvirtctlを使ってsshをしています。
kubectl virt ssh cirros@testvm
似たようなネットワーク構成の人がいれば参考にまでにどうぞ