Slide 10
Slide 10 text
10
func (r *K8sNoviceOperatorReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
logger := log.FromContext(ctx)
// CRの定義を取得
var k8snovice k8snoviceoperatorv1.K8sNoviceOperator
if err := r.Client.Get(ctx, req.NamespacedName, &k8snovice); err != nil {
logger.Error(err, "unable to fetch K8sNoviceOperator")
return ctrl.Result{}, err
}
// DeploymentのApply
// CRに変更がある、または既存管理対象ターゲットと定義が異なる場合は、
// 再度CR定義を基にApplyする
if err := r.applyDeployment(k8snovice, logger); err != nil {
logger.Error(err, "unable to apply Deployment")
return ctrl.Result{}, err
}
return ctrl.Result{}, nil
}
Kubernetes Operatorって?
• Reconcile定義
基本としては、CR定義を取得し、CR定義に沿って監理対象ターゲットの冪等性を保つように
実装する