기존 Kubernetes Operator를 클러스터 범위로 변경

운영자 범위는 운영자가 작업을 수행할 사용자 지정 리소스(CR)를 감시하는 네임스페이스입니다.
  • 네임스페이스 범위(단일 네임스페이스 감시)
  • 클러스터 범위(모든 네임스페이스 감시)

  • operator-sdk 설명서는 operator-sdk main.go에서 watchNamespace를 빈 문자열로 설정하는 방법에 대해 설명하며 다음과 같이 보일 수 있습니다.

        // check the WATCH_NAMESPACE env var to see if populated
        var watchNamespaceEnvVar = "WATCH_NAMESPACE"
    
        ns, found := os.LookupEnv(watchNamespaceEnvVar)
        if !found {
            return "", fmt.Errorf("%s must be set", watchNamespaceEnvVar)
        }
    mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{
        Scheme:             scheme,
        MetricsBindAddress: metricsAddr,
        Port:               9443,
        LeaderElection:     enableLeaderElection,
        LeaderElectionID:   "f1c5ece8.example.com",
        Namespace:          watchNamespace, // namespaced-scope when the value is not an empty string
    })
    

    Namespace이 설정되지 않았거나 빈 문자열로 설정된 경우 연산자는 이미 클러스터 범위입니다.

    나처럼 OLM( Operator Lifecycle Mananger )을 사용하여 운영자의 설치 및 업그레이드를 처리하는 경우 main.go에서 코드를 변경할 필요가 없습니다. 이제 OLM이 모든 범위 지정 변경을 처리합니다. CSV와 클러스터의 운영자 그룹만 변경하면 됩니다.

    NOTE: v1.0.0 the Operator-sdk or greater



    먼저 CSV(ClusterServiceVersion)에서 installModes에 대한 설치 AllNamespacestrue으로 설정합니다.

     installModes:
      - supported: true
        type: OwnNamespace
      - supported: true
        type: SingleNamespace
      - supported: false
        type: MultiNamespace
      - supported: true
        type: AllNamespaces 
    


    이것이 설정되고 클러스터에서 OLM으로 배포되면 필요한 유일한 변경 사항은 OperatorGroup 사양입니다. 네임스페이스가 지정된 operatorGroup 사양은 다음과 같습니다.

    spec:
      targetNamespaces:
      - whatever_WATCH_NAMESPACES_is
    


    클러스터 범위로 설정하려면 사양을 변경하십시오.

    spec: {}
    

    AllNamespaces이 CSV에 설정되어 있으므로 다른 작업을 수행할 필요가 없습니다. 연산자는 클러스터 범위로 변경하고 모든 네임스페이스를 감시합니다. operatorGroup을 업데이트하지 않으면 연산자는 네임스페이스 범위로 유지됩니다. 따라서 범위가 지정된 네임스페이스에서 이동합니다.



    클러스터 범위로



    리소스 풋프린트는 클러스터 범위 연산자의 경우 조금 더 높고 연산자의 CSV는 클러스터의 모든 네임스페이스에 생성됩니다.

    좋은 웹페이지 즐겨찾기