{"componentChunkName":"component---src-templates-post-template-jsx","path":"/works/posts/2022-08-23--001","result":{"data":{"site":{"siteMetadata":{"title":"Blog by Eunyoung","subtitle":"작업 기록 블로그","copyright":"© All rights reserved.","author":{"name":"EunYoung","twitter":"#"},"disqusShortname":"","url":"https://ssongey.github.io"}},"markdownRemark":{"id":"61f1c961-c4c1-552e-8f0e-14f1255862d8","html":"<p>이번에 인프라 이전 작업이 잦아질 듯 싶다.<br>\n작업 기록을 정리하고 스크립트를 만들 수 있는 곳을 찾아봐야겠다.</p>\n<h1>✔️ 깃헙 레포 미러링</h1>\n<ul>\n<li>\n<p>공동체 깃헙에서 kep 깃헙으로 미러링 필요시</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token function\">git</span> clone --mirror <span class=\"token punctuation\">{</span>기존 레포 주소<span class=\"token punctuation\">}</span>\n$ <span class=\"token builtin class-name\">cd</span> <span class=\"token punctuation\">{</span>기존 레포명<span class=\"token punctuation\">}</span>.git\n$ <span class=\"token function\">git</span> remote set-url --push origin <span class=\"token punctuation\">{</span>신규 레포 주소<span class=\"token punctuation\">}</span>\n$ <span class=\"token function\">git</span> push --mirror</code></pre></div>\n</li>\n</ul>\n<h1>✔️ 클러스터 생성</h1>\n<ul>\n<li>\n<p>IKE 클러스터 생성시에 커버로스 인증을 위해 아래 스크립트 수행이 필요하다.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> -s https://kenopy.kakaoicloud.in/kenopy/IKE/kenopy-ike.sh <span class=\"token operator\">|</span> <span class=\"token function\">bash</span></code></pre></div>\n</li>\n</ul>\n<h1>✔️ 클러스터 세팅</h1>\n<h2>1. ingress controller 설치</h2>\n<h3><strong>1.1 도커파일 세팅</strong></h3>\n<ul>\n<li>필요시 <a href=\"https://hub.docker.com/r/nginx/nginx-ingress\">nginx-ingress docker hub 사이트</a>에서 도커 이미지를 받는다.  </li>\n<li>official 사이트에서 도커 이미지 받아서 사내 registry에 올릴 경우, 아래 명령어를 이용한다.  </li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ docker pull <span class=\"token punctuation\">{</span>official docker image<span class=\"token punctuation\">}</span>\n\n<span class=\"token comment\"># 이미지명 변경</span>\n$ docker image tag <span class=\"token punctuation\">{</span>이미지ID<span class=\"token punctuation\">}</span> <span class=\"token punctuation\">{</span>변경할 이름<span class=\"token punctuation\">}</span>:<span class=\"token punctuation\">{</span>태그<span class=\"token punctuation\">}</span>\n또는\n$ docker image tag <span class=\"token punctuation\">{</span>변경전 이름<span class=\"token punctuation\">}</span>:<span class=\"token punctuation\">{</span>태그<span class=\"token punctuation\">}</span> <span class=\"token punctuation\">{</span>변경할 이름<span class=\"token punctuation\">}</span>:<span class=\"token punctuation\">{</span>태그<span class=\"token punctuation\">}</span>\n\n$ docker push <span class=\"token punctuation\">{</span>변경된 이름<span class=\"token punctuation\">}</span>:<span class=\"token punctuation\">{</span>태그<span class=\"token punctuation\">}</span></code></pre></div>\n<ul>\n<li>터미널에서 docker login 명령어</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token builtin class-name\">echo</span> <span class=\"token punctuation\">{</span>패스워드/CREDENTIAL_SECRET<span class=\"token punctuation\">}</span> <span class=\"token operator\">|</span> docker login <span class=\"token punctuation\">{</span>registry 주소<span class=\"token punctuation\">}</span> -u <span class=\"token punctuation\">{</span>아이디/CREDENTIAL_ID<span class=\"token punctuation\">}</span> --password-stdin</code></pre></div>\n<h3><strong>1.2. 설치</strong></h3>\n<ul>\n<li>\n<p>k8s 매니페스트로 설치</p>\n<ul>\n<li><a href=\"https://github.com/kubernetes/ingress-nginx/blob/main/deploy/static/provider/cloud/deploy.yaml\">https://github.com/kubernetes/ingress-nginx/blob/main/deploy/static/provider/cloud/deploy.yaml</a></li>\n<li><a href=\"https://raw.githubusercontent.com/kakaoicloud-guide/kubernetes-engine/main/guide-samples/settingIC/ingress-nginx/controller-v1.3.1/deploy.yml\">https://raw.githubusercontent.com/kakaoicloud-guide/kubernetes-engine/main/guide-samples/settingIC/ingress-nginx/controller-v1.3.1/deploy.yml</a></li>\n</ul>\n</li>\n<li>\n<p>헬름으로 설치</p>\n<ul>\n<li>\n<p>헬름레포 추가</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ helm repo <span class=\"token function\">add</span> ingress-nginx https://kubernetes.github.io/ingress-nginx\n<span class=\"token string\">\"ingress-nginx\"</span> has been added to your repositories \n\n$ helm repo update\nHang tight <span class=\"token keyword\">while</span> we grab the latest from your chart repositories<span class=\"token punctuation\">..</span>.\n<span class=\"token punctuation\">..</span>.Successfully got an update from the <span class=\"token string\">\"ingress-nginx\"</span> chart repository\nUpdate Complete. ⎈Happy Helming<span class=\"token operator\">!</span>⎈</code></pre></div>\n</li>\n<li>\n<p>배포</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ helm <span class=\"token function\">install</span> ingress-nginx ingress-nginx/ingress-nginx <span class=\"token punctuation\">\\</span>\n    --version <span class=\"token punctuation\">{</span>버전<span class=\"token punctuation\">}</span> <span class=\"token punctuation\">\\</span>\n    --set controller.hostNetwork<span class=\"token operator\">=</span>true <span class=\"token punctuation\">\\</span>\n    --namespace ingress-nginx --create-namespace</code></pre></div>\n</li>\n</ul>\n</li>\n</ul>\n<h3><strong>1.3. 배포 확인</strong></h3>\n<ul>\n<li>\n<p>파드 정상 작동 확인</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ kubectl get pods -n ingress-nginx <span class=\"token punctuation\">\\</span>\n-l app.kubernetes.io/name<span class=\"token operator\">=</span>ingress-nginx --watch</code></pre></div>\n</li>\n<li>\n<p>설치 완료 후 LoadBalancer EXTERNAL-IP(엔드포인트) 확인</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ kubectl get <span class=\"token function\">service</span> -n ingress-nginx\nNAME                                 TYPE           CLUSTER-IP      EXTERNAL-IP       PORT<span class=\"token punctuation\">(</span>S<span class=\"token punctuation\">)</span>                      AGE\ningress-nginx-controller             LoadBalancer   <span class=\"token number\">10.101</span>.148.33   xxx.xxx.xxx.xxx   <span class=\"token number\">80</span>:31027/TCP,443:31138/TCP   36m\ningress-nginx-controller-admission   ClusterIP      <span class=\"token number\">10.104</span>.56.176   <span class=\"token operator\">&lt;</span>none<span class=\"token operator\">></span>            <span class=\"token number\">443</span>/TCP                      36m</code></pre></div>\n</li>\n</ul>\n<br/>\n<h2>2. secret 생성</h2>\n<h3><strong>✔️ docker-registry</strong></h3>\n<ul>\n<li>\n<p>만약, 배포시 사용하는 registry가 public이 아닐 경우, docker 인증을 위한 secret 등록이 필요하다.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ kubectl create secret docker-registry <span class=\"token punctuation\">{</span>docker-registry secret명<span class=\"token punctuation\">}</span> <span class=\"token punctuation\">\\</span>\n--docker-server<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span>registry 주소<span class=\"token punctuation\">}</span> <span class=\"token punctuation\">\\</span>\n--docker-username<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span>아이디/CREDENTIAL_ID<span class=\"token punctuation\">}</span> <span class=\"token punctuation\">\\</span>\n--docker-password<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span>패스워드/CREDENTIAL_SECRET<span class=\"token punctuation\">}</span>\n-n <span class=\"token punctuation\">{</span>namespace<span class=\"token punctuation\">}</span></code></pre></div>\n</li>\n</ul>\n<h3><strong>✔️ tls 인증서</strong></h3>\n<ul>\n<li>\n<p>https 프로토콜 사용을 위해 tls 인증서를 등록한다.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">kubectl create secret tls <span class=\"token punctuation\">{</span>tls secret명<span class=\"token punctuation\">}</span> <span class=\"token punctuation\">\\</span>\n--key <span class=\"token punctuation\">{</span>private key<span class=\"token punctuation\">}</span> \n--cert <span class=\"token punctuation\">{</span>cert<span class=\"token punctuation\">}</span> \n-n <span class=\"token punctuation\">{</span>namespace<span class=\"token punctuation\">}</span></code></pre></div>\n</li>\n<li>\n<p>만약 private key 가 암호화 되어있을 경우 openssl 을 이용하여 복호화하여 tls secret으로 등록한다.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ openssl rsa -in key.pem -out decrypted_key.pem</code></pre></div>\n</li>\n</ul>\n<br/>\n<h2>3. proxy daemonset 설치</h2>\n<ul>\n<li>사내에서는 외부통신과 내부통신에 대한 proxy/non-proxy 설정이 필요하다.</li>\n<li>\n<p>아래 파일을 참고해서 http-proxy 데몬셋을 적용한다.</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">kind</span><span class=\"token punctuation\">:</span> DaemonSet\n<span class=\"token key atrule\">apiVersion</span><span class=\"token punctuation\">:</span> apps/v1\n<span class=\"token key atrule\">metadata</span><span class=\"token punctuation\">:</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> set<span class=\"token punctuation\">-</span>http<span class=\"token punctuation\">-</span>proxy\n  <span class=\"token key atrule\">labels</span><span class=\"token punctuation\">:</span>\n    <span class=\"token key atrule\">app</span><span class=\"token punctuation\">:</span> set<span class=\"token punctuation\">-</span>http<span class=\"token punctuation\">-</span>proxy\n<span class=\"token key atrule\">spec</span><span class=\"token punctuation\">:</span>\n  <span class=\"token key atrule\">selector</span><span class=\"token punctuation\">:</span>\n    <span class=\"token key atrule\">matchLabels</span><span class=\"token punctuation\">:</span>\n      <span class=\"token key atrule\">app</span><span class=\"token punctuation\">:</span> set<span class=\"token punctuation\">-</span>http<span class=\"token punctuation\">-</span>proxy\n  <span class=\"token key atrule\">template</span><span class=\"token punctuation\">:</span>\n    <span class=\"token key atrule\">metadata</span><span class=\"token punctuation\">:</span>\n      <span class=\"token key atrule\">labels</span><span class=\"token punctuation\">:</span>\n        <span class=\"token key atrule\">app</span><span class=\"token punctuation\">:</span> set<span class=\"token punctuation\">-</span>http<span class=\"token punctuation\">-</span>proxy\n    <span class=\"token key atrule\">spec</span><span class=\"token punctuation\">:</span>\n      <span class=\"token key atrule\">hostPID</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n      <span class=\"token key atrule\">containers</span><span class=\"token punctuation\">:</span>\n        <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> startup<span class=\"token punctuation\">-</span>script\n          <span class=\"token key atrule\">image</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">{</span>아래 명령어를 실행할 수 있는 linux 이미지<span class=\"token punctuation\">}</span>\n          <span class=\"token key atrule\">securityContext</span><span class=\"token punctuation\">:</span>\n            <span class=\"token key atrule\">privileged</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n          <span class=\"token key atrule\">env</span><span class=\"token punctuation\">:</span>\n            <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> PROXY\n              <span class=\"token key atrule\">value</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">{</span>proxy 주소<span class=\"token punctuation\">}</span>\n            <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> NO_PROXY\n              <span class=\"token key atrule\">value</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">{</span>non<span class=\"token punctuation\">-</span>proxy 주소들<span class=\"token punctuation\">}</span>\n          <span class=\"token key atrule\">command</span><span class=\"token punctuation\">:</span>\n            <span class=\"token punctuation\">-</span> nsenter <span class=\"token comment\"># namespace enter의 약어. 격리된 namespace에 진입하는 명령어</span>\n            <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">-</span><span class=\"token punctuation\">-</span>mount=/proc/1/ns/mnt\n            <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">-</span><span class=\"token punctuation\">-</span>\n            <span class=\"token punctuation\">-</span> sh\n            <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">-</span>xc\n            <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">|</span><span class=\"token scalar string\">\n              # Create environment file\n              cloud-init-per always set_proxy_to_environment cat &lt;&lt; EOF >> /etc/environment\n              http_proxy=$PROXY\n              https_proxy=$PROXY\n              HTTP_PROXY=$PROXY\n              HTTPS_PROXY=$PROXY\n              no_proxy=$NO_PROXY\n              NO_PROXY=$NO_PROXY\n              EOF\n              # Configure containerd with proxy\n              cloud-init-per always use_environment_to_containerd tee &lt;&lt;EOF /etc/systemd/system/containerd.service.d/proxy.conf >/dev/null\n              [Service]\n              EnvironmentFile=/etc/environment\n              EOF\n              # Reload the daemon and restart containerd\n              cloud-init-per always reload_daemon_for_containerd systemctl daemon-reload\n              cloud-init-per always restart_containerd systemctl restart containerd\n              trap : TERM INT\n              sleep infinity &amp; wait</span></code></pre></div>\n</li>\n<li>\n<p>적용</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\">$ kubectl apply <span class=\"token punctuation\">-</span>f http<span class=\"token punctuation\">-</span>proxy<span class=\"token punctuation\">-</span>daemonset.yaml</code></pre></div>\n</li>\n</ul>\n<br/>\n<h1>✔️ EFK 세팅</h1>\n<h2>1. ES 설치는 인프라팀에 요청</h2>\n<h2>2. Kibana 설치</h2>\n<ul>\n<li>\n<p>yaml 파일</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">apiVersion</span><span class=\"token punctuation\">:</span> apps/v1\n<span class=\"token key atrule\">kind</span><span class=\"token punctuation\">:</span> Deployment\n<span class=\"token key atrule\">metadata</span><span class=\"token punctuation\">:</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> kibana\n  <span class=\"token key atrule\">namespace</span><span class=\"token punctuation\">:</span> kibana\n  <span class=\"token key atrule\">labels</span><span class=\"token punctuation\">:</span>\n    <span class=\"token key atrule\">app</span><span class=\"token punctuation\">:</span> kibana\n<span class=\"token key atrule\">spec</span><span class=\"token punctuation\">:</span>\n  <span class=\"token key atrule\">replicas</span><span class=\"token punctuation\">:</span> <span class=\"token number\">1</span>\n  <span class=\"token key atrule\">selector</span><span class=\"token punctuation\">:</span>\n    <span class=\"token key atrule\">matchLabels</span><span class=\"token punctuation\">:</span>\n      <span class=\"token key atrule\">app</span><span class=\"token punctuation\">:</span> kibana\n  <span class=\"token key atrule\">template</span><span class=\"token punctuation\">:</span>\n    <span class=\"token key atrule\">metadata</span><span class=\"token punctuation\">:</span>\n      <span class=\"token key atrule\">labels</span><span class=\"token punctuation\">:</span>\n        <span class=\"token key atrule\">app</span><span class=\"token punctuation\">:</span> kibana\n    <span class=\"token key atrule\">spec</span><span class=\"token punctuation\">:</span>\n      <span class=\"token key atrule\">containers</span><span class=\"token punctuation\">:</span>\n      <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> kibana\n        <span class=\"token key atrule\">image</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">{</span>kibana 이미지 주소<span class=\"token punctuation\">}</span>\n        <span class=\"token key atrule\">ports</span><span class=\"token punctuation\">:</span>\n        <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">containerPort</span><span class=\"token punctuation\">:</span> <span class=\"token number\">5601</span>\n        <span class=\"token key atrule\">env</span><span class=\"token punctuation\">:</span>\n            <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> ELASTICSEARCH_HOSTS\n              <span class=\"token key atrule\">value</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">{</span>ES 주소<span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">---</span>\n<span class=\"token key atrule\">apiVersion</span><span class=\"token punctuation\">:</span> v1\n<span class=\"token key atrule\">kind</span><span class=\"token punctuation\">:</span> Service\n<span class=\"token key atrule\">metadata</span><span class=\"token punctuation\">:</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> kibana\n  <span class=\"token key atrule\">namespace</span><span class=\"token punctuation\">:</span> kibana\n  <span class=\"token key atrule\">labels</span><span class=\"token punctuation\">:</span>\n    <span class=\"token key atrule\">app</span><span class=\"token punctuation\">:</span> kibana\n<span class=\"token key atrule\">spec</span><span class=\"token punctuation\">:</span>\n  <span class=\"token key atrule\">ports</span><span class=\"token punctuation\">:</span>\n    <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> http\n      <span class=\"token key atrule\">port</span><span class=\"token punctuation\">:</span> <span class=\"token number\">80</span>\n      <span class=\"token key atrule\">protocol</span><span class=\"token punctuation\">:</span> TCP\n      <span class=\"token key atrule\">targetPort</span><span class=\"token punctuation\">:</span> <span class=\"token number\">5601</span>\n  <span class=\"token key atrule\">selector</span><span class=\"token punctuation\">:</span>\n    <span class=\"token key atrule\">app</span><span class=\"token punctuation\">:</span> kibana\n<span class=\"token punctuation\">---</span>\n<span class=\"token key atrule\">apiVersion</span><span class=\"token punctuation\">:</span> networking.k8s.io/v1\n<span class=\"token key atrule\">kind</span><span class=\"token punctuation\">:</span> Ingress\n<span class=\"token key atrule\">metadata</span><span class=\"token punctuation\">:</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> kibana<span class=\"token punctuation\">-</span>ingress\n  <span class=\"token key atrule\">namespace</span><span class=\"token punctuation\">:</span> kibana\n  <span class=\"token key atrule\">annotations</span><span class=\"token punctuation\">:</span>\n    <span class=\"token key atrule\">nginx.ingress.kubernetes.io/rewrite-target</span><span class=\"token punctuation\">:</span> /\n    <span class=\"token key atrule\">kubernetes.io/ingress.class</span><span class=\"token punctuation\">:</span> nginx\n<span class=\"token key atrule\">spec</span><span class=\"token punctuation\">:</span>\n  <span class=\"token key atrule\">rules</span><span class=\"token punctuation\">:</span>\n  <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">host</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">{</span>Kibana 호스트주소<span class=\"token punctuation\">}</span>\n    <span class=\"token key atrule\">http</span><span class=\"token punctuation\">:</span>\n      <span class=\"token key atrule\">paths</span><span class=\"token punctuation\">:</span>\n      <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">pathType</span><span class=\"token punctuation\">:</span> Prefix\n        <span class=\"token key atrule\">path</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"/\"</span>\n        <span class=\"token key atrule\">backend</span><span class=\"token punctuation\">:</span>\n          <span class=\"token key atrule\">service</span><span class=\"token punctuation\">:</span>\n            <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> kibana\n            <span class=\"token key atrule\">port</span><span class=\"token punctuation\">:</span>\n              <span class=\"token key atrule\">number</span><span class=\"token punctuation\">:</span> <span class=\"token number\">80</span></code></pre></div>\n</li>\n</ul>\n<br/>\n<h2>3. Log Aggregator 서버 설치</h2>\n<ul>\n<li>fluentd 로 로그 수집서버를 세팅한다.</li>\n</ul>\n<h3><strong>3.1. vm 생성 후 apt 업데이트</strong></h3>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\">$ sudo apt <span class=\"token punctuation\">-</span>y update</code></pre></div>\n<h3><strong>3.2. td-agent 설치</strong></h3>\n<ul>\n<li>참고: <a href=\"https://docs.fluentd.org/installation/install-by-deb\">https://docs.fluentd.org/installation/install-by-deb</a></li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token function\">curl</span> -fsSL https://toolbelt.treasuredata.com/sh/install-ubuntu-bionic-td-agent4.sh <span class=\"token operator\">|</span> <span class=\"token function\">sh</span>\n\n<span class=\"token comment\"># 설치 후 fluentd 버전 확인</span>\n$ /opt/td-agent/bin/fluentd --version</code></pre></div>\n<ul>\n<li>\n<p>만약 아래와 같은 오류가 발생한다면, /tmp 디렉토리의 권한을 777로 변경해준 후, 작업완료되면 775로 롤백한다</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token comment\"># 에러:</span>\n<span class=\"token comment\"># Couldn't create temporary file /tmp/apt.conf.** for passing config to apt-key</span>\n<span class=\"token comment\">##</span>\n<span class=\"token comment\"># 조치:</span>\n$ <span class=\"token function\">sudo</span> <span class=\"token function\">chmod</span> <span class=\"token number\">777</span> /tmp\n<span class=\"token comment\"># 작업 완료 후 롤백</span>\n$ <span class=\"token function\">sudo</span> <span class=\"token function\">chmod</span> <span class=\"token number\">775</span> /tmp</code></pre></div>\n</li>\n</ul>\n<h3>3.3. /etc/td-agent/td-agent.conf 파일 수정</h3>\n<ul>\n<li>\n<p>기본세팅</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\">&lt;system<span class=\"token punctuation\">></span>\n  @log_level info \n  workers    8 <span class=\"token comment\"># 필요에 따라 워커수 조절</span>\n&lt;/system<span class=\"token punctuation\">></span>\n\n&lt;source<span class=\"token punctuation\">></span>\n  @type     monitor_agent\n  port      24420\n&lt;/source<span class=\"token punctuation\">></span>\n\n&lt;source<span class=\"token punctuation\">></span>\n  @id   in_forward\n  @type forward\n  port 24224\n  &lt;parse<span class=\"token punctuation\">></span>\n    @type json\n    type_key @timestamp\n    time_format %Y<span class=\"token punctuation\">-</span>%m<span class=\"token punctuation\">-</span>%dT%H<span class=\"token punctuation\">:</span>%M<span class=\"token punctuation\">:</span>%S.%N%z\n    localtime\n  &lt;/parse<span class=\"token punctuation\">></span>\n&lt;/source<span class=\"token punctuation\">></span>\n\n&lt;match tag_prefix.<span class=\"token important\">**></span>\n  @type copy\n  &lt;store<span class=\"token punctuation\">></span>\n    @id   copy_stdout\n    @type stdout\n  &lt;/store<span class=\"token punctuation\">></span>\n  &lt;store<span class=\"token punctuation\">></span>\n    @type                         elasticsearch\n    @id                           out_es\n    include_tag_key               true\n    host                          <span class=\"token punctuation\">{</span>es 주소<span class=\"token punctuation\">}</span>\n    port                          9200\n    scheme                        http\n    reload_connections            \"<span class=\"token comment\">#{ENV['ELASTICSEARCH_RELOAD_CONNECTIONS'] || 'true'}\"</span>\n    logstash_prefix               $<span class=\"token punctuation\">{</span>tag<span class=\"token punctuation\">}</span>\n    logstash_format               true\n    logstash_dateformat           %Y.%m.%d\n    type_name                     fluentd\n    id_key                        _uuid\n    &lt;buffer tag<span class=\"token punctuation\">></span>\n      @type                       file\n      path                        /var/log/td<span class=\"token punctuation\">-</span>agent/buffer/es/\n      flush_thread_count          1\n      chunk_limit_size            16mb\n      queue_limit_length          2560\n      flush_interval              5s\n      flush_at_shutdown           true\n      retry_max_times             10\n      retry_forever               false\n    &lt;/buffer<span class=\"token punctuation\">></span>\n  &lt;/store<span class=\"token punctuation\">></span>\n&lt;/match<span class=\"token punctuation\">></span></code></pre></div>\n</li>\n<li>해당 VM 인바운드 정책에 forward의 포트 24224 허용 필요!!!</li>\n<li>\n<p>3.4에서 서비스 실행 후 acl 확인</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ telnet <span class=\"token punctuation\">{</span>vm 주소 또는 로그어그리게이터서버 도메인주소<span class=\"token punctuation\">}</span> <span class=\"token number\">24224</span></code></pre></div>\n</li>\n</ul>\n<h3><strong>3.4. td-agent 실행</strong></h3>\n<ul>\n<li>\n<p>서비스 실행</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token function\">sudo</span> systemctl start td-agent.service</code></pre></div>\n</li>\n<li>\n<p>로그 확인</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token function\">tail</span> -f /var/log/td-agent/td-agent.log</code></pre></div>\n</li>\n</ul>\n<br/>\n<h2>4. fluentd 데몬셋 세팅</h2>\n<h4>4.1. RBAC 설정</h4>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">apiVersion</span><span class=\"token punctuation\">:</span> v1\n<span class=\"token key atrule\">kind</span><span class=\"token punctuation\">:</span> ServiceAccount\n<span class=\"token key atrule\">metadata</span><span class=\"token punctuation\">:</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> fluentd<span class=\"token punctuation\">-</span>service<span class=\"token punctuation\">-</span>account\n  <span class=\"token key atrule\">namespace</span><span class=\"token punctuation\">:</span> fluentd\n\n<span class=\"token punctuation\">---</span>\n<span class=\"token key atrule\">apiVersion</span><span class=\"token punctuation\">:</span> rbac.authorization.k8s.io/v1\n<span class=\"token key atrule\">kind</span><span class=\"token punctuation\">:</span> ClusterRole\n<span class=\"token key atrule\">metadata</span><span class=\"token punctuation\">:</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> fluentd<span class=\"token punctuation\">-</span>cluster<span class=\"token punctuation\">-</span>role\n  <span class=\"token key atrule\">namespace</span><span class=\"token punctuation\">:</span> fluentd\n<span class=\"token key atrule\">rules</span><span class=\"token punctuation\">:</span>\n  <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">apiGroups</span><span class=\"token punctuation\">:</span>\n      <span class=\"token punctuation\">-</span> <span class=\"token string\">\"\"</span>\n    <span class=\"token key atrule\">resources</span><span class=\"token punctuation\">:</span>\n      <span class=\"token punctuation\">-</span> pods\n      <span class=\"token punctuation\">-</span> namespaces\n    <span class=\"token key atrule\">verbs</span><span class=\"token punctuation\">:</span>\n      <span class=\"token punctuation\">-</span> get\n      <span class=\"token punctuation\">-</span> list\n      <span class=\"token punctuation\">-</span> watch\n<span class=\"token punctuation\">---</span>\n<span class=\"token key atrule\">kind</span><span class=\"token punctuation\">:</span> ClusterRoleBinding\n<span class=\"token key atrule\">apiVersion</span><span class=\"token punctuation\">:</span> rbac.authorization.k8s.io/v1\n<span class=\"token key atrule\">metadata</span><span class=\"token punctuation\">:</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> fluentd<span class=\"token punctuation\">-</span>cluster<span class=\"token punctuation\">-</span>role<span class=\"token punctuation\">-</span>binding\n  <span class=\"token key atrule\">namespace</span><span class=\"token punctuation\">:</span> fluentd\n<span class=\"token key atrule\">roleRef</span><span class=\"token punctuation\">:</span>\n  <span class=\"token key atrule\">kind</span><span class=\"token punctuation\">:</span> ClusterRole\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> fluentd<span class=\"token punctuation\">-</span>cluster<span class=\"token punctuation\">-</span>role\n  <span class=\"token key atrule\">apiGroup</span><span class=\"token punctuation\">:</span> rbac.authorization.k8s.io\n<span class=\"token key atrule\">subjects</span><span class=\"token punctuation\">:</span>\n  <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">kind</span><span class=\"token punctuation\">:</span> ServiceAccount\n    <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> fluentd<span class=\"token punctuation\">-</span>service<span class=\"token punctuation\">-</span>account\n    <span class=\"token key atrule\">namespace</span> <span class=\"token punctuation\">:</span> fluentd</code></pre></div>\n<h4>4.2. input, filter, output 에 대한 기본 설정 (configmap.yaml)</h4>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">apiVersion</span><span class=\"token punctuation\">:</span> v1\n<span class=\"token key atrule\">kind</span><span class=\"token punctuation\">:</span> ConfigMap\n<span class=\"token key atrule\">metadata</span><span class=\"token punctuation\">:</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> fluentd<span class=\"token punctuation\">-</span>configmap\n  <span class=\"token key atrule\">namespace</span><span class=\"token punctuation\">:</span> fluentd\n  <span class=\"token key atrule\">labels</span><span class=\"token punctuation\">:</span>\n    <span class=\"token key atrule\">k8s-app</span><span class=\"token punctuation\">:</span> fluentd<span class=\"token punctuation\">-</span>logging\n    <span class=\"token key atrule\">kubernetes.io/cluster-service</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"true\"</span>\n    <span class=\"token key atrule\">version</span><span class=\"token punctuation\">:</span> v1\n<span class=\"token key atrule\">data</span><span class=\"token punctuation\">:</span>\n  <span class=\"token key atrule\">fluent.conf</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">|</span><span class=\"token scalar string\">\n    &lt;system>\n      workers 1\n      @log_level info\n    &lt;/system>\n    @include input-kubernetes.conf\n    @include filter-kubernetes.conf</span>\n\n    &lt;match <span class=\"token important\">**></span>\n      @type copy\n      &lt;store<span class=\"token punctuation\">></span>\n        @type                         forward\n        @id                           out_ai_forward\n        expire_dns_cache              60s\n        &lt;server<span class=\"token punctuation\">></span>\n          host                        <span class=\"token punctuation\">{</span>로그어그리게이터 서버주소<span class=\"token punctuation\">}</span>\n        &lt;/server<span class=\"token punctuation\">></span>\n        &lt;buffer<span class=\"token punctuation\">></span>\n          @type                       memory\n          flush_interval              5s\n          flush_at_shutdown           true\n        &lt;/buffer<span class=\"token punctuation\">></span>\n      &lt;/store<span class=\"token punctuation\">></span>\n    &lt;/match<span class=\"token punctuation\">></span>\n\n  <span class=\"token key atrule\">input-kubernetes.conf</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">|</span><span class=\"token scalar string\">\n    &lt;match fluent.**>\n      @type                           null\n    &lt;/match>\n    &lt;source>\n      @type                           tail\n      @id                             in_tail_container_logs\n      path                            /var/log/containers/*.log\n      pos_file                        /var/log/fluentd-containers.log.pos\n      exclude_path                    [\"/var/log/containers/fluentd*.log\"]\n      tag                             kubernetes.*\n      read_from_head                  \"#{ENV['FLUENTD_INPUT_READ_FROM_HEAD'] || 'false'}\"\n      limit_recently_modified         \"#{ENV['LIMIT_RECENTLY_MODIFIED'] || '120m'}\"\n      rotate_wait                     0\n      enable_stat_watcher             false\n      &lt;parse>\n        @type                         regexp\n        expression                    /^(?&lt;time>[^ ]+) (?&lt;stream>stdout|stderr) (?&lt;flags>[^ ]+) (?&lt;message>.*)$/\n      &lt;/parse>\n    &lt;/source></span>\n\n  <span class=\"token key atrule\">filter-kubernetes.conf</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">|</span><span class=\"token scalar string\">\n    &lt;filter kubernetes.**>\n      @type                           kubernetes_metadata\n      @id                             filter_kube_metadata\n    &lt;/filter></span>\n    \n    \n    &lt;filter kubernetes.<span class=\"token important\">**></span>\n      @type                           record_modifier\n      tag                             $<span class=\"token punctuation\">{</span>record.dig(\"kubernetes\"<span class=\"token punctuation\">,</span> \"container_name\").gsub('<span class=\"token punctuation\">-</span>'<span class=\"token punctuation\">,</span> '.')<span class=\"token punctuation\">}</span>\n      &lt;record<span class=\"token punctuation\">></span>\n        @timestamp                    $<span class=\"token punctuation\">{</span>(Time.at(time) + (60<span class=\"token important\">*60*9)).strftime('%Y-%m-%dT%H:%M:%S.%L+09:00')</span><span class=\"token punctuation\">}</span>\n        cluster_name                  \"cluster name\"\n        hostname                      \"<span class=\"token comment\">#{ENV['K8S_NODE_NAME']}\"</span>\n        container_image               $<span class=\"token punctuation\">{</span>record.dig(\"kubernetes\"<span class=\"token punctuation\">,</span> \"container_image\")<span class=\"token punctuation\">}</span>\n        pod_name                      $<span class=\"token punctuation\">{</span>record.dig(\"kubernetes\"<span class=\"token punctuation\">,</span> \"pod_name\")<span class=\"token punctuation\">}</span>\n      &lt;/record<span class=\"token punctuation\">></span>\n    &lt;/filter<span class=\"token punctuation\">></span>\n    \n    &lt;filter kubernetes.<span class=\"token important\">**></span>\n      @type                           parser\n      key_name                        message\n      reserve_data                    true\n      remove_key_name_field           true\n      &lt;parse<span class=\"token punctuation\">></span>\n        @type                         json\n      &lt;/parse<span class=\"token punctuation\">></span>\n    &lt;/filter<span class=\"token punctuation\">></span>\n    \n    &lt;filter kubernetes.<span class=\"token important\">**></span>\n      @type                           record_transformer\n      remove_keys                     $.kubernetes\n    &lt;/filter<span class=\"token punctuation\">></span></code></pre></div>\n<h3>4.3. 데몬셋 설정</h3>\n<ul>\n<li>fluentd-daemonset 도커 이미지 official github\n- <a href=\"https://github.com/fluent/fluentd-kubernetes-daemonset\">https://github.com/fluent/fluentd-kubernetes-daemonset</a></li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">apiVersion</span><span class=\"token punctuation\">:</span> apps/v1\n<span class=\"token key atrule\">kind</span><span class=\"token punctuation\">:</span> DaemonSet\n<span class=\"token key atrule\">metadata</span><span class=\"token punctuation\">:</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> fluentd<span class=\"token punctuation\">-</span>daemonset\n  <span class=\"token key atrule\">namespace</span><span class=\"token punctuation\">:</span> fluentd\n  <span class=\"token key atrule\">labels</span><span class=\"token punctuation\">:</span>\n    <span class=\"token key atrule\">k8s-app</span><span class=\"token punctuation\">:</span> fluentd<span class=\"token punctuation\">-</span>logging\n    <span class=\"token key atrule\">version</span><span class=\"token punctuation\">:</span> v1\n    <span class=\"token key atrule\">kubernetes.io/cluster-service</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"true\"</span>\n<span class=\"token key atrule\">spec</span><span class=\"token punctuation\">:</span>\n  <span class=\"token key atrule\">selector</span><span class=\"token punctuation\">:</span>\n    <span class=\"token key atrule\">matchLabels</span><span class=\"token punctuation\">:</span>\n      <span class=\"token key atrule\">k8s-app</span><span class=\"token punctuation\">:</span> fluentd<span class=\"token punctuation\">-</span>logging\n      <span class=\"token key atrule\">kubernetes.io/cluster-service</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"true\"</span>\n      <span class=\"token key atrule\">version</span><span class=\"token punctuation\">:</span> v1\n  <span class=\"token key atrule\">updateStrategy</span><span class=\"token punctuation\">:</span>\n    <span class=\"token key atrule\">type</span><span class=\"token punctuation\">:</span> RollingUpdate\n  <span class=\"token key atrule\">template</span><span class=\"token punctuation\">:</span>\n    <span class=\"token key atrule\">metadata</span><span class=\"token punctuation\">:</span>\n      <span class=\"token key atrule\">labels</span><span class=\"token punctuation\">:</span>\n        <span class=\"token key atrule\">k8s-app</span><span class=\"token punctuation\">:</span> fluentd<span class=\"token punctuation\">-</span>logging\n        <span class=\"token key atrule\">version</span><span class=\"token punctuation\">:</span> v1\n        <span class=\"token key atrule\">kubernetes.io/cluster-service</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"true\"</span>\n    <span class=\"token key atrule\">spec</span><span class=\"token punctuation\">:</span>\n      <span class=\"token key atrule\">hostNetwork</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n      <span class=\"token key atrule\">dnsPolicy</span><span class=\"token punctuation\">:</span> ClusterFirstWithHostNet\n      <span class=\"token key atrule\">serviceAccount</span><span class=\"token punctuation\">:</span> fluentd<span class=\"token punctuation\">-</span>service<span class=\"token punctuation\">-</span>account\n      <span class=\"token key atrule\">serviceAccountName</span><span class=\"token punctuation\">:</span> fluentd<span class=\"token punctuation\">-</span>service<span class=\"token punctuation\">-</span>account\n      <span class=\"token key atrule\">tolerations</span><span class=\"token punctuation\">:</span>\n        <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">key</span><span class=\"token punctuation\">:</span> node<span class=\"token punctuation\">-</span>role.kubernetes.io/master\n          <span class=\"token key atrule\">effect</span><span class=\"token punctuation\">:</span> NoExecute\n      <span class=\"token key atrule\">containers</span><span class=\"token punctuation\">:</span>\n        <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> fluentd\n          <span class=\"token key atrule\">image</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">{</span>fluentd 이미지<span class=\"token punctuation\">}</span>\n          <span class=\"token key atrule\">imagePullPolicy</span><span class=\"token punctuation\">:</span> IfNotPresent\n          <span class=\"token key atrule\">env</span><span class=\"token punctuation\">:</span>\n            <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> K8S_NODE_NAME\n              <span class=\"token key atrule\">valueFrom</span><span class=\"token punctuation\">:</span>\n                <span class=\"token key atrule\">fieldRef</span><span class=\"token punctuation\">:</span>\n                  <span class=\"token key atrule\">fieldPath</span><span class=\"token punctuation\">:</span> spec.nodeName\n          <span class=\"token key atrule\">resources</span><span class=\"token punctuation\">:</span>\n            <span class=\"token key atrule\">limits</span><span class=\"token punctuation\">:</span>\n              <span class=\"token key atrule\">memory</span><span class=\"token punctuation\">:</span> 400Mi\n            <span class=\"token key atrule\">requests</span><span class=\"token punctuation\">:</span>\n              <span class=\"token key atrule\">cpu</span><span class=\"token punctuation\">:</span> 100m\n              <span class=\"token key atrule\">memory</span><span class=\"token punctuation\">:</span> 200Mi\n          <span class=\"token key atrule\">volumeMounts</span><span class=\"token punctuation\">:</span>\n            <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> varlog\n              <span class=\"token key atrule\">mountPath</span><span class=\"token punctuation\">:</span> /var/log\n            <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> varlibdockercontainers\n              <span class=\"token key atrule\">mountPath</span><span class=\"token punctuation\">:</span> /var/lib/docker/containers\n              <span class=\"token key atrule\">readOnly</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n            <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> resolvconf\n              <span class=\"token key atrule\">mountPath</span><span class=\"token punctuation\">:</span> /etc/resolv.conf\n            <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> tz<span class=\"token punctuation\">-</span>config\n              <span class=\"token key atrule\">mountPath</span><span class=\"token punctuation\">:</span> /etc/localtime\n              <span class=\"token key atrule\">readOnly</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n            <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> fluentd<span class=\"token punctuation\">-</span>config\n              <span class=\"token key atrule\">mountPath</span><span class=\"token punctuation\">:</span> /fluentd/etc/\n      <span class=\"token key atrule\">terminationGracePeriodSeconds</span><span class=\"token punctuation\">:</span> <span class=\"token number\">30</span>\n      <span class=\"token key atrule\">volumes</span><span class=\"token punctuation\">:</span>\n        <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> varlog\n          <span class=\"token key atrule\">hostPath</span><span class=\"token punctuation\">:</span>\n            <span class=\"token key atrule\">path</span><span class=\"token punctuation\">:</span> /var/log\n        <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> varlibdockercontainers\n          <span class=\"token key atrule\">hostPath</span><span class=\"token punctuation\">:</span>\n            <span class=\"token key atrule\">path</span><span class=\"token punctuation\">:</span> /var/lib/docker/containers\n        <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> resolvconf\n          <span class=\"token key atrule\">hostPath</span><span class=\"token punctuation\">:</span>\n            <span class=\"token key atrule\">path</span><span class=\"token punctuation\">:</span> /etc/resolv.conf\n        <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> tz<span class=\"token punctuation\">-</span>config\n          <span class=\"token key atrule\">hostPath</span><span class=\"token punctuation\">:</span>\n            <span class=\"token key atrule\">path</span><span class=\"token punctuation\">:</span> /etc/localtime\n        <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> fluentd<span class=\"token punctuation\">-</span>config\n          <span class=\"token key atrule\">configMap</span><span class=\"token punctuation\">:</span>\n            <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> fluentd<span class=\"token punctuation\">-</span>configmap</code></pre></div>\n<ul>\n<li>위 순서대로 클러스터에 apply 한다.</li>\n</ul>\n<br/>\n<h2>5. Kibana에서 index 패턴 추가</h2>\n<ul>\n<li>메뉴 > stack management > index patterns 에서 인덱스 생성</li>\n</ul>\n<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/devHistoryBlog/static/8b41d2ac44d3b7f92f4efcbfd5de6d55/764d7/001.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n  \n  <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block;  max-width: 960px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 36.66666666666667%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAABYlAAAWJQFJUiTwAAAA6UlEQVQoz52Qy07DMBBF/f/7totKIIFEHefR8g0s+Qc2kLRu0xaSOE78urhx1QhRIeBKRzOasWauh8xojMktxfSGYn7HwJIlongJGmdDjLNHsHSFKAk1yjIsWPqFhyjFPU2w8O+JkD1kp3AS5xx5XqAsS/xFLx/A9LnC06sC2e72EG03DK3rBk0jIEQ70o5RaX0dpdGrkJO3fI0N3/mCgZQdjHXQxsI5eNyZkBtrr2IvOJC82KCqBbS2ONQd3oXybuTQ/Ib7ARuWk2K9Rbk/DgOrpoXswz1Hd7/n7JDjcKz8/83lyKfmf/UJG88SQhOYJfUAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n    >\n      <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"001\"\n        title=\"\"\n        src=\"/devHistoryBlog/static/8b41d2ac44d3b7f92f4efcbfd5de6d55/d9199/001.png\"\n        srcset=\"/devHistoryBlog/static/8b41d2ac44d3b7f92f4efcbfd5de6d55/8ff5a/001.png 240w,\n/devHistoryBlog/static/8b41d2ac44d3b7f92f4efcbfd5de6d55/e85cb/001.png 480w,\n/devHistoryBlog/static/8b41d2ac44d3b7f92f4efcbfd5de6d55/d9199/001.png 960w,\n/devHistoryBlog/static/8b41d2ac44d3b7f92f4efcbfd5de6d55/07a9c/001.png 1440w,\n/devHistoryBlog/static/8b41d2ac44d3b7f92f4efcbfd5de6d55/764d7/001.png 1782w\"\n        sizes=\"(max-width: 960px) 100vw, 960px\"\n      />\n    </span>\n  </span>\n  \n  </a>\n    </p>","fields":{"tagSlugs":["/tags/k-8-s/"],"slug":"/works/posts/2022-08-23--001"},"frontmatter":{"title":"클러스터 이전 작업 로그","tags":["k8s"],"date":"2022-08-23","description":""}}},"pageContext":{"slug":"/works/posts/2022-08-23--001"}},"staticQueryHashes":[]}