{"id":34908,"date":"2024-08-22T09:56:57","date_gmt":"2024-08-22T02:56:57","guid":{"rendered":"http:\/\/jupitek.maudemo.vip\/index.php\/2024\/08\/22\/how-to-use-crossplane\/"},"modified":"2024-08-22T09:56:57","modified_gmt":"2024-08-22T02:56:57","slug":"how-to-use-crossplane","status":"publish","type":"post","link":"https:\/\/jupitek.maudemo.vip\/index.php\/2024\/08\/22\/how-to-use-crossplane\/","title":{"rendered":"C\u00e1ch s\u1eed d\u1ee5ng Crossplane"},"content":{"rendered":"<p>Crossplane cung c\u1ea5p ti\u1ec7n \u00edch m\u1edf r\u1ed9ng m\u00e3 ngu\u1ed3n m\u1edf cho Kubernetes \u0111\u1ec3 t\u1ea1o m\u1eb7t ph\u1eb3ng \u0111i\u1ec1u khi\u1ec3n chung. V\u1edbi Crossplane, b\u1ea1n c\u00f3 th\u1ec3 s\u1eafp x\u1ebfp v\u00e0 qu\u1ea3n l\u00fd to\u00e0n b\u1ed9 c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng r\u1ed9ng h\u01a1n c\u1ee7a m\u00ecnh b\u1eb1ng c\u00e1c c\u00f4ng c\u1ee5 Kubernetes. Crossplane c\u00f3 th\u1ec3 giao ti\u1ebfp v\u1edbi h\u1ea7u h\u1ebft m\u1ecdi API n\u1ec1n t\u1ea3ng \u0111\u00e1m m\u00e2y, bao g\u1ed3m c\u1ea3 Akamai Cloud, v\u00e0 cung c\u1ea5p c\u00e1c t\u00ednh n\u0103ng nh\u01b0 tr\u1eebu t\u01b0\u1ee3ng h\u00f3a API v\u00e0 ki\u1ec3m so\u00e1t truy c\u1eadp c\u1ee7a Kubernetes.<\/p>\n<p>Trong h\u01b0\u1edbng d\u1eabn n\u00e0y, b\u1ea1n s\u1ebd t\u00ecm hi\u1ec3u th\u00eam v\u1ec1 Crossplane l\u00e0 g\u00ec v\u00e0 c\u00e1ch so s\u00e1nh v\u1edbi c\u00e1c c\u00f4ng c\u1ee5 t\u01b0\u01a1ng t\u1ef1. B\u1ea1n c\u0169ng c\u00f3 th\u1ec3 l\u00e0m theo h\u01b0\u1edbng d\u1eabn t\u1eebng b\u01b0\u1edbc \u0111\u1ec3 thi\u1ebft l\u1eadp phi\u00ean b\u1ea3n Crossplane c\u1ee7a ri\u00eang m\u00ecnh.<\/p>\n<h2 id=\"what-is-crossplane\">Crossplane l\u00e0 g\u00ec?<a href=\"https:\/\/www.linode.com\/docs\/guides\/getting-started-with-crossplane\/#what-is-crossplane\"><\/a><\/h2>\n<p><a href=\"https:\/\/www.crossplane.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">Crossplane<\/a>&nbsp;t\u1ea1o ra c\u00e1c m\u1eb7t ph\u1eb3ng \u0111i\u1ec1u khi\u1ec3n \u0111\u00e1m m\u00e2y tr\u00ean b\u1ea5t k\u1ef3 n\u1ec1n t\u1ea3ng \u0111\u00e1m m\u00e2y n\u00e0o. Crossplane m\u1edf r\u1ed9ng Kubernetes th\u00e0nh m\u1ed9t m\u1eb7t ph\u1eb3ng \u0111i\u1ec1u khi\u1ec3n chung. V\u1edbi n\u00f3, b\u1ea1n c\u00f3 th\u1ec3 cung c\u1ea5p v\u00e0 qu\u1ea3n l\u00fd c\u00e1c nhu c\u1ea7u c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng r\u1ed9ng h\u01a1n c\u1ee7a m\u00ecnh b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng c\u00e1c bi\u1ec3u hi\u1ec7n v\u00e0 API Kubernetes quen thu\u1ed9c.<\/p>\n<p>Vi\u1ec7c m\u1edf r\u1ed9ng Kubernetes c\u1ee7a Crossplane th\u00e0nh m\u1ed9t m\u1eb7t ph\u1eb3ng \u0111i\u1ec1u khi\u1ec3n chung cho ph\u00e9p n\u00f3 giao ti\u1ebfp v\u1edbi h\u1ea7u nh\u01b0 b\u1ea5t k\u1ef3 API b\u00ean ngo\u00e0i n\u00e0o. \u0110i\u1ec1u \u0111\u00f3 \u0111\u00fang cho d\u00f9 b\u1ea1n \u0111ang tri\u1ec3n khai tr\u00ean m\u1ed9t n\u1ec1n t\u1ea3ng \u0111\u00e1m m\u00e2y l\u1edbn,&nbsp;<a href=\"https:\/\/blog.crossplane.io\/providers-101-ordering-pizza-with-kubernetes-and-crossplane\/\" target=\"_blank\" rel=\"noreferrer noopener\">\u0111\u1eb7t pizza<\/a>&nbsp;hay t\u1eadn d\u1ee5ng m\u1ed9t c\u00f4ng c\u1ee5 \u0111i\u1ec1u ph\u1ed1i kh\u00e1c&nbsp;<a href=\"https:\/\/github.com\/upbound\/provider-terraform\" target=\"_blank\" rel=\"noreferrer noopener\">nh\u01b0 Terraform<\/a>&nbsp;.<\/p>\n<h3 id=\"what-are-control-planes\">M\u1eb7t ph\u1eb3ng \u0111i\u1ec1u khi\u1ec3n l\u00e0 g\u00ec?<a href=\"https:\/\/www.linode.com\/docs\/guides\/getting-started-with-crossplane\/#what-are-control-planes\"><\/a><\/h3>\n<p>Trong b\u1ed1i c\u1ea3nh t\u00e0i nguy\u00ean \u0111\u00e1m m\u00e2y,&nbsp;<em>m\u1eb7t ph\u1eb3ng \u0111i\u1ec1u khi\u1ec3n<\/em>&nbsp;cung c\u1ea5p giao di\u1ec7n \u0111\u1ec3 t\u1ea1o t\u00e0i nguy\u00ean v\u00e0 qu\u1ea3n l\u00fd v\u00f2ng \u0111\u1eddi c\u1ee7a ch\u00fang. Do \u0111\u00f3, m\u1eb7t ph\u1eb3ng \u0111i\u1ec1u khi\u1ec3n t\u01b0\u01a1ng \u1ee9ng v\u1edbi vi\u1ec7c s\u1eafp x\u1ebfp t\u00e0i nguy\u00ean cho c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng \u0111\u00e1m m\u00e2y.<\/p>\n<p>B\u1ea3n th\u00e2n Kubernetes l\u00e0 m\u1ed9t v\u00ed d\u1ee5. Thi\u1ebft l\u1eadp Kubernetes tri\u1ec3n khai v\u00e0 gi\u00e1m s\u00e1t t\u00e0i nguy\u00ean, qu\u1ea3n l\u00fd tr\u1ea1ng th\u00e1i c\u1ee7a t\u1eebng t\u00e0i nguy\u00ean theo c\u1ea5u h\u00ecnh nh\u1ea5t \u0111\u1ecbnh.<\/p>\n<p>Crossplane s\u1eed d\u1ee5ng m\u1eb7t ph\u1eb3ng \u0111i\u1ec1u khi\u1ec3n Kubernetes v\u00e0 m\u1edf r\u1ed9ng n\u00f3 sang m\u1ed9t b\u1ed1i c\u1ea3nh r\u1ed9ng h\u01a1n. Trong khi Kubernetes ho\u1ea1t \u0111\u1ed9ng nh\u01b0 m\u1ed9t m\u1eb7t ph\u1eb3ng \u0111i\u1ec1u khi\u1ec3n cho c\u00e1c t\u00e0i nguy\u00ean tr\u00ean c\u1ee5m Kubernetes, Crossplane ho\u1ea1t \u0111\u1ed9ng nh\u01b0 m\u1ed9t&nbsp;<em>m\u1eb7t ph\u1eb3ng \u0111i\u1ec1u khi\u1ec3n chung<\/em>&nbsp;. Crossplane c\u00f3 th\u1ec3 l\u00e0 giao di\u1ec7n cho c\u00e1c t\u00e0i nguy\u00ean tr\u00ean h\u1ea7u nh\u01b0 b\u1ea5t k\u1ef3 n\u1ec1n t\u1ea3ng \u0111\u00e1m m\u00e2y n\u00e0o.<\/p>\n<h3 id=\"crossplane-vs-terraform-what-are-the-differences\">Crossplane v\u00e0 Terraform: S\u1ef1 kh\u00e1c bi\u1ec7t l\u00e0 g\u00ec?<a href=\"https:\/\/www.linode.com\/docs\/guides\/getting-started-with-crossplane\/#crossplane-vs-terraform-what-are-the-differences\"><\/a><\/h3>\n<p><a href=\"https:\/\/www.terraform.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">Terraform<\/a>&nbsp;c\u00f3 l\u1ebd l\u00e0 c\u00f4ng c\u1ee5 ph\u1ed5 bi\u1ebfn nh\u1ea5t cho c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng d\u01b0\u1edbi d\u1ea1ng m\u00e3. Gi\u1ed1ng nh\u01b0 Crossplane, Terraform cho ph\u00e9p b\u1ea1n qu\u1ea3n l\u00fd c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng \u0111\u00f3 tr\u00ean nhi\u1ec1u d\u1ecbch v\u1ee5. V\u1eady \u0111i\u1ec1u g\u00ec khi\u1ebfn Crossplane kh\u00e1c bi\u1ec7t so v\u1edbi Terraform v\u00e0 khi n\u00e0o b\u1ea1n n\u00ean s\u1eed d\u1ee5ng Crossplane thay v\u00ec Terraform?<\/p>\n<p>V\u1ec1 c\u01a1 b\u1ea3n, s\u1ef1 kh\u00e1c bi\u1ec7t n\u1eb1m \u1edf m\u1ee5c \u0111\u00edch s\u1eed d\u1ee5ng c\u1ee7a c\u00f4ng c\u1ee5. Terraform l\u00e0 c\u00f4ng c\u1ee5 d\u00f2ng l\u1ec7nh \u0111\u1ec3 tri\u1ec3n khai c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng c\u1ea5u h\u00ecnh khai b\u00e1o. Ng\u01b0\u1ee3c l\u1ea1i, Crossplane l\u00e0 m\u1eb7t ph\u1eb3ng \u0111i\u1ec1u khi\u1ec3n s\u1eed d\u1ee5ng c\u1ea5u h\u00ecnh khai b\u00e1o \u0111\u1ec3 t\u1ea1o v\u00e0 cung c\u1ea5p kh\u1ea3 n\u0103ng qu\u1ea3n l\u00fd li\u00ean t\u1ee5c c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng.<\/p>\n<p>Ngo\u00e0i ra, c\u00f3 hai s\u1ef1 kh\u00e1c bi\u1ec7t \u0111\u00e1ng k\u1ec3 v\u1ec1 ch\u1ee9c n\u0103ng gi\u1eefa c\u00e1c c\u00f4ng c\u1ee5. Nh\u1eefng s\u1ef1 kh\u00e1c bi\u1ec7t n\u00e0y ch\u1ee7 y\u1ebfu \u1ea3nh h\u01b0\u1edfng \u0111\u1ebfn c\u00e1ch c\u00e1c c\u00f4ng c\u1ee5 ph\u00f9 h\u1ee3p v\u1edbi c\u1ea5u tr\u00fac t\u1ed5 ch\u1ee9c v\u00e0 nh\u00f3m.<\/p>\n<ul>\n<li>C\u1ea5u h\u00ecnh c\u1ee7a Terraform kh\u00f4ng c\u1eadp nh\u1eadt theo nh\u1eefng thay \u0111\u1ed5i tr\u00ean c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng \u0111\u00e3 tri\u1ec3n khai. Terraform h\u01b0\u1edbng \u0111\u1ebfn vi\u1ec7c tri\u1ec3n khai c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng v\u00e0 nh\u1eefng thay \u0111\u1ed5i \u0111\u1ed1i v\u1edbi c\u1ea5u h\u00ecnh Terraform \u0111\u00f2i h\u1ecfi ph\u1ea3i \u00e1p d\u1ee5ng l\u1ea1i to\u00e0n b\u1ed9 qu\u00e1 tr\u00ecnh tri\u1ec3n khai.L\u00e0 m\u1ed9t m\u1eb7t ph\u1eb3ng \u0111i\u1ec1u khi\u1ec3n, Crossplane s\u1eed d\u1ee5ng c\u00e1c c\u1ea5u h\u00ecnh khai b\u00e1o c\u1ee7a m\u00ecnh \u0111\u1ec3 ch\u1ee7 \u0111\u1ed9ng duy tr\u00ec v\u00e0 s\u1eeda \u0111\u1ed5i tr\u1ea1ng th\u00e1i c\u1ee7a c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng. \u0110i\u1ec1u n\u00e0y c\u00f3 ngh\u0129a l\u00e0 Crossplane kh\u00f4ng b\u1ecb \u1ea3nh h\u01b0\u1edfng b\u1edfi &#8220;tr\u00f4i d\u1ea1t&#8221; c\u1ea5u h\u00ecnh c\u00f3 th\u1ec3 x\u1ea3y ra v\u1edbi c\u00e1c c\u1ea5u h\u00ecnh Terraform.<\/li>\n<li>V\u1edbi Terraform, m\u1ed9t nh\u00e0 ph\u00e1t tri\u1ec3n c\u1ed9ng t\u00e1c c\u1ea7n m\u1ed9t s\u1ed1 quy\u1ec1n truy c\u1eadp c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng ph\u1ea3i bi\u1ebft c\u1ea3 Terraform v\u00e0 API c\u01a1 b\u1ea3n. Kh\u00f4ng ch\u1ec9 v\u1eady, nh\u00e0 ph\u00e1t tri\u1ec3n c\u00f2n c\u1ea7n quy\u1ec1n truy c\u1eadp chi ti\u1ebft v\u00e0o c\u00e1c t\u00e0i nguy\u00ean c\u01a1 b\u1ea3n.Ng\u01b0\u1ee3c l\u1ea1i, Crossplane c\u00f3 th\u1ec3 cung c\u1ea5p giao di\u1ec7n t\u1ef1 ph\u1ee5c v\u1ee5. Crossplane s\u1eed d\u1ee5ng c\u00e1c to\u00e1n t\u1eed x\u1eed l\u00fd th\u00f4ng tin x\u00e1c th\u1ef1c v\u00e0 hi\u1ec3n th\u1ecb c\u00e1c giao di\u1ec7n \u0111\u01a1n gi\u1ea3n, tr\u1eebu t\u01b0\u1ee3ng cho c\u00e1c nh\u00e0 ph\u00e1t tri\u1ec3n c\u1ed9ng t\u00e1c. Theo c\u00e1ch \u0111\u00f3, c\u00e1c nh\u00e0 ph\u00e1t tri\u1ec3n ch\u1ec9 c\u1ea7n truy c\u1eadp v\u00e0 hi\u1ec3u bi\u1ebft v\u1ec1 ch\u00ednh giao di\u1ec7n, thay v\u00ec c\u00e1c kh\u00eda c\u1ea1nh chi ti\u1ebft.<\/li>\n<\/ul>\n<p>Vi\u1ec7c Crossplane s\u1eed d\u1ee5ng Kubernetes c\u0169ng khi\u1ebfn n\u00f3 tr\u1edf th\u00e0nh gi\u1ea3i ph\u00e1p c\u00f3 l\u1ee3i cho c\u00e1c nh\u00f3m \u0111\u00e3 s\u1eed d\u1ee5ng Kubernetes. Crossplane t\u1eadn d\u1ee5ng c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng v\u00e0 s\u1ef1 quen thu\u1ed9c c\u1ee7a Kubernetes hi\u1ec7n c\u00f3.<\/p>\n<h2 id=\"how-to-install-crossplane\">C\u00e1ch c\u00e0i \u0111\u1eb7t Crossplane<a href=\"https:\/\/www.linode.com\/docs\/guides\/getting-started-with-crossplane\/#how-to-install-crossplane\"><\/a><\/h2>\n<p>Crossplane tri\u1ec3n khai \u0111\u1ebfn c\u1ee5m Kubernetes t\u01b0\u01a1ng t\u1ef1 nh\u01b0 nhi\u1ec1u \u1ee9ng d\u1ee5ng Kubernetes kh\u00e1c. Sau khi c\u00e0i \u0111\u1eb7t Crossplane tr\u00ean c\u1ee5m c\u1ee7a m\u00ecnh, b\u1ea1n c\u00f3 th\u1ec3 t\u1eadn d\u1ee5ng&nbsp;<code>kubectl<\/code>\u0111\u1ec3 t\u1ea1o v\u00e0 qu\u1ea3n l\u00fd t\u00e0i nguy\u00ean Crossplane.<\/p>\n<p>Th\u1ef1c hi\u1ec7n theo c\u00e1c b\u01b0\u1edbc trong ph\u1ea7n n\u00e0y \u0111\u1ec3 thi\u1ebft l\u1eadp c\u1ee5m Kubernetes v\u00e0 ch\u1ea1y Crossplane tr\u00ean c\u1ee5m \u0111\u00f3.<\/p>\n<h3 id=\"setting-up-a-kubernetes-cluster\">Thi\u1ebft l\u1eadp c\u1ee5m Kubernetes<a href=\"https:\/\/www.linode.com\/docs\/guides\/getting-started-with-crossplane\/#setting-up-a-kubernetes-cluster\"><\/a><\/h3>\n<p>Crossplane ch\u1ea1y tr\u00ean c\u1ee5m Kubernetes, do \u0111\u00f3 b\u1ea1n c\u1ea7n c\u00f3 m\u1ed9t c\u1ee5m \u0111ang ch\u1ea1y \u0111\u1ec3 b\u1eaft \u0111\u1ea7u s\u1eed d\u1ee5ng.<\/p>\n<p>V\u1edbi Linode, b\u1ea1n c\u00f3 th\u1ec3 nhanh ch\u00f3ng tri\u1ec3n khai c\u1ee5m Kubernetes t\u1eeb Cloud Manager. \u0110\u1ec3 th\u1ef1c hi\u1ec7n, h\u00e3y l\u00e0m theo h\u01b0\u1edbng d\u1eabn c\u1ee7a ch\u00fang t\u00f4i&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/products\/compute\/kubernetes\/get-started\/\">Linode Kubernetes Engine &#8211; Getting Started<\/a>&nbsp;. Khi ho\u00e0n t\u1ea5t, b\u1ea1n s\u1ebd c\u00f3 m\u1ed9t c\u1ee5m Kubernetes ho\u1ea1t \u0111\u1ed9ng \u0111\u1ea7y \u0111\u1ee7 v\u00e0 m\u1ed9t&nbsp;<code>kubectl<\/code>phi\u00ean b\u1ea3n \u0111\u01b0\u1ee3c c\u1ea5u h\u00ecnh \u0111\u1ec3 qu\u1ea3n l\u00fd c\u1ee5m \u0111\u00f3.<\/p>\n<p>Ngo\u00e0i vi\u1ec7c c\u00f3 m\u1ed9t c\u1ee5m Kubernetes \u0111ang ho\u1ea1t \u0111\u1ed9ng, b\u1ea1n c\u1ea7n c\u1ea5u h\u00ecnh kubectl \u0111\u1ec3 qu\u1ea3n l\u00fd c\u1ee5m \u0111\u00f3. B\u1ea1n c\u00f3 th\u1ec3 t\u00ecm th\u1ea5y th\u00f4ng tin n\u00e0y \u0111\u01b0\u1ee3c \u0111\u1ec1 c\u1eadp trong h\u01b0\u1edbng d\u1eabn LKE \u0111\u01b0\u1ee3c li\u00ean k\u1ebft ngay ph\u00eda tr\u00ean.<\/p>\n<p>\u0110\u1ec3 c\u00e0i \u0111\u1eb7t Helm tr\u00ean h\u1ec7 th\u1ed1ng c\u1ee7a b\u1ea1n, h\u00e3y l\u00e0m theo ph\u1ea7n c\u00f3 li\u00ean quan trong h\u01b0\u1edbng d\u1eabn&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/how-to-install-apps-on-kubernetes-with-helm-3\/#install-helm\">C\u00e0i \u0111\u1eb7t \u1ee9ng d\u1ee5ng tr\u00ean Kubernetes b\u1eb1ng Helm 3<\/a>&nbsp;c\u1ee7a ch\u00fang t\u00f4i .<\/p>\n<h3 id=\"deploying-crossplane-with-helm\">Tri\u1ec3n khai Crossplane v\u1edbi Helm<a href=\"https:\/\/www.linode.com\/docs\/guides\/getting-started-with-crossplane\/#deploying-crossplane-with-helm\"><\/a><\/h3>\n<p>Sau khi ch\u1ea1y Kubernetes v\u00e0 c\u00e0i \u0111\u1eb7t Helm, b\u00e2y gi\u1edd b\u1ea1n c\u00f3 th\u1ec3 ti\u1ebfn h\u00e0nh c\u00e0i \u0111\u1eb7t Crossplane.<\/p>\n<p>1.Th\u00eam kho l\u01b0u tr\u1eef Crossplane v\u00e0o phi\u00ean b\u1ea3n Helm c\u1ee7a b\u1ea1n:<\/p>\n<pre class=\"wp-block-code\"><code>helm repo add crossplane-stable https:\/\/charts.crossplane.io\/stable \n\nhelm repo update<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>Hang tight while we grab the latest from your chart repositories...\n...Successfully got an update from the \"crossplane-stable\" chart repository\nUpdate Complete. \u2388Happy Helming!\u2388<\/code><\/pre>\n<p>N\u1ebfu b\u1ea1n mu\u1ed1n t\u00f9y ch\u1ec9nh c\u00e0i \u0111\u1eb7t c\u1ee7a m\u00ecnh, h\u00e3y theo li\u00ean k\u1ebft \u1edf tr\u00ean \u0111\u1ec3 t\u1ea1o t\u1ec7p gi\u00e1 tr\u1ecb v\u1edbi c\u00e1c t\u00f9y ch\u1ecdn v\u00e0 \u0111\u1eb7t t\u00ean&nbsp;<code>values.yml<\/code>cho v\u00ed d\u1ee5 n\u00e0y. Sau \u0111\u00f3 th\u00eam&nbsp;<code>-f values.yml<\/code>v\u00e0o cu\u1ed1i l\u1ec7nh c\u00e0i \u0111\u1eb7t b\u00ean d\u01b0\u1edbi \u0111\u1ec3 \u00e1p d\u1ee5ng c\u1ea5u h\u00ecnh c\u1ee7a b\u1ea1n v\u00e0o c\u00e0i \u0111\u1eb7t.<\/p>\n<p>N\u1ebfu b\u1ea1n mu\u1ed1n t\u00f9y ch\u1ec9nh c\u00e0i \u0111\u1eb7t c\u1ee7a m\u00ecnh, h\u00e3y theo li\u00ean k\u1ebft \u1edf tr\u00ean \u0111\u1ec3 t\u1ea1o t\u1ec7p&nbsp;<code>values.yaml<\/code>c\u00f3 c\u00e1c t\u00f9y ch\u1ecdn. Sau \u0111\u00f3 th\u00eam&nbsp;<code>-f values.yml<\/code>v\u00e0o cu\u1ed1i l\u1ec7nh c\u00e0i \u0111\u1eb7t b\u00ean d\u01b0\u1edbi \u0111\u1ec3 \u00e1p d\u1ee5ng c\u1ea5u h\u00ecnh c\u1ee7a b\u1ea1n.<\/p>\n<p>2.Th\u1ef1c hi\u1ec7n theo khuy\u1ebfn ngh\u1ecb ch\u00ednh th\u1ee9c, l\u1ec7nh n\u00e0y s\u1ebd c\u00e0i \u0111\u1eb7t Crossplane trong kh\u00f4ng gian t\u00ean Kubernetes c\u1ee7a ri\u00eang n\u00f3:<\/p>\n<pre class=\"wp-block-code\"><code>helm install crossplane --namespace crossplane-system --create-namespace crossplane-stable\/crossplane<\/code><\/pre>\n<p>3.X\u00e1c nh\u1eadn c\u00e0i \u0111\u1eb7t b\u1eb1ng c\u00e1ch ki\u1ec3m tra c\u00e1c pod Crossplane \u0111\u01b0\u1ee3c tri\u1ec3n khai v\u00e0o c\u1ee5m c\u1ee7a b\u1ea1n. C\u00f3 th\u1ec3 m\u1ea5t m\u1ed9t th\u1eddi gian ng\u1eafn \u0111\u1ec3 c\u00e1c pod s\u1eb5n s\u00e0ng, v\u00ec v\u1eady b\u1ea1n c\u00f3 th\u1ec3 ph\u1ea3i \u0111\u1ee3i \u0111\u1ec3 xem tr\u1ea1ng&nbsp;<code>Running<\/code>th\u00e1i.<\/p>\n<pre class=\"wp-block-code\"><code>kubectl get pods --namespace crossplane-system<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>NAME                                      READY   STATUS    RESTARTS   AGE\ncrossplane-766d6647bc-b57lz               1\/1     Running   0          44s\ncrossplane-rbac-manager-f94699c7c-zvvtb   1\/1     Running   0          44s<\/code><\/pre>\n<h2 id=\"how-to-use-crossplane\">C\u00e1ch s\u1eed d\u1ee5ng Crossplane<a href=\"https:\/\/www.linode.com\/docs\/guides\/getting-started-with-crossplane\/#how-to-use-crossplane\"><\/a><\/h2>\n<p>Crossplane hi\u1ec7n \u0111ang ch\u1ea1y tr\u00ean c\u1ee5m c\u1ee7a b\u1ea1n v\u00e0 b\u1ea1n \u0111\u00e3 s\u1eb5n s\u00e0ng b\u1eaft \u0111\u1ea7u s\u1eed d\u1ee5ng c\u00e1c m\u1eb7t ph\u1eb3ng \u0111i\u1ec1u khi\u1ec3n c\u1ee7a n\u00f3 \u0111\u1ec3 tri\u1ec3n khai c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng c\u1ee7a ri\u00eang b\u1ea1n. C\u00f3 v\u00f4 s\u1ed1 t\u00f9y ch\u1ecdn kh\u1ea3 d\u1ee5ng, v\u00ec Crossplane l\u00e0 m\u1ed9t m\u1eb7t ph\u1eb3ng \u0111i\u1ec1u khi\u1ec3n chung c\u00f3 kh\u1ea3 n\u0103ng \u0111i\u1ec1u khi\u1ec3n m\u1ed9t ph\u1ea1m vi API b\u00ean ngo\u00e0i g\u1ea7n nh\u01b0 v\u00f4 h\u1ea1n.<\/p>\n<p>\u0110\u1ec3 b\u1eaft \u0111\u1ea7u, ph\u1ea7n n\u00e0y s\u1ebd h\u01b0\u1edbng d\u1eabn m\u1ed9t v\u00ed d\u1ee5 ho\u1ea1t \u0111\u1ed9ng \u0111\u1ea7y \u0111\u1ee7. V\u00ed d\u1ee5 n\u00e0y cho th\u1ea5y c\u00e1ch s\u1eed d\u1ee5ng nh\u00e0 cung c\u1ea5p Linode cho Crossplane \u0111\u1ec3 tri\u1ec3n khai m\u1ed9t phi\u00ean b\u1ea3n Linode Compute m\u1edbi.<\/p>\n<p>M\u1eb7c d\u00f9 t\u01b0\u01a1ng \u0111\u1ed1i \u0111\u01a1n gi\u1ea3n, v\u00ed d\u1ee5 n\u00e0y cung c\u1ea5p m\u1ed9t m\u00f4 h\u00ecnh c\u01a1 s\u1edf m\u1ea1nh m\u1ebd. B\u1ea1n c\u00f3 th\u1ec3 d\u1ec5 d\u00e0ng x\u00e2y d\u1ef1ng tr\u00ean c\u00e1c c\u1ea5u h\u00ecnh \u1edf \u0111\u00e2y \u0111\u1ec3 Crossplane ho\u1ea1t \u0111\u1ed9ng cho nhi\u1ec1u nhu c\u1ea7u c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng kh\u00e1c nhau.<\/p>\n<p class=\"has-background\" style=\"background-color:#fcb90033\">C\u1ea3nh b\u00e1o: C\u1ea5u h\u00ecnh v\u00e0 l\u1ec7nh \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng trong h\u01b0\u1edbng d\u1eabn n\u00e0y s\u1ebd th\u00eam m\u1ed9t ho\u1eb7c nhi\u1ec1u phi\u00ean b\u1ea3n Linode v\u00e0o t\u00e0i kho\u1ea3n c\u1ee7a b\u1ea1n. H\u00e3y \u0111\u1ea3m b\u1ea3o theo d\u00f5i ch\u1eb7t ch\u1ebd t\u00e0i kho\u1ea3n c\u1ee7a b\u1ea1n trong Linode Cloud Manager \u0111\u1ec3 tr\u00e1nh c\u00e1c kho\u1ea3n ph\u00ed kh\u00f4ng mong mu\u1ed1n.<\/p>\n<p>1.Nh\u00e0 cung c\u1ea5p cho ph\u00e9p b\u1ea1n tri\u1ec3n khai c\u00e1c phi\u00ean b\u1ea3n Akamai Cloud (tr\u01b0\u1edbc \u0111\u00e2y l\u00e0 Linode) v\u1edbi Crossplane.<\/p>\n<p>2.T\u1ea1o m\u1ed9t b\u1ea3n k\u00ea khai tri\u1ec3n khai (v\u00ed d\u1ee5&nbsp;<code>provider.yml<\/code>) \u0111\u1ec3 c\u00e0i \u0111\u1eb7t&nbsp;<a href=\"https:\/\/marketplace.upbound.io\/providers\/linode\/provider-linode\/\" target=\"_blank\" rel=\"noreferrer noopener\">nh\u00e0 cung c\u1ea5p Linode<\/a>&nbsp;(&nbsp;<code>provider-linode<\/code>) v\u00e0o phi\u00ean b\u1ea3n Crossplane c\u1ee7a b\u1ea1n:<\/p>\n<pre class=\"wp-block-code\"><code>apiVersion: pkg.crossplane.io\/v1\nkind: Provider\nmetadata:\n  name: provider-linode\nspec:\n  package: xpkg.upbound.io\/linode\/provider-linode:v0.0.10<\/code><\/pre>\n<p>Xem nhi\u1ec1u nh\u00e0 cung c\u1ea5p c\u00f3 s\u1eb5n cho Crossplane tr\u00ean&nbsp;<a href=\"https:\/\/marketplace.upbound.io\/providers\" target=\"_blank\" rel=\"noreferrer noopener\">Upbound Marketplace<\/a>&nbsp;. Upbound l\u00e0 nh\u1eefng ng\u01b0\u1eddi s\u00e1ng l\u1eadp Crossplane v\u00e0 h\u1ecd duy tr\u00ec kho l\u01b0u tr\u1eef nh\u00e0 cung c\u1ea5p n\u00e0y.<\/p>\n<p>3.\u00c1p d\u1ee5ng b\u1ea3n k\u00ea khai m\u1edbi t\u1ea1o \u0111\u1ec3 c\u00e0i \u0111\u1eb7t&nbsp;<code>provider-linode<\/code>v\u00e0o c\u1ee5m Kubernetes:<\/p>\n<pre class=\"wp-block-code\"><code>kubectl apply -f provider.yml<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>provider.pkg.crossplane.io\/provider-linode created\n<\/code><\/pre>\n<p>X\u00e1c minh c\u00e0i \u0111\u1eb7t b\u1eb1ng&nbsp;<code>kubectl<\/code>l\u1ec7nh li\u1ec7t k\u00ea&nbsp;<code>provider<\/code>c\u00e1c t\u00e0i nguy\u00ean:<\/p>\n<pre class=\"wp-block-code\"><code>kubectl get providers<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>NAME              INSTALLED   HEALTHY   PACKAGE                                         AGE\nprovider-linode   True        True      xpkg.upbound.io\/linode\/provider-linode:v0.0.7   15s<\/code><\/pre>\n<p>4.T\u1ea1o t\u1ec7p k\u00ea khai Kubernetes (v\u00ed d\u1ee5&nbsp;<code>deployment.yml<\/code>) \u0111\u1ec3 tri\u1ec3n khai phi\u00ean b\u1ea3n Linode Compute m\u1edbi. \u0110\u00e2y l\u00e0 n\u01a1i b\u1ea1n b\u1eaft \u0111\u1ea7u t\u1eadn d\u1ee5ng Crossplane v\u00e0 nh\u00e0 cung c\u1ea5p Linode \u0111\u1ec3 cung c\u1ea5p t\u00e0i nguy\u00ean.<\/p>\n<p>Trong v\u00ed d\u1ee5 n\u00e0y, b\u1ea1n c\u1ea7n thay th\u1ebf m\u1ed9t s\u1ed1 gi\u00e1 tr\u1ecb b\u1eb1ng gi\u00e1 tr\u1ecb c\u1ee5 th\u1ec3 theo nhu c\u1ea7u v\u00e0 th\u00f4ng tin \u0111\u0103ng nh\u1eadp t\u00e0i kho\u1ea3n Linode c\u1ee7a b\u1ea1n:<\/p>\n<ul>\n<li>Thay th\u1ebf&nbsp;<code>${ROOT_PASSWORD}<\/code>b\u1eb1ng m\u1eadt kh\u1ea9u g\u1ed1c \u0111\u1ec3 s\u1eed d\u1ee5ng cho phi\u00ean b\u1ea3n Linode Compute m\u1edbi.<\/li>\n<li>Thay th\u1ebf&nbsp;<code>${LINODE_API_TOKEN}<\/code>b\u1eb1ng m\u00e3 th\u00f4ng b\u00e1o truy c\u1eadp c\u00e1 nh\u00e2n API Linode c\u1ee7a b\u1ea1n, b\u1ea1n c\u00f3 th\u1ec3 t\u1ea1o m\u00e3 th\u00f4ng b\u00e1o n\u00e0y b\u1eb1ng c\u00e1ch l\u00e0m theo ph\u1ea7n c\u00f3 li\u00ean quan trong h\u01b0\u1edbng d\u1eabn c\u1ee7a ch\u00fang t\u00f4i v\u1ec1&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/products\/tools\/api\/get-started\/#get-an-access-token\">B\u1eaft \u0111\u1ea7u v\u1edbi API Linode<\/a><\/li>\n<li>Thay th\u1ebf&nbsp;<code>${SSH_PUBLIC_KEY}<\/code>b\u1eb1ng kh\u00f3a SSH c\u00f4ng khai \u0111\u1ec3 truy c\u1eadp phi\u00ean b\u1ea3n Linode Compute. T\u00ecm hi\u1ec3u th\u00eam v\u1ec1 kh\u00f3a SSH trong h\u01b0\u1edbng d\u1eabn&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/use-public-key-authentication-with-ssh\/\">S\u1eed d\u1ee5ng x\u00e1c th\u1ef1c kh\u00f3a c\u00f4ng khai SSH c\u1ee7a<\/a>&nbsp;ch\u00fang t\u00f4i .<\/li>\n<\/ul>\n<pre class=\"wp-block-code\"><code>apiVersion: v1\nkind: Secret\nmetadata:\n  name: crossplane-secrets\n  namespace: crossplane-system\ntype: Opaque\nstringData:\n  linodeRootPass: ${ROOT_PASSWORD}\n  linodeCredentials: |\n    {\n      \"token\": \"${LINODE_API_TOKEN}\"\n    }    \n---\napiVersion: linode.upbound.io\/v1beta1\nkind: ProviderConfig\nmetadata:\n  name: default\nspec:\n  credentials:\n    source: Secret\n    secretRef:\n      name: crossplane-secrets\n      namespace: crossplane-system\n      key: linodeCredentials\n---\napiVersion: instance.linode.upbound.io\/v1alpha1\nkind: Instance\nmetadata:\n  annotations:\n    meta.upbound.io\/example-id: instance\/v1alpha1\/instance\n  labels:\n    testing.upbound.io\/example-name: web\n  name: web\nspec:\n  forProvider:\n    authorizedKeys:\n    - ssh-rsa ${SSH_PUBLIC_KEY}\n    image: linode\/ubuntu20.04\n    type: g6-standard-1\n    label: crossplane-deployment-example\n    region: us-southeast\n    rootPassSecretRef:\n      key: linodeRootPass\n      name: crossplane-secrets\n      namespace: crossplane-system<\/code><\/pre>\n<p>B\u1ea3n k\u00ea khai n\u00e0y bao g\u1ed3m ba ph\u1ea7n th\u1ef1c hi\u1ec7n c\u00e1c ch\u1ee9c n\u0103ng sau:<\/p>\n<ul>\n<li>T\u00e0i&nbsp;<code>Secret<\/code>nguy\u00ean (&nbsp;<code>crossplane-secrets<\/code>) l\u01b0u tr\u1eef c\u00e1c bi\u1ebfn cho m\u1eadt kh\u1ea9u g\u1ed1c c\u1ee7a phi\u00ean b\u1ea3n c\u1ee7a b\u1ea1n v\u00e0 m\u00e3 th\u00f4ng b\u00e1o API Linode c\u1ee7a b\u1ea1n. C\u00e1c t\u00e0i nguy\u00ean sau \u0111\u00f3 c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng nh\u1eefng bi\u1ebfn n\u00e0y.<\/li>\n<li>T\u00e0i&nbsp;<code>ProviderConfig<\/code>nguy\u00ean cung c\u1ea5p c\u00e1c c\u1ea5u h\u00ecnh ban \u0111\u1ea7u \u0111\u1ec3 t\u00e0i nguy\u00ean s\u1eafp t\u1edbi s\u1eed d\u1ee5ng. \u0110\u1ed1i v\u1edbi nh\u00e0 cung c\u1ea5p Linode, \u0111i\u1ec1u \u0111\u00f3 ch\u1ec9 \u0111\u01a1n gi\u1ea3n c\u00f3 ngh\u0129a l\u00e0 tr\u1ecf \u0111\u1ebfn gi\u00e1 tr\u1ecb b\u00ed m\u1eadt b\u1eb1ng m\u00e3 th\u00f4ng b\u00e1o API Linode.<\/li>\n<li>T\u00e0i&nbsp;<code>Instance<\/code>nguy\u00ean (&nbsp;<code>web<\/code>) n\u00eau r\u00f5 chi ti\u1ebft v\u1ec1 phi\u00ean b\u1ea3n Linode Compute m\u1edbi s\u1ebd \u0111\u01b0\u1ee3c t\u1ea1o. V\u00ed d\u1ee5 n\u00e0y t\u1ea1o m\u1ed9t phi\u00ean b\u1ea3n chia s\u1ebb 2GB t\u1ea1i Atlanta ch\u1ea1y Ubuntu 20.04 LTS.S\u1eed d\u1ee5ng \u0111i\u1ec3m cu\u1ed1i API \u0111\u1ec3 t\u00ecm hi\u1ec3u th\u00eam v\u1ec1&nbsp;<a href=\"https:\/\/api.linode.com\/v4\/linode\/types\" target=\"_blank\" rel=\"noreferrer noopener\">c\u00e1c lo\u1ea1i<\/a>&nbsp;phi\u00ean b\u1ea3n ,&nbsp;<a href=\"https:\/\/api.linode.com\/v4\/regions\" target=\"_blank\" rel=\"noreferrer noopener\">v\u00f9ng<\/a>&nbsp;v\u00e0&nbsp;<a href=\"https:\/\/api.linode.com\/v4\/images\" target=\"_blank\" rel=\"noreferrer noopener\">h\u00ecnh \u1ea3nh<\/a>&nbsp;kh\u1ea3 d\u1ee5ng .<\/li>\n<\/ul>\n<p>5.\u00c1p d\u1ee5ng b\u1ea3n k\u00ea khai tri\u1ec3n khai theo c\u00e1ch t\u01b0\u01a1ng t\u1ef1 nh\u01b0 tri\u1ec3n khai t\u00e0i nguy\u00ean chu\u1ea9n cho c\u1ee5m Kubernetes:<\/p>\n<pre class=\"wp-block-code\"><code>kubectl apply -f deployment.yml<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>secret\/crossplane-secrets created\nproviderconfig.linode.upbound.io\/default created\ninstance.instance.linode.upbound.io\/web created<\/code><\/pre>\n<p>6.X\u00e1c minh r\u1eb1ng phi\u00ean b\u1ea3n \u0111\u00e3 \u0111\u01b0\u1ee3c tri\u1ec3n khai b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng l\u1ec7nh sau&nbsp;<code>kubectl<\/code>\u0111\u1ec3 l\u1ea5y danh s\u00e1ch&nbsp;<code>instance<\/code>t\u00e0i nguy\u00ean:<\/p>\n<pre class=\"wp-block-code\"><code>kubectl get instances<\/code><\/pre>\n<p>\u0110\u1ea7u ti\u00ean, b\u1ea1n s\u1ebd th\u1ea5y \u0111\u1ea7u ra nh\u01b0 th\u1ebf n\u00e0y, cho bi\u1ebft qu\u00e1 tr\u00ecnh cung c\u1ea5p phi\u00ean b\u1ea3n ch\u01b0a ho\u00e0n t\u1ea5t:<\/p>\n<pre class=\"wp-block-code\"><code>NAME   READY   SYNCED   EXTERNAL-NAME   AGE\nweb    False   True                     33s<\/code><\/pre>\n<p>\u0110\u1ee3i m\u1ed9t l\u00fac r\u1ed3i th\u1eed l\u1ea1i l\u1ec7nh, b\u1ea1n s\u1ebd th\u1ea5y phi\u00ean b\u1ea3n tr\u1edf th\u00e0nh&nbsp;<code>READY<\/code>, cho bi\u1ebft phi\u00ean b\u1ea3n Compute c\u1ee7a b\u1ea1n \u0111\u00e3 \u0111\u01b0\u1ee3c cung c\u1ea5p th\u00e0nh c\u00f4ng.<\/p>\n<pre class=\"wp-block-code\"><code>NAME   READY   SYNCED   EXTERNAL-NAME   AGE\nweb    True    True     45521497        2m46s<\/code><\/pre>\n<p>Ti\u1ebfp t\u1ee5c x\u00e1c minh vi\u1ec7c tri\u1ec3n khai th\u00e0nh c\u00f4ng th\u00f4ng qua Linode Cloud Manager. \u0110i\u1ec1u h\u01b0\u1edbng \u0111\u1ebfn ph\u1ea7n&nbsp;<strong>Linodes<\/strong>&nbsp;v\u00e0 b\u1ea1n s\u1ebd th\u1ea5y phi\u00ean b\u1ea3n Compute m\u1edbi \u0111\u01b0\u1ee3c li\u1ec7t k\u00ea. S\u1eed d\u1ee5ng v\u00ed d\u1ee5&nbsp;<code>deployment.yml<\/code>tr\u00ean, phi\u00ean b\u1ea3n m\u1edbi s\u1ebd \u0111\u01b0\u1ee3c \u0111\u1eb7t t\u00ean l\u00e0&nbsp;<code>crossplane-deployment-example<\/code>, nh\u01b0 \u0111\u01b0\u1ee3c hi\u1ec3n th\u1ecb \u1edf \u0111\u00e2y:<\/p>\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.linode.com\/docs\/guides\/getting-started-with-crossplane\/linode-crossplane-compute.png\"><img decoding=\"async\" src=\"https:\/\/www.linode.com\/docs\/guides\/getting-started-with-crossplane\/linode-crossplane-compute_small.png\" alt=\"M\u1ed9t phi\u00ean b\u1ea3n Linode Compute \u0111\u01b0\u1ee3c tri\u1ec3n khai v\u1edbi Crossplane.\" title=\"M\u1ed9t phi\u00ean b\u1ea3n Linode Compute \u0111\u01b0\u1ee3c tri\u1ec3n khai v\u1edbi Crossplane.\"\/><\/a><\/figure>\n<h2 id=\"conclusion\">Ph\u1ea7n k\u1ebft lu\u1eadn<a href=\"https:\/\/www.linode.com\/docs\/guides\/getting-started-with-crossplane\/#conclusion\"><\/a><\/h2>\n<p>V\u1edbi \u0111i\u1ec1u \u0111\u00f3, b\u1ea1n \u0111\u00e3 thi\u1ebft l\u1eadp m\u1ecdi th\u1ee9 \u0111\u1ec3 b\u1eaft \u0111\u1ea7u s\u1eed d\u1ee5ng Crossplane nh\u01b0 m\u1ed9t m\u1eb7t ph\u1eb3ng \u0111i\u1ec1u khi\u1ec3n chung. Tri\u1ec3n khai phi\u00ean b\u1ea3n Linode trong v\u00ed d\u1ee5 tr\u00ean cho b\u1ea1n th\u1ea5y nh\u1eefng \u0111i\u1ec1u c\u01a1 b\u1ea3n v\u1ec1 qu\u1ea3n l\u00fd c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng c\u1ee7a Crossplane. V\u00e0 kh\u00e1m ph\u00e1 v\u1edbi manifest tri\u1ec3n khai \u0111\u00f3 c\u00f3 th\u1ec3 cung c\u1ea5p cho b\u1ea1n nhi\u1ec1u \u00fd t\u01b0\u1edfng h\u01a1n v\u1ec1 c\u00e1ch Crossplane qu\u1ea3n l\u00fd c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng c\u1ee7a m\u00ecnh.<\/p>\n<p>Crossplane c\u0169ng l\u00e0 m\u1ed9t c\u00f4ng c\u1ee5 c\u1ef1c k\u1ef3 linh ho\u1ea1t v\u00e0 c\u00f3 c\u00e1c t\u00ednh n\u0103ng \u0111\u00e1p \u1ee9ng nhi\u1ec1u nhu c\u1ea7u v\u1ec1 c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng kh\u00e1c nhau. M\u1ed9t l\u0129nh v\u1ef1c c\u00f3 gi\u00e1 tr\u1ecb \u0111\u1ec3 kh\u00e1m ph\u00e1 th\u1ef1c s\u1ef1 l\u00e0 c\u00e1c t\u00ednh n\u0103ng&nbsp;<a href=\"https:\/\/kubernetes.io\/docs\/reference\/access-authn-authz\/rbac\/\" target=\"_blank\" rel=\"noreferrer noopener\">ki\u1ec3m so\u00e1t truy c\u1eadp d\u1ef1a tr\u00ean vai tr\u00f2 (RBAC)<\/a>&nbsp;c\u1ee7a Kubernetes . Crossplane c\u0169ng c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng c\u00e1c t\u00ednh n\u0103ng ki\u1ec3m so\u00e1t truy c\u1eadp m\u1ea1nh m\u1ebd n\u00e0y cho c\u00e1c m\u1eb7t ph\u1eb3ng \u0111i\u1ec1u khi\u1ec3n c\u1ee7a n\u00f3.<\/p>\n<p>\u0110\u1ec3 t\u00ecm hi\u1ec3u th\u00eam v\u1ec1 c\u00e1c kh\u00e1i ni\u1ec7m \u0111\u1eb1ng sau phi\u00ean b\u1ea3n Crossplane c\u1ee7a b\u1ea1n, h\u00e3y xem t\u00e0i li\u1ec7u&nbsp;<a href=\"https:\/\/docs.crossplane.io\/v1.12\/getting-started\/introduction\/\" target=\"_blank\" rel=\"noreferrer noopener\">gi\u1edbi thi\u1ec7u<\/a>&nbsp;c\u1ee7a Crossplane . T\u00e0i li\u1ec7u n\u00e0y \u0111\u1ec1 c\u1eadp \u0111\u1ebfn m\u1ed9t s\u1ed1 kh\u00e1i ni\u1ec7m quan tr\u1ecdng nh\u1ea5t \u0111\u1ec3 t\u1eadn d\u1ee5ng t\u1ed1i \u0111a c\u00e1c m\u1eb7t ph\u1eb3ng \u0111i\u1ec1u khi\u1ec3n c\u1ee7a b\u1ea1n. V\u00e0 \u0111\u1ec3 bi\u1ebft th\u00eam th\u00f4ng tin, h\u00e3y theo li\u00ean k\u1ebft b\u00ean d\u01b0\u1edbi \u0111\u1ebfn t\u00e0i li\u1ec7u Crossplane \u0111\u1ea7y \u0111\u1ee7.<\/p>\n<h2 id=\"more-information\">Th\u00f4ng tin th\u00eam<\/h2>\n<p>B\u1ea1n c\u00f3 th\u1ec3 mu\u1ed1n tham kh\u1ea3o c\u00e1c ngu\u1ed3n sau \u0111\u1ec3 bi\u1ebft th\u00eam th\u00f4ng tin v\u1ec1 ch\u1ee7 \u0111\u1ec1 n\u00e0y. M\u1eb7c d\u00f9 ch\u00fang t\u00f4i cung c\u1ea5p v\u1edbi hy v\u1ecdng r\u1eb1ng ch\u00fang s\u1ebd h\u1eefu \u00edch, nh\u01b0ng xin l\u01b0u \u00fd r\u1eb1ng ch\u00fang t\u00f4i kh\u00f4ng th\u1ec3 \u0111\u1ea3m b\u1ea3o t\u00ednh ch\u00ednh x\u00e1c ho\u1eb7c t\u00ednh k\u1ecbp th\u1eddi c\u1ee7a c\u00e1c t\u00e0i li\u1ec7u \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef b\u00ean ngo\u00e0i.<\/p>\n<ul>\n<li><a href=\"https:\/\/docs.crossplane.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">Crossplane: T\u00e0i li\u1ec7u<\/a><\/li>\n<\/ul>\n<p>Ngu\u1ed3n: https:\/\/www.linode.com\/docs\/guides\/getting-started-with-crossplane\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Crossplane cung c\u1ea5p ti\u1ec7n \u00edch m\u1edf r\u1ed9ng m\u00e3 ngu\u1ed3n m\u1edf cho Kubernetes \u0111\u1ec3 t\u1ea1o m\u1eb7t ph\u1eb3ng \u0111i\u1ec1u khi\u1ec3n chung. V\u1edbi Crossplane, b\u1ea1n c\u00f3 th\u1ec3 s\u1eafp x\u1ebfp v\u00e0 qu\u1ea3n l\u00fd to\u00e0n b\u1ed9 c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng r\u1ed9ng h\u01a1n c\u1ee7a m\u00ecnh b\u1eb1ng c\u00e1c c\u00f4ng c\u1ee5 Kubernetes. Crossplane c\u00f3 th\u1ec3 giao ti\u1ebfp v\u1edbi h\u1ea7u h\u1ebft m\u1ecdi API n\u1ec1n<\/p>\n","protected":false},"author":1,"featured_media":35670,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[106],"tags":[],"class_list":["post-34908","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-configuration-management"],"_links":{"self":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/34908","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/comments?post=34908"}],"version-history":[{"count":0,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/34908\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media\/35670"}],"wp:attachment":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media?parent=34908"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/categories?post=34908"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/tags?post=34908"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}