{"id":3467,"date":"2025-11-13T10:21:56","date_gmt":"2025-11-13T03:21:56","guid":{"rendered":"https:\/\/portal-atlasx.cdg.co.th\/home\/?post_type=docs&#038;p=3467"},"modified":"2025-11-13T10:21:56","modified_gmt":"2025-11-13T03:21:56","slug":"ci-cd","status":"publish","type":"docs","link":"https:\/\/portal-atlasx.cdg.co.th\/home\/docs\/atlasx-container\/deployment\/ci-cd\/","title":{"rendered":"CI\/CD"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\" id=\"container-deployment-using-cicd\">Container Deployment using CI\/CD<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"cicd-\u0e04\u0e37\u0e2d\u0e2d\u0e30\u0e44\u0e23\">CI\/CD \u0e04\u0e37\u0e2d\u0e2d\u0e30\u0e44\u0e23<\/h2>\n\n\n\n<p>CICD \u0e22\u0e48\u0e2d\u0e21\u0e32\u0e08\u0e32\u0e01&nbsp;<strong>C<\/strong>ontinuous&nbsp;<strong>I<\/strong>ntegration and&nbsp;<strong>C<\/strong>ontinuous&nbsp;<strong>D<\/strong>elivery \u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e41\u0e1a\u0e1a\u0e2a\u0e31\u0e49\u0e19 \u0e46 \u0e01\u0e47\u0e04\u0e37\u0e2d\u0e01\u0e32\u0e23\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e42\u0e1b\u0e23\u0e40\u0e08\u0e47\u0e04\u0e02\u0e2d\u0e07\u0e40\u0e23\u0e32\u0e17\u0e33\u0e07\u0e32\u0e19\u0e41\u0e1a\u0e1a\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 \u0e15\u0e31\u0e49\u0e07\u0e41\u0e15\u0e48\u0e01\u0e32\u0e23 Build, Test, Packing \u0e44\u0e1b\u0e08\u0e19 Deploy \u0e2b\u0e23\u0e37\u0e2d\u0e43\u0e04\u0e23\u0e08\u0e30\u0e21\u0e35 flow \u0e41\u0e1a\u0e1a\u0e2d\u0e37\u0e48\u0e19\u0e01\u0e47\u0e41\u0e25\u0e49\u0e27\u0e41\u0e15\u0e48\u0e08\u0e30\u0e43\u0e2a\u0e48\u0e40\u0e02\u0e49\u0e32\u0e44\u0e1b \u0e0b\u0e36\u0e48\u0e07\u0e08\u0e30\u0e0a\u0e48\u0e27\u0e22\u0e43\u0e2b\u0e49 developer \u0e2a\u0e30\u0e14\u0e27\u0e01\u0e2a\u0e30\u0e1a\u0e32\u0e22\u0e21\u0e32\u0e01\u0e22\u0e34\u0e48\u0e07\u0e02\u0e36\u0e49\u0e19<\/p>\n\n\n\n<p>\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e43\u0e04\u0e23\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e19\u0e23\u0e39\u0e49\u0e40\u0e19\u0e37\u0e49\u0e2d\u0e2b\u0e32\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a CI\/CD \u0e21\u0e32\u0e01\u0e02\u0e36\u0e49\u0e19 \u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e23\u0e31\u0e1a\u0e0a\u0e21\u0e04\u0e2d\u0e23\u0e4c\u0e2a AtlasX DevOps \u0e44\u0e14\u0e49<a href=\"https:\/\/portal-atlasx.cdg.co.th\/courses\/atlasx-devops\" target=\"_blank\" rel=\"noreferrer noopener\">\u0e17\u0e35\u0e48\u0e19\u0e35\u0e48<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"build-pipeline\">Build Pipeline<\/h2>\n\n\n\n<p>\u0e43\u0e19\u0e2a\u0e48\u0e27\u0e19\u0e02\u0e2d\u0e07 Build pipeline \u0e17\u0e35\u0e48\u0e17\u0e32\u0e07\u0e17\u0e35\u0e21 AtlasX \u0e44\u0e14\u0e49 setup \u0e44\u0e27\u0e49\u0e08\u0e30\u0e40\u0e1b\u0e47\u0e19\u0e44\u0e1b\u0e15\u0e32\u0e21\u0e23\u0e39\u0e1b\u0e19\u0e35\u0e49<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/portal-atlasx.cdg.co.th\/share\/Portal%20Docs\/Default\/Container\/devsecops-pipeline-container.png\" alt=\"AtlasX DevSecOps Pipeline for Container\" title=\"null\"\/><\/figure>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Developer \u0e40\u0e02\u0e35\u0e22\u0e19\u0e42\u0e04\u0e49\u0e14\u0e41\u0e25\u0e49\u0e27 push \u0e44\u0e1b\u0e22\u0e31\u0e07 GitLab repository<\/li>\n\n\n\n<li>Jenkins \u0e23\u0e31\u0e1a\u0e23\u0e39\u0e49\u0e27\u0e48\u0e32\u0e21\u0e35 code \u0e43\u0e2b\u0e21\u0e48 push \u0e40\u0e02\u0e49\u0e32\u0e21\u0e32 \u0e41\u0e25\u0e30\u0e08\u0e30\u0e17\u0e33\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23\u0e15\u0e48\u0e32\u0e07 \u0e46 \u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19 pipeline \u0e0b\u0e36\u0e48\u0e07\u0e17\u0e33\u0e15\u0e31\u0e49\u0e07\u0e41\u0e15\u0e48\u0e2a\u0e41\u0e01\u0e19 code \u0e08\u0e19\u0e16\u0e36\u0e07 build image \u0e41\u0e25\u0e30 scan image \u0e14\u0e49\u0e27\u0e22 trivy<\/li>\n\n\n\n<li>\u0e40\u0e21\u0e37\u0e48\u0e2d build \u0e41\u0e25\u0e30 scan \u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08 \u0e08\u0e30\u0e17\u0e33\u0e01\u0e32\u0e23 push image \u0e44\u0e1b\u0e22\u0e31\u0e07 registry \u0e17\u0e35\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e44\u0e27\u0e49<\/li>\n\n\n\n<li>\u0e08\u0e32\u0e01\u0e19\u0e31\u0e49\u0e19\u0e01\u0e47\u0e17\u0e33\u0e01\u0e32\u0e23 deploy container \u0e14\u0e49\u0e27\u0e22 Portainer \u0e0b\u0e36\u0e48\u0e07\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e17\u0e33\u0e44\u0e14\u0e49 2 \u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e04\u0e37\u0e2d\n<ol class=\"wp-block-list\">\n<li>\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e14\u0e49\u0e27\u0e22 Portainer \u0e42\u0e14\u0e22\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16 Deploy \u0e44\u0e14\u0e49\u0e1c\u0e48\u0e32\u0e19\u0e17\u0e32\u0e07\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e27\u0e47\u0e1a \u0e42\u0e14\u0e22\u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d\u0e17\u0e35\u0e21 technology \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e0a\u0e48\u0e27\u0e22\u0e43\u0e19\u0e01\u0e32\u0e23 deploy<\/li>\n\n\n\n<li>\u0e43\u0e0a\u0e49\u0e27\u0e34\u0e18\u0e35\u0e01\u0e32\u0e23 GitOps \u0e0b\u0e36\u0e48\u0e07\u0e08\u0e30\u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35\u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07 repository \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e40\u0e01\u0e47\u0e1a manifest \u0e02\u0e2d\u0e07 Docker Compose \u0e41\u0e25\u0e30\u0e17\u0e33\u0e01\u0e32\u0e23 deploy \u0e1c\u0e48\u0e32\u0e19\u0e17\u0e32\u0e07 Jenkins \u0e41\u0e25\u0e30 Portainer<\/li>\n<\/ol>\n<\/li>\n\n\n\n<li>Portainer \u0e08\u0e30\u0e17\u0e33\u0e01\u0e32\u0e23 deploy container \u0e15\u0e32\u0e21\u0e17\u0e35\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e44\u0e27\u0e49\u0e43\u0e19 Docker Compose<\/li>\n\n\n\n<li>Docker \u0e08\u0e30\u0e17\u0e33\u0e01\u0e32\u0e23 pull image \u0e08\u0e32\u0e01 registry \u0e21\u0e32\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 \u0e15\u0e32\u0e21 tag \u0e17\u0e35\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e40\u0e2d\u0e32\u0e44\u0e27\u0e49<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"using-jenkinsfile\">Using Jenkinsfile<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d\u0e17\u0e35\u0e21 AtlasX \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e17\u0e33 CI\/CD \u0e41\u0e25\u0e30 Gitlab webhooks<\/li>\n\n\n\n<li>\u0e14\u0e32\u0e27\u0e19\u0e4c\u0e42\u0e2b\u0e25\u0e14 Jenkinsfile \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a Docker \u0e17\u0e35\u0e48\u0e2b\u0e19\u0e49\u0e32\u00a0<a href=\"https:\/\/portal-atlasx.cdg.co.th\/tools\/downloads\/jenkins\">Download<\/a>\u00a0\u0e08\u0e32\u0e01\u0e19\u0e31\u0e49\u0e19\u0e19\u0e33\u0e21\u0e32\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e44\u0e1f\u0e25\u0e4c\u0e40\u0e01\u0e48\u0e32 \u0e2b\u0e23\u0e37\u0e2d\u0e15\u0e31\u0e49\u0e07\u0e0a\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e21\u0e48\u0e27\u0e48\u0e32\u00a0<code>Jenkinsfile_Docker<\/code><\/li>\n\n\n\n<li>\u0e41\u0e01\u0e49\u0e44\u0e02\u0e04\u0e2d\u0e19\u0e1f\u0e34\u0e01\u0e43\u0e19\u00a0<code>Jenkinsfile<\/code>\u00a0\u0e43\u0e2b\u0e49\u0e40\u0e23\u0e35\u0e22\u0e1a\u0e23\u0e49\u0e2d\u0e22<\/li>\n\n\n\n<li>\u0e2a\u0e23\u0e49\u0e32\u0e07 Branch \u0e43\u0e2b\u0e21\u0e48\u0e0a\u0e37\u0e48\u0e2d\u00a0<code>jenkins<\/code>\u00a0\u0e41\u0e25\u0e30 Checkout \u0e44\u0e1b\u0e17\u0e35\u0e48\u00a0<code>jenkins<\/code>\u00a0\u0e08\u0e32\u0e01\u0e19\u0e31\u0e49\u0e19\u0e17\u0e33\u0e01\u0e32\u0e23 Push \u0e44\u0e1b\u0e22\u0e31\u0e07\u00a0<code>origin<\/code><\/li>\n\n\n\n<li>\u0e22\u0e01\u0e16\u0e49\u0e27\u0e22\u0e01\u0e32\u0e41\u0e1f\u0e02\u0e36\u0e49\u0e19\u0e41\u0e25\u0e49\u0e27\u0e01\u0e47\u0e08\u0e34\u0e1a \u2615\ufe0f<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"jenkinsfile-parameters\">Jenkinsfile Parameters<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Parameter<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td><code>IMAGE_NAME<\/code><\/td><td>\u0e0a\u0e37\u0e48\u0e2d container image \u0e15\u0e32\u0e21 standard \u0e04\u0e37\u0e2d {registry}\/{org}\/{project}\/{app_name} \u0e40\u0e0a\u0e48\u0e19 atlasx-registry.cdg.co.th\/ptt\/ngr-cc\/webapp<\/td><\/tr><tr><td><code>IMAGE_TAG<\/code><\/td><td>tag \u0e02\u0e2d\u0e07 image \u0e40\u0e0a\u0e48\u0e19 latest, v1.0, v1.1<\/td><\/tr><tr><td><code>PROJECT_KEY<\/code><\/td><td>\u0e0a\u0e37\u0e48\u0e2d\u0e42\u0e1b\u0e23\u0e40\u0e08\u0e01\u0e15\u0e4c\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e23\u0e30\u0e1a\u0e38\u0e43\u0e19\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e02\u0e2d\u0e07 SonarQube report \u0e41\u0e25\u0e30\u0e04\u0e27\u0e23\u0e40\u0e1b\u0e47\u0e19\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e0b\u0e49\u0e33 (\u0e40\u0e0a\u0e48\u0e19&nbsp;<code>AtlasX.Web.Application<\/code>).<\/td><\/tr><tr><td><code>PROJECT_VERSION<\/code><\/td><td>\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e48\u0e19\u0e02\u0e2d\u0e07\u0e42\u0e1b\u0e23\u0e40\u0e08\u0e01\u0e15\u0e4c\u0e17\u0e35\u0e48\u0e40\u0e2d\u0e32\u0e44\u0e27\u0e49\u0e23\u0e30\u0e1a\u0e38\u0e43\u0e19\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e02\u0e2d\u0e07 SonarQube report<\/td><\/tr><tr><td><code>REGISTRY_URL<\/code><\/td><td>Url \u0e02\u0e2d\u0e07 Docker Registry \u0e17\u0e35\u0e48\u0e08\u0e30\u0e19\u0e33 image \u0e44\u0e1b\u0e40\u0e01\u0e47\u0e1a<\/td><\/tr><tr><td><code>BASE_HREF<\/code><\/td><td>Angular base href&nbsp;<strong><em>\u0e40\u0e09\u0e1e\u0e32\u0e30 angular project<\/em><\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"best-practice\">Best Practice<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"1-gitops-approach\">1. GitOps Approach<\/h3>\n\n\n\n<p>\u0e43\u0e19\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23 deployment \u0e41\u0e19\u0e30\u0e19\u0e33\u0e43\u0e2b\u0e49\u0e2a\u0e23\u0e49\u0e32\u0e07 GitLab repository \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e40\u0e01\u0e47\u0e1a\u0e44\u0e1f\u0e25\u0e4c manifest \u0e40\u0e0a\u0e48\u0e19&nbsp;<code>docker-compose.yml<\/code>&nbsp;\u0e41\u0e22\u0e01\u0e08\u0e32\u0e01 GitLab repository \u0e02\u0e2d\u0e07\u0e42\u0e1b\u0e23\u0e40\u0e08\u0e47\u0e04 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23 deploy \u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 \u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e08\u0e32\u0e01 Docker \u0e40\u0e1b\u0e47\u0e19\u0e01\u0e32\u0e23\u0e23\u0e31\u0e19 container \u0e02\u0e36\u0e49\u0e19\u0e21\u0e32\u0e08\u0e32\u0e01 image \u0e19\u0e31\u0e48\u0e19\u0e08\u0e36\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e2b\u0e15\u0e38\u0e1c\u0e25\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e19\u0e33 source code \u0e44\u0e1b\u0e40\u0e01\u0e47\u0e1a\u0e1a\u0e19 production server \u0e2d\u0e35\u0e01<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"2-use-environment-variable-for-secret\">2. Use Environment Variable for Secret<\/h3>\n\n\n\n<p>\u0e43\u0e19\u0e01\u0e32\u0e23\u0e40\u0e01\u0e47\u0e1a config \u0e15\u0e48\u0e32\u0e07 \u0e46 \u0e17\u0e35\u0e48\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a Credentials \u0e2b\u0e23\u0e37\u0e2d secret \u0e15\u0e48\u0e32\u0e07 \u0e46 \u0e43\u0e2b\u0e49\u0e43\u0e0a\u0e49 Environment Variable \u0e41\u0e25\u0e49\u0e27 inject \u0e40\u0e02\u0e49\u0e32\u0e44\u0e1b\u0e43\u0e19\u0e44\u0e1f\u0e25\u0e4c&nbsp;<code>docker-compose.yml<\/code>&nbsp;\u0e41\u0e17\u0e19\u0e01\u0e32\u0e23\u0e40\u0e01\u0e47\u0e1a\u0e44\u0e27\u0e49\u0e43\u0e19\u0e44\u0e1f\u0e25\u0e4c&nbsp;<code>docker-compose.yml<\/code>&nbsp;\u0e42\u0e14\u0e22\u0e15\u0e23\u0e07 \u0e0b\u0e36\u0e48\u0e07\u0e01\u0e32\u0e23\u0e40\u0e01\u0e47\u0e1a Environment Variable \u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e17\u0e33\u0e44\u0e14\u0e49\u0e2b\u0e25\u0e32\u0e22\u0e27\u0e34\u0e18\u0e35 \u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e08\u0e30\u0e40\u0e1b\u0e47\u0e19<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"21-\u0e43\u0e0a\u0e49\u0e44\u0e1f\u0e25\u0e4c-env\">2.1 \u0e43\u0e0a\u0e49\u0e44\u0e1f\u0e25\u0e4c&nbsp;<code>.env<\/code><\/h4>\n\n\n\n<p>\u0e27\u0e34\u0e18\u0e35\u0e19\u0e35\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49\u0e07\u0e48\u0e32\u0e22\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14 \u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e01\u0e47\u0e1a\u0e44\u0e1f\u0e25\u0e4c\u0e44\u0e27\u0e49\u0e1a\u0e19\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07 production \u0e44\u0e14\u0e49\u0e40\u0e25\u0e22 \u0e41\u0e15\u0e48\u0e2b\u0e49\u0e32\u0e21\u0e19\u0e33\u0e44\u0e1f\u0e25\u0e4c&nbsp;<code>.env<\/code>&nbsp;\u0e44\u0e1b\u0e40\u0e01\u0e47\u0e1a\u0e44\u0e27\u0e49\u0e1a\u0e19 GitLab repository \u0e02\u0e2d\u0e07\u0e42\u0e1b\u0e23\u0e40\u0e08\u0e47\u0e04\u0e40\u0e14\u0e47\u0e14\u0e02\u0e32\u0e14 (\u0e41\u0e19\u0e30\u0e19\u0e33\u0e43\u0e2b\u0e49\u0e40\u0e01\u0e47\u0e1a\u0e40\u0e1b\u0e47\u0e19&nbsp;<code>example.env<\/code>&nbsp;\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e33\u0e2b\u0e19\u0e14 template)<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"22-\u0e43\u0e0a\u0e49-secret-manager\">2.2 \u0e43\u0e0a\u0e49 Secret Manager<\/h4>\n\n\n\n<p>Secret Manager \u0e40\u0e1b\u0e47\u0e19\u0e27\u0e34\u0e18\u0e35\u0e01\u0e32\u0e23\u0e40\u0e01\u0e47\u0e1a secret \u0e44\u0e27\u0e49\u0e1a\u0e19 server \u0e17\u0e35\u0e48\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22\u0e2a\u0e39\u0e07 \u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07 secret \u0e44\u0e14\u0e49 \u0e23\u0e27\u0e21\u0e16\u0e36\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e23\u0e31\u0e48\u0e27\u0e44\u0e2b\u0e25\u0e44\u0e14\u0e49\u0e22\u0e32\u0e01\u0e02\u0e36\u0e49\u0e19 \u0e0b\u0e36\u0e48\u0e07\u0e17\u0e32\u0e07\u0e17\u0e35\u0e21 AtlasX \u0e44\u0e14\u0e49\u0e19\u0e33&nbsp;<a href=\"https:\/\/www.vaultproject.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">HashiCorp Vault<\/a>&nbsp;\u0e21\u0e32\u0e43\u0e0a\u0e49\u0e40\u0e1b\u0e47\u0e19 Secret Manager \u0e43\u0e19\u0e01\u0e32\u0e23\u0e40\u0e01\u0e47\u0e1a secret \u0e02\u0e2d\u0e07\u0e42\u0e1b\u0e23\u0e40\u0e08\u0e47\u0e04 \u0e0b\u0e36\u0e48\u0e07\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07 secret \u0e44\u0e14\u0e49\u0e1c\u0e48\u0e32\u0e19 API \u0e2b\u0e23\u0e37\u0e2d CLI \u0e17\u0e35\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e23\u0e2b\u0e31\u0e2a\u0e41\u0e25\u0e49\u0e27 \u0e41\u0e25\u0e30\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e44\u0e14\u0e49<\/p>\n","protected":false},"featured_media":0,"parent":3463,"menu_order":1,"comment_status":"closed","ping_status":"closed","template":"","meta":{"nav_title":"","positive":"","negative":"","footnotes":""},"docs_category":[],"class_list":["post-3467","docs","type-docs","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/docs\/3467","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/types\/docs"}],"replies":[{"embeddable":true,"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/comments?post=3467"}],"version-history":[{"count":1,"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/docs\/3467\/revisions"}],"predecessor-version":[{"id":3468,"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/docs\/3467\/revisions\/3468"}],"up":[{"embeddable":true,"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/docs\/3463"}],"wp:attachment":[{"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/media?parent=3467"}],"wp:term":[{"taxonomy":"docs_category","embeddable":true,"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/docs_category?post=3467"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}