NCP와 동일한 포드에서 실행되도록 syslog용 사이드카 컨테이너를 구성할 수 있습니다. 다음 절차에서는 syslog 에이전트 이미지가 example/rsyslog라고 가정합니다.

프로시저

  1. 파일에 기록하도록 NCP 및 NSX 노드 에이전트를 구성합니다.
    NCP 및 NSX 노드 에이전트의 yaml 파일에서 log_dir 매개 변수를 설정하고 마운트할 볼륨을 지정합니다. 예를 들면 다음과 같습니다.
        [DEFAULT]
        log_dir = /var/log/nsx-ujo/
        ...
    
        spec:
          ...
          containers:
            - name: nsx-ncp
              ...
              volumeMounts:
              - name: nsx-ujo-log-dir
                # Mount path must match [DEFAULT] option "log_dir"
                mountPath: /var/log/nsx-ujo
          volumes:
            ...
            - name: nsx-ujo-log-dir
              hostPath:
                path: /var/log/nsx-ujo

    log_file 매개 변수를 설정하여 로그 파일 이름을 변경할 수 있습니다. 기본 이름은 ncp.log, nsx_node_agent.lognsx_kube_proxy.log입니다. log_dir 옵션을 /var/log/nsx-ujo 경로 이외의 경로로 설정하면 hostPath 볼륨 또는 emptyDir 볼륨을 생성하여 해당 pod 사양에 마운트해야 합니다.

  2. 호스트 경로가 있고 사용자 nsx-ncp가 호스트 경로를 쓸 수 있는지 확인합니다.
    1. 다음 명령을 실행합니다.
          mkdir -p <host-filesystem-log-dir-path>
          chmod +w <host-filesystem-log-dir-path>
    2. 사용자 nsx-ncp를 추가하거나 호스트 경로의 모드를 777로 변경합니다.
          useradd -s /bin/bash nsx-ncp
          chown nsx-ncp:nsx-ncp <host-filesystem-log-dir-path>
      or
          chmod 777 <host-filesystem-log-dir-path>
  3. NCP 포드의 사양 yaml 파일에서 syslog용 ConfigMap을 추가합니다. 예를 들면 다음과 같습니다.
        kind: ConfigMap
        metadata:
          name: rsyslog-config
          labels:
            version: v1
        data:
          ncp.conf: |
            module(load="imfile")
        
            ruleset(name="remote") {
              action(type="omfwd"
              Protocol="tcp"
              Target="nsx.example.com"
              Port="514")
        
              stop
            }
        
            input(type="imfile"
              File="/var/log/nsx-ujo/ncp.log"
              Tag="ncp"
              Ruleset="remote"
  4. NCP 포드의 yaml 파일에서 rsyslog 컨테이너를 추가하고, rsyslog가 구성 데이터를 찾고 다른 컨테이너에서 로그를 읽을 수 있는 적절한 볼륨을 마운트합니다. 예를 들면 다음과 같습니다.
         spec:
           containers:
           - name: nsx-ncp
             ...
           - name: rsyslog
             image: example/rsyslog
             imagePullPolicy: IfNotPresent
             volumeMounts:
             - name: rsyslog-config-volume
               mountPath: /etc/rsyslog.d
               readOnly: true
             - name: nsx-ujo-log-dir
               mountPath: /var/log/nsx-ujo
           volumes:
             ...
             - name: rsyslog-config-volume
               configMap:
                 name: rsyslog-config
             - name: nsx-ujo-log-dir
               hostPath:
                 path: <host-filesystem-log-dir-path>