{"id":43558,"date":"2023-04-06T03:20:53","date_gmt":"2023-07-19T02:04:57","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e8%af%95%e7%94%a8oci-service-mesh\/"},"modified":"2024-04-29T22:08:34","modified_gmt":"2024-04-29T14:08:34","slug":"%e8%af%95%e7%94%a8oci-service-mesh","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e8%af%95%e7%94%a8oci-service-mesh\/","title":{"rendered":"\u8bd5\u7528OCI Service Mesh"},"content":{"rendered":"<h1>\u9996\u5148<\/h1>\n<p>\u6211\u5011\u5c07\u6309\u7167\u4ee5\u4e0b\u624b\u518a\u7684\u6307\u793a\u4f86\u5617\u8a66OCI\u670d\u52d9\u7db2\u683c\u3002<\/p>\n<p>&nbsp;<\/p>\n<h1>\u9884\u5148\u51c6\u5907<\/h1>\n<h2>\u521b\u5efa OKE \u96c6\u7fa4<\/h2>\n<p>\u6211\u5df2\u4e8b\u5148\u521b\u5efa\u4ee5\u4e0b\u7684\u96c6\u7fa4\u3002<\/p>\n<pre class=\"post-pre\"><code>$ k get node\r\nNAME         STATUS   ROLES   AGE   VERSION\r\n10.0.1.223   Ready    node    29h   v1.26.2\r\n<\/code><\/pre>\n<p>\u8981\u4f7f\u7528Service Mesh\uff0c\u9700\u8981\u6ee1\u8db3\u4ee5\u4e0b\u524d\u63d0\u6761\u4ef6\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">OCI VCN-Native Pod Networking<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Oracle Linux 7<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">Kubernetes 1.26\u4ee5\u964d<\/ul>\n<h2>\u5ba2\u6237\u7684\u51c6\u5907<\/h2>\n<p>\u4f5c\u4e3a\u64cd\u4f5c\u5ba2\u6237\u7aef\uff0c\u5728Oracle Linux\u4e0a\u521b\u5efa\u4e86\u865a\u62df\u673a\u3002<\/p>\n<pre class=\"post-pre\"><code>$ cat \/etc\/oracle-release \r\nOracle Linux Server release 8.8\r\n$ kubectl version --short\r\nClient Version: v1.27.2\r\nKustomize Version: v5.0.1\r\nServer Version: v1.26.2\r\n$ docker -v\r\nDocker version 24.0.2, build cb74dfc\r\n$ oci -v\r\n3.23.2\r\n<\/code><\/pre>\n<h3>\u786e\u8ba4Python\u73af\u5883\uff0c\u5b89\u88c5<\/h3>\n<p>Python\u5df2\u7ecf\u5b89\u88c5\u597d\u4e86\u3002<\/p>\n<pre class=\"post-pre\"><code>$ python3 --version\r\nPython 3.6.8\r\n$ pip3 -V\r\npip 9.0.3 from \/usr\/lib\/python3.6\/site-packages (python 3.6)\r\n<\/code><\/pre>\n<p>\u6211\u5c06\u5b89\u88c5Wrapper\u3002<\/p>\n<pre class=\"post-pre\"><code>$ pip3 install --user virtualenv\r\nCollecting virtualenv\r\n  Downloading https:\/\/files.pythonhosted.org\/packages\/18\/a2\/7931d40ecb02b5236a34ac53770f2f6931e3082b7a7dafe915d892d749d6\/virtualenv-20.17.1-py3-none-any.whl (8.8MB)\r\n    100% |\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 8.9MB 199kB\/s \r\nCollecting distlib&lt;1,&gt;=0.3.6 (from virtualenv)\r\n  Downloading https:\/\/files.pythonhosted.org\/packages\/76\/cb\/6bbd2b10170ed991cf64e8c8b85e01f2fb38f95d1bc77617569e0b0b26ac\/distlib-0.3.6-py2.py3-none-any.whl (468kB)\r\n    100% |\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 471kB 3.6MB\/s \r\nCollecting importlib-metadata&gt;=4.8.3; python_version &lt; \"3.8\" (from virtualenv)\r\n  Downloading https:\/\/files.pythonhosted.org\/packages\/a0\/a1\/b153a0a4caf7a7e3f15c2cd56c7702e2cf3d89b1b359d1f1c5e59d68f4ce\/importlib_metadata-4.8.3-py3-none-any.whl\r\nCollecting filelock&lt;4,&gt;=3.4.1 (from virtualenv)\r\n  Downloading https:\/\/files.pythonhosted.org\/packages\/84\/ce\/8916d10ef537f3f3b046843255f9799504aa41862bfa87844b9bdc5361cd\/filelock-3.4.1-py3-none-any.whl\r\nCollecting importlib-resources&gt;=5.4; python_version &lt; \"3.7\" (from virtualenv)\r\n  Downloading https:\/\/files.pythonhosted.org\/packages\/24\/1b\/33e489669a94da3ef4562938cd306e8fa915e13939d7b8277cb5569cb405\/importlib_resources-5.4.0-py3-none-any.whl\r\nCollecting platformdirs&lt;3,&gt;=2.4 (from virtualenv)\r\n  Downloading https:\/\/files.pythonhosted.org\/packages\/b1\/78\/dcfd84d3aabd46a9c77260fb47ea5d244806e4daef83aa6fe5d83adb182c\/platformdirs-2.4.0-py3-none-any.whl\r\nRequirement already satisfied: typing-extensions&gt;=3.6.4; python_version &lt; \"3.8\" in \/usr\/lib\/python3.6\/site-packages (from importlib-metadata&gt;=4.8.3; python_version &lt; \"3.8\"-&gt;virtualenv)\r\nCollecting zipp&gt;=0.5 (from importlib-metadata&gt;=4.8.3; python_version &lt; \"3.8\"-&gt;virtualenv)\r\n  Downloading https:\/\/files.pythonhosted.org\/packages\/bd\/df\/d4a4974a3e3957fd1c1fa3082366d7fff6e428ddb55f074bf64876f8e8ad\/zipp-3.6.0-py3-none-any.whl\r\nInstalling collected packages: distlib, zipp, importlib-metadata, filelock, importlib-resources, platformdirs, virtualenv\r\nSuccessfully installed distlib-0.3.6 filelock-3.4.1 importlib-metadata-4.8.3 importlib-resources-5.4.0 platformdirs-2.4.0 virtualenv-20.17.1 zipp-3.6.0\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>$ pip3 install --user virtualenvwrapper\r\nCollecting virtualenvwrapper\r\n  Downloading https:\/\/files.pythonhosted.org\/packages\/c1\/6b\/2f05d73b2d2f2410b48b90d3783a0034c26afa534a4a95ad5f1178d61191\/virtualenvwrapper-4.8.4.tar.gz (334kB)\r\n    100% |\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 337kB 4.2MB\/s \r\nRequirement already satisfied: virtualenv in .\/.local\/lib\/python3.6\/site-packages (from virtualenvwrapper)\r\nCollecting virtualenv-clone (from virtualenvwrapper)\r\n  Downloading https:\/\/files.pythonhosted.org\/packages\/21\/ac\/e07058dc5a6c1b97f751d24f20d4b0ec14d735d77f4a1f78c471d6d13a43\/virtualenv_clone-0.5.7-py3-none-any.whl\r\nCollecting stevedore (from virtualenvwrapper)\r\n  Downloading https:\/\/files.pythonhosted.org\/packages\/6d\/8d\/8dbd1e502e06e58550ed16c879303f83609d52ac31de0cd6a2403186148a\/stevedore-3.5.2-py3-none-any.whl (50kB)\r\n    100% |\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 51kB 11.8MB\/s \r\nRequirement already satisfied: platformdirs&lt;3,&gt;=2.4 in .\/.local\/lib\/python3.6\/site-packages (from virtualenv-&gt;virtualenvwrapper)\r\nRequirement already satisfied: distlib&lt;1,&gt;=0.3.6 in .\/.local\/lib\/python3.6\/site-packages (from virtualenv-&gt;virtualenvwrapper)\r\nRequirement already satisfied: importlib-resources&gt;=5.4; python_version &lt; \"3.7\" in .\/.local\/lib\/python3.6\/site-packages (from virtualenv-&gt;virtualenvwrapper)\r\nRequirement already satisfied: filelock&lt;4,&gt;=3.4.1 in .\/.local\/lib\/python3.6\/site-packages (from virtualenv-&gt;virtualenvwrapper)\r\nRequirement already satisfied: importlib-metadata&gt;=4.8.3; python_version &lt; \"3.8\" in .\/.local\/lib\/python3.6\/site-packages (from virtualenv-&gt;virtualenvwrapper)\r\nCollecting pbr!=2.1.0,&gt;=2.0.0 (from stevedore-&gt;virtualenvwrapper)\r\n  Downloading https:\/\/files.pythonhosted.org\/packages\/01\/06\/4ab11bf70db5a60689fc521b636849c8593eb67a2c6bdf73a16c72d16a12\/pbr-5.11.1-py2.py3-none-any.whl (112kB)\r\n    100% |\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 122kB 12.2MB\/s \r\nRequirement already satisfied: zipp&gt;=3.1.0; python_version &lt; \"3.10\" in .\/.local\/lib\/python3.6\/site-packages (from importlib-resources&gt;=5.4; python_version &lt; \"3.7\"-&gt;virtualenv-&gt;virtualenvwrapper)\r\nRequirement already satisfied: typing-extensions&gt;=3.6.4; python_version &lt; \"3.8\" in \/usr\/lib\/python3.6\/site-packages (from importlib-metadata&gt;=4.8.3; python_version &lt; \"3.8\"-&gt;virtualenv-&gt;virtualenvwrapper)\r\nInstalling collected packages: virtualenv-clone, pbr, stevedore, virtualenvwrapper\r\n  Running setup.py install for virtualenvwrapper ... done\r\nSuccessfully installed pbr-5.11.1 stevedore-3.5.2 virtualenv-clone-0.5.7 virtualenvwrapper-4.8.4\r\n<\/code><\/pre>\n<p>\u68c0\u67e5\u5df2\u5b89\u88c5\u7684\u811a\u672c\u3002<\/p>\n<pre class=\"post-pre\"><code>$ ls -l .local\/bin\/virtualenvwrapper.sh \r\n-rwxrwxr-x. 1 opc opc 41703 Feb  9  2019 .local\/bin\/virtualenvwrapper.sh\r\n<\/code><\/pre>\n<p>\u5728.bashrc\u6587\u4ef6\u4e2d\u6dfb\u52a0\u4ee5\u4e0b\u5185\u5bb9\u5e76\u751f\u6548\u3002<\/p>\n<pre class=\"post-pre\"><code>\u30fb\u30fb\u30fb\r\n<span class=\"c\"># set up Python env<\/span>\r\n<span class=\"nb\">export <\/span><span class=\"nv\">WORKON_HOME<\/span><span class=\"o\">=<\/span>~\/envs\r\n<span class=\"nb\">export <\/span><span class=\"nv\">VIRTUALENVWRAPPER_PYTHON<\/span><span class=\"o\">=<\/span>\/usr\/bin\/python3\r\n<span class=\"nb\">export <\/span><span class=\"nv\">VIRTUALENVWRAPPER_VIRTUALENV_ARGS<\/span><span class=\"o\">=<\/span><span class=\"s1\">' -p \/usr\/bin\/python3 '<\/span>\r\n<span class=\"nb\">source<\/span> \/home\/opc\/.local\/bin\/virtualenvwrapper.sh\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>$ source ~\/.bashrc\r\nvirtualenvwrapper.user_scripts creating \/home\/opc\/envs\/premkproject\r\nvirtualenvwrapper.user_scripts creating \/home\/opc\/envs\/postmkproject\r\nvirtualenvwrapper.user_scripts creating \/home\/opc\/envs\/initialize\r\nvirtualenvwrapper.user_scripts creating \/home\/opc\/envs\/premkvirtualenv\r\nvirtualenvwrapper.user_scripts creating \/home\/opc\/envs\/postmkvirtualenv\r\nvirtualenvwrapper.user_scripts creating \/home\/opc\/envs\/prermvirtualenv\r\nvirtualenvwrapper.user_scripts creating \/home\/opc\/envs\/postrmvirtualenv\r\nvirtualenvwrapper.user_scripts creating \/home\/opc\/envs\/predeactivate\r\nvirtualenvwrapper.user_scripts creating \/home\/opc\/envs\/postdeactivate\r\nvirtualenvwrapper.user_scripts creating \/home\/opc\/envs\/preactivate\r\nvirtualenvwrapper.user_scripts creating \/home\/opc\/envs\/postactivate\r\nvirtualenvwrapper.user_scripts creating \/home\/opc\/envs\/get_env_details\r\n<\/code><\/pre>\n<h2>\u521b\u5efa\u8ba4\u8bc1\u4ee4\u724c<\/h2>\n<p>\u901a\u8fc7OCI\u63a7\u5236\u53f0\u7684\u7528\u6237\u754c\u9762\u521b\u5efa\u8ba4\u8bc1\u4ee4\u724c\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d534637434c4406ccf22b\/26-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2023-06-13 10.47.28.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d534637434c4406ccf22b\/27-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2023-06-13 10.47.51.png\" \/><\/div>\n<p>\u5c06\u590d\u5236\u7684\u4ee4\u724c\u4fdd\u5b58\u5728\u6587\u672c\u7f16\u8f91\u5668\u7b49\u8f6f\u4ef6\u4e2d\u5907\u5fd8\u3002<\/p>\n<h2>\u6536\u96c6\u5fc5\u8981\u7684\u4fe1\u606f<\/h2>\n<p>\u6211\u4f1a\u628a\u4ee5\u4e0b\u5728\u672a\u6765\u9700\u8981\u7684\u4fe1\u606f\u8bb0\u4e0b\u6765\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30c6\u30ca\u30f3\u30b7\u30fc\u540d<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b9\u30c8\u30ec\u30fc\u30b8\u30fb\u30cd\u30fc\u30e0\u30b9\u30da\u30fc\u30b9<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30c6\u30ca\u30f3\u30b7\u30fcOCID<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30e6\u30fc\u30b6\u540d<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30e6\u30fc\u30b6OCID<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30ea\u30fc\u30b8\u30e7\u30f3<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30ea\u30fc\u30b8\u30e7\u30f3\u30ad\u30fc<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30b3\u30f3\u30d1\u30fc\u30c8\u30e1\u30f3\u30c8OCID<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\u52d5\u7684\u30b0\u30eb\u30fc\u30d7OCID<\/ul>\n<h2>\u8bbe\u5b9a\u653f\u7b56<\/h2>\n<p>\u6839\u636e\u6743\u9650\u7684\u5173\u7cfb\uff0c\u672c\u6b21\u4ec5\u5bf9\u4e00\u4e2a\u52a8\u6001\u7ec4\u8bbe\u7f6e\u4e86\u4ee5\u4e0b\u7b56\u7565\uff0c\u5c3d\u7ba1\u624b\u518c\u4e2d\u53ef\u80fd\u4f1a\u4e3a\u591a\u4e2a\u52a8\u6001\u7ec4\u8bbe\u7f6e\u7b56\u7565\u3002<\/p>\n<pre class=\"post-pre\"><code>Allow dynamic-group \u52d5\u7684\u30b0\u30eb\u30fc\u30d7\u540d to use keys in compartment \u30b3\u30f3\u30d1\u30fc\u30c8\u30e1\u30f3\u30c8\u540d\r\nAllow dynamic-group \u52d5\u7684\u30b0\u30eb\u30fc\u30d7\u540d to manage objects in compartment \u30b3\u30f3\u30d1\u30fc\u30c8\u30e1\u30f3\u30c8\u540d\r\nAllow dynamic-group \u52d5\u7684\u30b0\u30eb\u30fc\u30d7\u540d to manage service-mesh-family in compartment \u30b3\u30f3\u30d1\u30fc\u30c8\u30e1\u30f3\u30c8\u540d\r\nAllow dynamic-group \u52d5\u7684\u30b0\u30eb\u30fc\u30d7\u540d to read certificate-authority-family in compartment \u30b3\u30f3\u30d1\u30fc\u30c8\u30e1\u30f3\u30c8\u540d\r\nAllow dynamic-group \u52d5\u7684\u30b0\u30eb\u30fc\u30d7\u540d to use certificate-authority-delegates in compartment \u30b3\u30f3\u30d1\u30fc\u30c8\u30e1\u30f3\u30c8\u540d\r\nAllow dynamic-group \u52d5\u7684\u30b0\u30eb\u30fc\u30d7\u540d to manage leaf-certificate-family in compartment \u30b3\u30f3\u30d1\u30fc\u30c8\u30e1\u30f3\u30c8\u540d\r\nAllow dynamic-group \u52d5\u7684\u30b0\u30eb\u30fc\u30d7\u540d to manage certificate-authority-associations in compartment \u30b3\u30f3\u30d1\u30fc\u30c8\u30e1\u30f3\u30c8\u540d\r\nAllow dynamic-group \u52d5\u7684\u30b0\u30eb\u30fc\u30d7\u540d to manage certificate-associations in compartment \u30b3\u30f3\u30d1\u30fc\u30c8\u30e1\u30f3\u30c8\u540d\r\nAllow dynamic-group \u52d5\u7684\u30b0\u30eb\u30fc\u30d7\u540d to manage cabundle-associations in compartment \u30b3\u30f3\u30d1\u30fc\u30c8\u30e1\u30f3\u30c8\u540d\r\nAllow dynamic-group \u52d5\u7684\u30b0\u30eb\u30fc\u30d7\u540d to use metrics in compartment \u30b3\u30f3\u30d1\u30fc\u30c8\u30e1\u30f3\u30c8\u540d\r\nAllow dynamic-group \u52d5\u7684\u30b0\u30eb\u30fc\u30d7\u540d to use log-content in compartment \u30b3\u30f3\u30d1\u30fc\u30c8\u30e1\u30f3\u30c8\u540d\r\n<\/code><\/pre>\n<h2>\u521b\u5efaVault<\/h2>\n<p>\u521b\u5efaVault\u5e76\u521b\u5efa\u4e0e\u4e4b\u76f8\u5173\u8054\u7684\u4e3b\u52a0\u5bc6\u5bc6\u94a5\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d534637434c4406ccf22b\/37-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2023-06-13 14.23.13.png\" \/><\/div>\n<h3>\u521b\u5efa\u4e3b\u52a0\u5bc6\u5bc6\u94a5<\/h3>\n<p>\u4e3a\u4e86\u5728\u4ee5\u540e\u7684\u8ba4\u8bc1\u673a\u6784\u4e2d\u4f7f\u7528\uff0c\u9700\u8981HSM\u548c2048\u4f4d\u62164096\u4f4dRSA\u5bc6\u94a5\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d534637434c4406ccf22b\/40-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2023-06-13 14.31.32.png\" \/><\/div>\n<h2>\u5275\u5efa\u8a8d\u8b49\u6a5f\u69cb<\/h2>\n<p>\u6211\u5011\u5c07\u5728\u4ee5\u4e0b\u8a2d\u5b9a\u4e2d\u5efa\u7acb\u8a8d\u8b49\u6a5f\u69cb\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d534637434c4406ccf22b\/43-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2023-06-13 14.28.46.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d534637434c4406ccf22b\/44-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2023-06-13 14.29.23.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d534637434c4406ccf22b\/45-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2023-06-13 14.33.25.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d534637434c4406ccf22b\/46-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2023-06-13 14.33.42.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d534637434c4406ccf22b\/47-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2023-06-13 14.34.17.png\" \/><\/div>\n<h1>\u670d\u52a1\u7f51\u683c\u7684\u67b6\u6784<\/h1>\n<h2>OCI \u670d\u52a1\u64cd\u4f5c\u5458\u7684\u5b89\u88c5<\/h2>\n<p>\u4e3a\u4e86\u7ba1\u7406\u6765\u81eaKubernetes\u73af\u5883\u7684OCI\u8d44\u6e90\uff0c\u9700\u8981\u5b89\u88c5\u9002\u7528\u4e8eKubernetes\u7684OCI Service Operator\u3002<\/p>\n<h3>Operator SDK\u7684\u5b89\u88c5<\/h3>\n<p>\u6309\u7167\u4ee5\u4e0b\u6b65\u9aa4\u5b89\u88c5Operator SDK\u3002<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code>$ export ARCH=$(case $(uname -m) in x86_64) echo -n amd64 ;; aarch64) echo -n arm64 ;; *) echo -n $(uname -m) ;; esac)\r\n$ export OS=$(uname | awk '{print tolower($0)}')\r\n$ export OPERATOR_SDK_DL_URL=https:\/\/github.com\/operator-framework\/operator-sdk\/releases\/download\/v1.29.0\r\n$ curl -LO ${OPERATOR_SDK_DL_URL}\/operator-sdk_${OS}_${ARCH}\r\n  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\r\n                                 Dload  Upload   Total   Spent    Left  Speed\r\n  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\r\n100 83.8M  100 83.8M    0     0  19.2M      0  0:00:04  0:00:04 --:--:-- 23.4M\r\n$ ls -l operator-sdk_linux_amd64 \r\n-rw-rw-r--. 1 opc opc 87967310 Jun 13 05:44 operator-sdk_linux_amd64\r\n<\/code><\/pre>\n<p>\u6821\u9a8c\u548c\u7684\u9a8c\u8bc1<\/p>\n<pre class=\"post-pre\"><code>$ gpg --keyserver keyserver.ubuntu.com --recv-keys 052996E2A20B5C7E\r\ngpg: directory '\/home\/opc\/.gnupg' created\r\ngpg: keybox '\/home\/opc\/.gnupg\/pubring.kbx' created\r\ngpg: \/home\/opc\/.gnupg\/trustdb.gpg: trustdb created\r\ngpg: key 052996E2A20B5C7E: public key \"Operator SDK (release) &lt;cncf-operator-sdk@cncf.io&gt;\" imported\r\ngpg: Total number processed: 1\r\ngpg:               imported: 1\r\n$ curl -LO ${OPERATOR_SDK_DL_URL}\/checksums.txt\r\n  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\r\n                                 Dload  Upload   Total   Spent    Left  Speed\r\n  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\r\n100  1680  100  1680    0     0   2181      0 --:--:-- --:--:-- --:--:--  2181\r\n$ curl -LO ${OPERATOR_SDK_DL_URL}\/checksums.txt.asc\r\n  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\r\n                                 Dload  Upload   Total   Spent    Left  Speed\r\n  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\r\n100   566  100   566    0     0    756      0 --:--:-- --:--:-- --:--:--   756\r\n$ gpg -u \"Operator SDK (release) &lt;cncf-operator-sdk@cncf.io&gt;\" --verify checksums.txt.asc\r\ngpg: assuming signed data in 'checksums.txt'\r\ngpg: Signature made Wed May 31 20:38:19 2023 GMT\r\ngpg:                using RSA key 8613DB87A5BA825EF3FD0EBE2A859D08BF9886DB\r\ngpg: Good signature from \"Operator SDK (release) &lt;cncf-operator-sdk@cncf.io&gt;\" [unknown]\r\ngpg: WARNING: This key is not certified with a trusted signature!\r\ngpg:          There is no indication that the signature belongs to the owner.\r\nPrimary key fingerprint: 3B2F 1481 D146 2380 80B3  46BB 0529 96E2 A20B 5C7E\r\n     Subkey fingerprint: 8613 DB87 A5BA 825E F3FD  0EBE 2A85 9D08 BF98 86DB\r\n$ grep operator-sdk_${OS}_${ARCH} checksums.txt | sha256sum -c -\r\noperator-sdk_linux_amd64: OK\r\n<\/code><\/pre>\n<p>\u5c06\u5df2\u4e0b\u8f7d\u7684\u4e8c\u8fdb\u5236\u6587\u4ef6\u79fb\u52a8\u5230\u5df2\u914d\u7f6e\u597d\u7684PATH\u8def\u5f84\u4e2d\u3002<\/p>\n<pre class=\"post-pre\"><code>$ chmod +x operator-sdk_${OS}_${ARCH} &amp;&amp; sudo mv operator-sdk_${OS}_${ARCH} \/usr\/local\/bin\/operator-sdk\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>$ operator-sdk version\r\noperator-sdk version: \"v1.29.0\", commit: \"78c564319585c0c348d1d7d9bbfeed1098fab006\", kubernetes version: \"1.26.0\", go version: \"go1.19.9\", GOOS: \"linux\", GOARCH: \"amd64\"\r\n<\/code><\/pre>\n<h3>\u5b89\u88c5Operator Lifecycle Manager (OLM)<\/h3>\n<pre class=\"post-pre\"><code>$ operator-sdk olm install\r\nINFO[0005] Fetching CRDs for version \"latest\"           \r\nINFO[0005] Fetching resources for resolved version \"latest\" \r\nINFO[0015] Creating CRDs and resources                  \r\nINFO[0015]   Creating CustomResourceDefinition \"catalogsources.operators.coreos.com\" \r\nINFO[0015]   Creating CustomResourceDefinition \"clusterserviceversions.operators.coreos.com\" \r\nINFO[0016]   Creating CustomResourceDefinition \"installplans.operators.coreos.com\" \r\nINFO[0016]   Creating CustomResourceDefinition \"olmconfigs.operators.coreos.com\" \r\nINFO[0016]   Creating CustomResourceDefinition \"operatorconditions.operators.coreos.com\" \r\nINFO[0016]   Creating CustomResourceDefinition \"operatorgroups.operators.coreos.com\" \r\nINFO[0017]   Creating CustomResourceDefinition \"operators.operators.coreos.com\" \r\nINFO[0017]   Creating CustomResourceDefinition \"subscriptions.operators.coreos.com\" \r\nINFO[0017]   Creating Namespace \"olm\"                   \r\nINFO[0017]   Creating Namespace \"operators\"             \r\nINFO[0018]   Creating ServiceAccount \"olm\/olm-operator-serviceaccount\" \r\nINFO[0018]   Creating ClusterRole \"system:controller:operator-lifecycle-manager\" \r\nINFO[0018]   Creating ClusterRoleBinding \"olm-operator-binding-olm\" \r\nINFO[0018]   Creating OLMConfig \"cluster\"               \r\nINFO[0019]   Creating Deployment \"olm\/olm-operator\"     \r\nINFO[0019]   Creating Deployment \"olm\/catalog-operator\" \r\nINFO[0019]   Creating ClusterRole \"aggregate-olm-edit\"  \r\nINFO[0019]   Creating ClusterRole \"aggregate-olm-view\"  \r\nINFO[0020]   Creating OperatorGroup \"operators\/global-operators\" \r\nINFO[0020]   Creating OperatorGroup \"olm\/olm-operators\" \r\nINFO[0020]   Creating ClusterServiceVersion \"olm\/packageserver\" \r\nINFO[0020]   Creating CatalogSource \"olm\/operatorhubio-catalog\" \r\nINFO[0021] Waiting for deployment\/olm-operator rollout to complete \r\nINFO[0021]   Waiting for Deployment \"olm\/olm-operator\" to rollout: 0 of 1 updated replicas are available \r\nINFO[0031]   Deployment \"olm\/olm-operator\" successfully rolled out \r\nINFO[0031] Waiting for deployment\/catalog-operator rollout to complete \r\nINFO[0031]   Waiting for Deployment \"olm\/catalog-operator\" to rollout: 0 of 1 updated replicas are available \r\nINFO[0032]   Deployment \"olm\/catalog-operator\" successfully rolled out \r\nINFO[0032] Waiting for deployment\/packageserver rollout to complete \r\nINFO[0032]   Waiting for Deployment \"olm\/packageserver\" to rollout: 0 of 2 updated replicas are available \r\nINFO[0039]   Deployment \"olm\/packageserver\" successfully rolled out \r\nINFO[0042] Successfully installed OLM version \"latest\"  \r\n\r\nNAME                                            NAMESPACE    KIND                        STATUS\r\ncatalogsources.operators.coreos.com                          CustomResourceDefinition    Installed\r\nclusterserviceversions.operators.coreos.com                  CustomResourceDefinition    Installed\r\ninstallplans.operators.coreos.com                            CustomResourceDefinition    Installed\r\nolmconfigs.operators.coreos.com                              CustomResourceDefinition    Installed\r\noperatorconditions.operators.coreos.com                      CustomResourceDefinition    Installed\r\noperatorgroups.operators.coreos.com                          CustomResourceDefinition    Installed\r\noperators.operators.coreos.com                               CustomResourceDefinition    Installed\r\nsubscriptions.operators.coreos.com                           CustomResourceDefinition    Installed\r\nolm                                                          Namespace                   Installed\r\noperators                                                    Namespace                   Installed\r\nolm-operator-serviceaccount                     olm          ServiceAccount              Installed\r\nsystem:controller:operator-lifecycle-manager                 ClusterRole                 Installed\r\nolm-operator-binding-olm                                     ClusterRoleBinding          Installed\r\ncluster                                                      OLMConfig                   Installed\r\nolm-operator                                    olm          Deployment                  Installed\r\ncatalog-operator                                olm          Deployment                  Installed\r\naggregate-olm-edit                                           ClusterRole                 Installed\r\naggregate-olm-view                                           ClusterRole                 Installed\r\nglobal-operators                                operators    OperatorGroup               Installed\r\nolm-operators                                   olm          OperatorGroup               Installed\r\npackageserver                                   olm          ClusterServiceVersion       Installed\r\noperatorhubio-catalog                           olm          CatalogSource               Installed\r\n<\/code><\/pre>\n<p>\u6211\u660e\u767d\u4e86\u3002<\/p>\n<pre class=\"post-pre\"><code>$ operator-sdk olm status\r\nINFO[0012] Fetching CRDs for version \"v0.24.0\"          \r\nINFO[0012] Fetching resources for resolved version \"v0.24.0\" \r\nINFO[0018] Successfully got OLM status for version \"v0.24.0\" \r\n\r\nNAME                                            NAMESPACE    KIND                        STATUS\r\nolm-operators                                   olm          OperatorGroup               Installed\r\noperators.operators.coreos.com                               CustomResourceDefinition    Installed\r\noperatorconditions.operators.coreos.com                      CustomResourceDefinition    Installed\r\ncatalog-operator                                olm          Deployment                  Installed\r\nolm-operator-binding-olm                                     ClusterRoleBinding          Installed\r\noperatorhubio-catalog                           olm          CatalogSource               Installed\r\nsubscriptions.operators.coreos.com                           CustomResourceDefinition    Installed\r\nsystem:controller:operator-lifecycle-manager                 ClusterRole                 Installed\r\ninstallplans.operators.coreos.com                            CustomResourceDefinition    Installed\r\noperatorgroups.operators.coreos.com                          CustomResourceDefinition    Installed\r\nolm                                                          Namespace                   Installed\r\ncluster                                                      OLMConfig                   Installed\r\npackageserver                                   olm          ClusterServiceVersion       Installed\r\noperators                                                    Namespace                   Installed\r\ncatalogsources.operators.coreos.com                          CustomResourceDefinition    Installed\r\nolm-operator                                    olm          Deployment                  Installed\r\nglobal-operators                                operators    OperatorGroup               Installed\r\naggregate-olm-view                                           ClusterRole                 Installed\r\naggregate-olm-edit                                           ClusterRole                 Installed\r\nolmconfigs.operators.coreos.com                              CustomResourceDefinition    Installed\r\nclusterserviceversions.operators.coreos.com                  CustomResourceDefinition    Installed\r\nolm-operator-serviceaccount                     olm          ServiceAccount              Installed\r\n<\/code><\/pre>\n<p>\u6211\u4e5f\u4f1a\u68c0\u67e5olm\u547d\u540d\u7a7a\u95f4\u7684\u8d44\u6e90\u3002<\/p>\n<pre class=\"post-pre\"><code>$ k -n olm get all\r\nNAME                                    READY   STATUS    RESTARTS   AGE\r\npod\/catalog-operator-77b8589cd8-xtt7v   1\/1     Running   0          4m1s\r\npod\/olm-operator-5ccf676d8b-9gkmw       1\/1     Running   0          4m1s\r\npod\/operatorhubio-catalog-nfdxj         1\/1     Running   0          3m51s\r\npod\/packageserver-5cd5d8b9fd-md8f5      1\/1     Running   0          3m50s\r\npod\/packageserver-5cd5d8b9fd-xm9sl      1\/1     Running   0          3m50s\r\n\r\nNAME                            TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)     AGE\r\nservice\/operatorhubio-catalog   ClusterIP   10.96.79.110   &lt;none&gt;        50051\/TCP   3m50s\r\nservice\/packageserver-service   ClusterIP   10.96.60.180   &lt;none&gt;        5443\/TCP    3m50s\r\n\r\nNAME                               READY   UP-TO-DATE   AVAILABLE   AGE\r\ndeployment.apps\/catalog-operator   1\/1     1            1           4m1s\r\ndeployment.apps\/olm-operator       1\/1     1            1           4m1s\r\ndeployment.apps\/packageserver      2\/2     2            2           3m50s\r\n\r\nNAME                                          DESIRED   CURRENT   READY   AGE\r\nreplicaset.apps\/catalog-operator-77b8589cd8   1         1         1       4m1s\r\nreplicaset.apps\/olm-operator-5ccf676d8b       1         1         1       4m1s\r\nreplicaset.apps\/packageserver-5cd5d8b9fd      2         2         2       3m50s\r\n<\/code><\/pre>\n<p>\u521b\u5efa\u4e13\u95e8\u7528\u4e8eOperator\u7684\u547d\u540d\u7a7a\u95f4\u3002<\/p>\n<pre class=\"post-pre\"><code>$ kubectl create ns oci-service-operator-system\r\nnamespace\/oci-service-operator-system created\r\n$ k get ns\r\nNAME                          STATUS   AGE\r\ndefault                       Active   5h12m\r\nkube-node-lease               Active   5h12m\r\nkube-public                   Active   5h12m\r\nkube-system                   Active   5h12m\r\noci-service-operator-system   Active   10s\r\nolm                           Active   19m\r\noperators                     Active   19m\r\n<\/code><\/pre>\n<p>\u5728\u521b\u5efa\u7684\u547d\u540d\u7a7a\u95f4\u4e2d\u5b89\u88c5 Kubernetes Operator \u7684 OCI \u670d\u52a1\u64cd\u4f5c\u5458\u3002<\/p>\n<pre class=\"post-pre\"><code>$ operator-sdk run bundle iad.ocir.io\/oracle\/oci-service-operator-bundle:1.1.8 -n oci-service-operator-system --timeout 5m\r\nINFO[0017] Creating a File-Based Catalog of the bundle \"iad.ocir.io\/oracle\/oci-service-operator-bundle:1.1.8\" \r\nINFO[0019] Generated a valid File-Based Catalog         \r\nINFO[0025] Created registry pod: iad-ocir-io-oracle-oci-service-operator-bundle-1-1-8 \r\nINFO[0026] Created CatalogSource: oci-service-operator-catalog \r\nINFO[0026] OperatorGroup \"operator-sdk-og\" created      \r\nINFO[0026] Created Subscription: oci-service-operator-v1-1-8-sub \r\nINFO[0031] Approved InstallPlan install-zk7s4 for the Subscription: oci-service-operator-v1-1-8-sub \r\nINFO[0031] Waiting for ClusterServiceVersion \"oci-service-operator-system\/oci-service-operator.v1.1.8\" to reach 'Succeeded' phase \r\nINFO[0031]   Waiting for ClusterServiceVersion \"oci-service-operator-system\/oci-service-operator.v1.1.8\" to appear \r\nINFO[0049]   Found ClusterServiceVersion \"oci-service-operator-system\/oci-service-operator.v1.1.8\" phase: Pending \r\nINFO[0050]   Found ClusterServiceVersion \"oci-service-operator-system\/oci-service-operator.v1.1.8\" phase: InstallReady \r\nINFO[0053]   Found ClusterServiceVersion \"oci-service-operator-system\/oci-service-operator.v1.1.8\" phase: Installing \r\nINFO[0064]   Found ClusterServiceVersion \"oci-service-operator-system\/oci-service-operator.v1.1.8\" phase: Succeeded \r\nINFO[0065] OLM has successfully installed \"oci-service-operator.v1.1.8\" \r\n<\/code><\/pre>\n<h3>&#8220;\u5b89\u88c5Metrics Server&#8221;<\/h3>\n<p>\u5b89\u88c5\u5e76\u786e\u8ba4Metrics Server\u3002<br \/>\n\uff08\u987a\u4fbf\u63d0\u4e00\u4e0b\uff0c\u4f7f\u7528\u624b\u518c\u4e2d\u7684\u6e05\u5355\u7248\u672c\u5bfc\u81f4PodDisruptionBudget\u7684API\u7248\u672c\u8fc7\u65e7\u800c\u51fa\u73b0\u9519\u8bef\uff0c\u6240\u4ee5\u6211\u4eec\u4f7f\u7528\u6700\u65b0\u7684\u6e05\u5355\u7248\u672c\u3002\uff09<\/p>\n<pre class=\"post-pre\"><code>kubectl apply -f https:\/\/github.com\/kubernetes-sigs\/metrics-server\/releases\/latest\/download\/high-availability-1.21+.yaml\r\nserviceaccount\/metrics-server created\r\nclusterrole.rbac.authorization.k8s.io\/system:aggregated-metrics-reader created\r\nclusterrole.rbac.authorization.k8s.io\/system:metrics-server created\r\nrolebinding.rbac.authorization.k8s.io\/metrics-server-auth-reader created\r\nclusterrolebinding.rbac.authorization.k8s.io\/metrics-server:system:auth-delegator created\r\nclusterrolebinding.rbac.authorization.k8s.io\/system:metrics-server created\r\nservice\/metrics-server created\r\ndeployment.apps\/metrics-server created\r\npoddisruptionbudget.policy\/metrics-server created\r\napiservice.apiregistration.k8s.io\/v1beta1.metrics.k8s.io created\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>$ k top node\r\nNAME         CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   \r\n10.0.1.223   66m          3%     1914Mi          12%   \r\n<\/code><\/pre>\n<h1>\u90e8\u7f72\u6837\u672c\u5e94\u7528<\/h1>\n<p>\u90e8\u7f72Istio\u793a\u4f8b\u5e94\u7528\u7a0b\u5e8f\uff08Bookinfo\uff09\u3002<br \/>\n\u6211\u4eec\u4f7f\u7528\u4e86\u6559\u7a0b\u4e2d\u7684Manifest\uff0c\u4f46\u53ea\u505a\u4e86\u4e00\u5904\u4fee\u6539\u3002<br \/>\n\u6211\u4eec\u5728LoadBalancer\u4e0a\u8ffd\u52a0\u4e86annotations\uff0c\u4ee5\u4fbf\u4f7f\u7528Flexible LoadBalancer\u3002<br \/>\n\uff08\u5982\u679c\u4e0d\u6dfb\u52a0annotations\uff0c\u5219\u4f1a\u63d0\u4f9b\u975e\u63a8\u8350\u7684\u52a8\u6001\u5f62\u72b6\u7684LoadBalancer\uff09\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">v1<\/span>\r\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Service<\/span>\r\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">bookinfo-ingress<\/span>\r\n  <span class=\"na\">namespace<\/span><span class=\"pi\">:<\/span> <span class=\"s\">bookinfo<\/span>\r\n  <span class=\"na\">labels<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">app<\/span><span class=\"pi\">:<\/span> <span class=\"s\">bookinfo<\/span>\r\n    <span class=\"na\">service<\/span><span class=\"pi\">:<\/span> <span class=\"s\">ingress<\/span>\r\n<span class=\"c1\">## \u8ffd\u8a18<\/span>\r\n  <span class=\"na\">annotations<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">service.beta.kubernetes.io\/oci-load-balancer-shape<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">flexible\"<\/span>\r\n    <span class=\"na\">service.beta.kubernetes.io\/oci-load-balancer-shape-flex-min<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">10\"<\/span>\r\n    <span class=\"na\">service.beta.kubernetes.io\/oci-load-balancer-shape-flex-max<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">50\"<\/span>\r\n<span class=\"c1\">## \u3053\u3053\u307e\u3067<\/span>\r\n<span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">ports<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"na\">port<\/span><span class=\"pi\">:<\/span> <span class=\"m\">80<\/span>\r\n      <span class=\"na\">targetPort<\/span><span class=\"pi\">:<\/span> <span class=\"m\">9080<\/span>\r\n      <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">http<\/span>\r\n  <span class=\"na\">selector<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">app<\/span><span class=\"pi\">:<\/span> <span class=\"s\">productpage<\/span>\r\n  <span class=\"na\">type<\/span><span class=\"pi\">:<\/span> <span class=\"s\">LoadBalancer<\/span>\r\n<span class=\"nn\">---<\/span>\r\n\r\n<span class=\"s\">\u4ee5\u964d\u7701\u7565<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>$ k apply -f bookinfo-v1.yaml \r\nservice\/bookinfo-ingress created\r\nservice\/details created\r\nserviceaccount\/bookinfo-details created\r\ndeployment.apps\/details-v1 created\r\nservice\/ratings created\r\nserviceaccount\/bookinfo-ratings created\r\ndeployment.apps\/ratings-v1 created\r\nservice\/reviews created\r\nservice\/reviews-v1 created\r\nservice\/reviews-v2 created\r\nservice\/reviews-v3 created\r\nserviceaccount\/bookinfo-reviews created\r\ndeployment.apps\/reviews-v1 created\r\ndeployment.apps\/reviews-v2 created\r\ndeployment.apps\/reviews-v3 created\r\npoddisruptionbudget.policy\/reviews-pdb created\r\nservice\/productpage created\r\nserviceaccount\/bookinfo-productpage created\r\ndeployment.apps\/productpage-v1 created\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>$ k -n bookinfo get all\r\nNAME                                  READY   STATUS    RESTARTS   AGE\r\npod\/details-v1-c796f666c-tgccm        1\/1     Running   0          2m1s\r\npod\/details-v1-c796f666c-zw5pm        1\/1     Running   0          2m1s\r\npod\/productpage-v1-7c76cc46d5-62v5f   1\/1     Running   0          113s\r\npod\/productpage-v1-7c76cc46d5-8tgwz   1\/1     Running   0          113s\r\npod\/ratings-v1-7d9c5f5487-jxc6k       1\/1     Running   0          119s\r\npod\/ratings-v1-7d9c5f5487-lcf6h       1\/1     Running   0          119s\r\npod\/reviews-v1-6767c5f5f-8bczn        1\/1     Running   0          116s\r\npod\/reviews-v1-6767c5f5f-v72rn        1\/1     Running   0          116s\r\npod\/reviews-v2-5bdc85557f-cx9kb       1\/1     Running   0          116s\r\npod\/reviews-v2-5bdc85557f-l425g       1\/1     Running   0          116s\r\npod\/reviews-v3-69d6dd6c95-rmjjp       1\/1     Running   0          115s\r\npod\/reviews-v3-69d6dd6c95-zz6cn       1\/1     Running   0          115s\r\n\r\nNAME                       TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)        AGE\r\nservice\/bookinfo-ingress   LoadBalancer   10.96.38.149    192.18.149.xx   80:30492\/TCP   2m3s\r\nservice\/details            ClusterIP      10.96.90.93     &lt;none&gt;          9080\/TCP       2m2s\r\nservice\/productpage        ClusterIP      10.96.95.173    &lt;none&gt;          9080\/TCP       114s\r\nservice\/ratings            ClusterIP      10.96.76.177    &lt;none&gt;          9080\/TCP       2m\r\nservice\/reviews            ClusterIP      10.96.176.218   &lt;none&gt;          9080\/TCP       119s\r\nservice\/reviews-v1         ClusterIP      10.96.173.109   &lt;none&gt;          9080\/TCP       118s\r\nservice\/reviews-v2         ClusterIP      10.96.101.234   &lt;none&gt;          9080\/TCP       118s\r\nservice\/reviews-v3         ClusterIP      10.96.138.44    &lt;none&gt;          9080\/TCP       117s\r\n\r\nNAME                             READY   UP-TO-DATE   AVAILABLE   AGE\r\ndeployment.apps\/details-v1       2\/2     2            2           2m2s\r\ndeployment.apps\/productpage-v1   2\/2     2            2           114s\r\ndeployment.apps\/ratings-v1       2\/2     2            2           2m\r\ndeployment.apps\/reviews-v1       2\/2     2            2           117s\r\ndeployment.apps\/reviews-v2       2\/2     2            2           117s\r\ndeployment.apps\/reviews-v3       2\/2     2            2           116s\r\n\r\nNAME                                        DESIRED   CURRENT   READY   AGE\r\nreplicaset.apps\/details-v1-c796f666c        2         2         2       2m2s\r\nreplicaset.apps\/productpage-v1-7c76cc46d5   2         2         2       114s\r\nreplicaset.apps\/ratings-v1-7d9c5f5487       2         2         2       2m\r\nreplicaset.apps\/reviews-v1-6767c5f5f        2         2         2       117s\r\nreplicaset.apps\/reviews-v2-5bdc85557f       2         2         2       117s\r\nreplicaset.apps\/reviews-v3-69d6dd6c95       2         2         2       116s\r\n<\/code><\/pre>\n<p>\u4f7f\u7528\u6307\u5b9a\u7684LoadBalancer\u7684EXTERNAL-IP\uff0c\u5728\u6d4f\u89c8\u5668\u4e2d\u8fdb\u884c\u786e\u8ba4\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d534637434c4406ccf22b\/80-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2023-06-13 16.07.20.png\" \/><\/div>\n<h1>\u670d\u52a1\u7f51\u683c\u7684\u7ec4\u7ec7\u7ed3\u6784<\/h1>\n<p>\u5728OCI Service Mesh\u4e2d\uff0c\u6bcf\u4e2a\u8d44\u6e90\u90fd\u53ef\u4ee5\u901a\u8fc7kubectl\u8fdb\u884c\u7ba1\u7406\u3002\u8981\u5728\u90e8\u7f72\u7684\u5e94\u7528\u7a0b\u5e8f\u4e2d\u542f\u7528Service Mesh\uff0c\u9700\u8981\u521b\u5efa\u4ee5\u4e0b\u4e24\u4e2a\u8d44\u6e90\u96c6\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Service Mesh Control Plane<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">Service Mesh binding resource<\/ul>\n<h2>\u521b\u5efaService Mesh\u63a7\u5236\u5e73\u9762<\/h2>\n<p>\u4e3a\u4e86\u901a\u8fc7\u670d\u52a1\u7f51\u683c\u7ba1\u7406\u5e94\u7528\u7a0b\u5e8f\u4e4b\u95f4\u7684\u901a\u4fe1\uff0c\u6211\u4eec\u542f\u7528\u4e86\u90e8\u7f72\u5e94\u7528\u7a0b\u5e8f\u7684\u547d\u540d\u7a7a\u95f4\u7684Sidecar\u6ce8\u5165\u3002<\/p>\n<pre class=\"post-pre\"><code>$ kubectl label namespace bookinfo servicemesh.oci.oracle.com\/sidecar-injection=enabled\r\nnamespace\/bookinfo labeled\r\n<\/code><\/pre>\n<p>\u4f7f\u7528\u6559\u7a0b\u4e2d\u7684\u6e05\u5355\u90e8\u7f72\u63a7\u5236\u5e73\u9762\u3002<br \/>\n\u6211\u4eec\u5bf9\u4ee5\u4e0b3\u70b9\u8fdb\u884c\u4e86\u4fee\u6539\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30b3\u30f3\u30d1\u30fc\u30c8\u30e1\u30f3\u30c8OCID<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u8a8d\u8a3c\u5c40OCID<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">IngressGatewayDeployment\u3067\u4f7f\u7528\u3059\u308bLoadBalancer\u3092\u30d5\u30ec\u30ad\u30b7\u30d6\u30eb\u30b7\u30a7\u30a4\u30d7\u306b\u5909\u66f4\uff08\u4ee5\u4e0b\u306e\u8ffd\u8a18\u90e8\u5206\uff09<\/ul>\n<pre class=\"post-pre\"><code><span class=\"s\">\u30fb\u30fb\u30fb<\/span>\r\n<span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">servicemesh.oci.oracle.com\/v1beta1<\/span>\r\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">IngressGatewayDeployment<\/span>\r\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">bookinfo-ingress-gateway-deployment<\/span>\r\n  <span class=\"na\">namespace<\/span><span class=\"pi\">:<\/span> <span class=\"s\">bookinfo<\/span>\r\n<span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">ingressGateway<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">ref<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">bookinfo-ingress-gateway<\/span>\r\n  <span class=\"na\">deployment<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">autoscaling<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">minPods<\/span><span class=\"pi\">:<\/span> <span class=\"m\">1<\/span>\r\n      <span class=\"na\">maxPods<\/span><span class=\"pi\">:<\/span> <span class=\"m\">1<\/span>\r\n  <span class=\"na\">ports<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"na\">protocol<\/span><span class=\"pi\">:<\/span> <span class=\"s\">TCP<\/span>\r\n      <span class=\"na\">port<\/span><span class=\"pi\">:<\/span> <span class=\"m\">9080<\/span>\r\n      <span class=\"na\">serviceport<\/span><span class=\"pi\">:<\/span> <span class=\"m\">80<\/span>\r\n  <span class=\"na\">service<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">type<\/span><span class=\"pi\">:<\/span> <span class=\"s\">LoadBalancer<\/span>\r\n<span class=\"c1\">## \u8ffd\u8a18<\/span>\r\n    <span class=\"na\">annotations<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">service.beta.kubernetes.io\/oci-load-balancer-shape<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">flexible\"<\/span>\r\n      <span class=\"na\">service.beta.kubernetes.io\/oci-load-balancer-shape-flex-min<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">10\"<\/span>\r\n      <span class=\"na\">service.beta.kubernetes.io\/oci-load-balancer-shape-flex-max<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">50\"<\/span>\r\n<span class=\"c1\">## \u3053\u3053\u307e\u3067<\/span>\r\n<span class=\"s\">\u30fb\u30fb\u30fb<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>$ k apply -f meshify-bookinfo-v1.yaml \r\nmesh.servicemesh.oci.oracle.com\/bookinfo created\r\nvirtualservice.servicemesh.oci.oracle.com\/details created\r\nvirtualdeployment.servicemesh.oci.oracle.com\/details-v1 created\r\nvirtualserviceroutetable.servicemesh.oci.oracle.com\/details-route-table created\r\nvirtualservice.servicemesh.oci.oracle.com\/ratings created\r\nvirtualdeployment.servicemesh.oci.oracle.com\/ratings-v1 created\r\nvirtualserviceroutetable.servicemesh.oci.oracle.com\/ratings-route-table created\r\nvirtualservice.servicemesh.oci.oracle.com\/reviews created\r\nvirtualdeployment.servicemesh.oci.oracle.com\/reviews-v1 created\r\nvirtualdeployment.servicemesh.oci.oracle.com\/reviews-v2 created\r\nvirtualdeployment.servicemesh.oci.oracle.com\/reviews-v3 created\r\nvirtualserviceroutetable.servicemesh.oci.oracle.com\/reviews-route-table created\r\nvirtualservice.servicemesh.oci.oracle.com\/productpage created\r\nvirtualdeployment.servicemesh.oci.oracle.com\/productpage-v1 created\r\nvirtualserviceroutetable.servicemesh.oci.oracle.com\/productpage-route-table created\r\ningressgateway.servicemesh.oci.oracle.com\/bookinfo-ingress-gateway created\r\ningressgatewaydeployment.servicemesh.oci.oracle.com\/bookinfo-ingress-gateway-deployment created\r\ningressgatewayroutetable.servicemesh.oci.oracle.com\/bookinfo-ingress-gateway-route-table created\r\naccesspolicy.servicemesh.oci.oracle.com\/bookinfo-policy created\r\n<\/code><\/pre>\n<p>\u6211\u5c07\u78ba\u8a8dACTIVE\u7684\u503c\u662fTrue\u3002<\/p>\n<pre class=\"post-pre\"><code>$ k -n bookinfo get mesh\r\nNAME       ACTIVE   AGE\r\nbookinfo   True     3m39s\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>$ k -n bookinfo get virtualserviceroutetables,virtualservices,virtualdeployment\r\nNAME                                                                          ACTIVE   AGE\r\nvirtualserviceroutetable.servicemesh.oci.oracle.com\/details-route-table       True     8m5s\r\nvirtualserviceroutetable.servicemesh.oci.oracle.com\/productpage-route-table   True     7m59s\r\nvirtualserviceroutetable.servicemesh.oci.oracle.com\/ratings-route-table       True     8m3s\r\nvirtualserviceroutetable.servicemesh.oci.oracle.com\/reviews-route-table       True     8m\r\n\r\nNAME                                                    ACTIVE   AGE\r\nvirtualservice.servicemesh.oci.oracle.com\/details       True     8m7s\r\nvirtualservice.servicemesh.oci.oracle.com\/productpage   True     8m1s\r\nvirtualservice.servicemesh.oci.oracle.com\/ratings       True     8m5s\r\nvirtualservice.servicemesh.oci.oracle.com\/reviews       True     8m4s\r\n\r\nNAME                                                          ACTIVE   AGE\r\nvirtualdeployment.servicemesh.oci.oracle.com\/details-v1       True     8m6s\r\nvirtualdeployment.servicemesh.oci.oracle.com\/productpage-v1   True     8m\r\nvirtualdeployment.servicemesh.oci.oracle.com\/ratings-v1       True     8m5s\r\nvirtualdeployment.servicemesh.oci.oracle.com\/reviews-v1       True     8m3s\r\nvirtualdeployment.servicemesh.oci.oracle.com\/reviews-v2       True     8m3s\r\nvirtualdeployment.servicemesh.oci.oracle.com\/reviews-v3       True     8m2s\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>$ k -n bookinfo get ingressgateway,ingressgatewaydeployments,ingressgatewayroutetables\r\nNAME                                                                 ACTIVE   AGE\r\ningressgateway.servicemesh.oci.oracle.com\/bookinfo-ingress-gateway   True     9m34s\r\n\r\nNAME                                                                                      ACTIVE   AGE\r\ningressgatewaydeployment.servicemesh.oci.oracle.com\/bookinfo-ingress-gateway-deployment   True     20m\r\n\r\nNAME                                                                                       ACTIVE   AGE\r\ningressgatewayroutetable.servicemesh.oci.oracle.com\/bookinfo-ingress-gateway-route-table   True     9m33s\r\n<\/code><\/pre>\n<p>\u4f60\u4e5f\u53ef\u4ee5\u5728\u63a7\u5236\u53f0\u4e0a\u8fdb\u884c\u786e\u8ba4\u3002 (N\u01d0 y\u011b .)<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d534637434c4406ccf22b\/96-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2023-06-14 10.51.12.png\" \/><\/div>\n<h2>\u521b\u5efaService Mesh Binding\u8d44\u6e90<\/h2>\n<p>Note: The phrase &#8220;Service Mesh Binding\u30ea\u30bd\u30fc\u30b9\u306e\u4f5c\u6210&#8221; is a mix of English, Japanese, and Chinese characters. To ensure clarity and consistency, I have provided the translation in Chinese characters only.<\/p>\n<p>\u521b\u5efaService Mesh Binding\u8d44\u6e90\uff0c\u5e76\u4e0eService Mesh Control Plane\u548c\u6bcf\u4e2aPod\u7ed1\u5b9a\u3002<br \/>\n\u8981\u4f7f\u7528\u7684\u6e05\u5355\u662f\u6559\u7a0b\u4e2d\u7684bind-bookinfo-v1.yaml\u3002<\/p>\n<pre class=\"post-pre\"><code>$ k apply -f bind-bookinfo-v1.yaml \r\nvirtualdeploymentbinding.servicemesh.oci.oracle.com\/details-v1-binding created\r\nvirtualdeploymentbinding.servicemesh.oci.oracle.com\/ratings-v1-binding created\r\nvirtualdeploymentbinding.servicemesh.oci.oracle.com\/reviews-v1-binding created\r\nvirtualdeploymentbinding.servicemesh.oci.oracle.com\/reviews-v2-binding created\r\nvirtualdeploymentbinding.servicemesh.oci.oracle.com\/reviews-v3-binding created\r\nvirtualdeploymentbinding.servicemesh.oci.oracle.com\/productpage-v1-binding created\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>$ k -n bookinfo get virtualdeploymentbindings\r\nNAME                     ACTIVE   AGE\r\ndetails-v1-binding       True     56s\r\nproductpage-v1-binding   True     54s\r\nratings-v1-binding       True     56s\r\nreviews-v1-binding       True     55s\r\nreviews-v2-binding       True     55s\r\nreviews-v3-binding       True     54s\r\n<\/code><\/pre>\n<h2>\u786e\u8ba4\u884c\u52a8<\/h2>\n<p>\u786e\u8ba4 IngressGatewayDeployment \u4f7f\u7528\u7684 LoadBalancer \u7684 EXTERNAL-IP\u3002<\/p>\n<pre class=\"post-pre\"><code>$ kubectl get svc bookinfo-ingress-gateway-deployment-service -n bookinfo\r\nNAME                                          TYPE           CLUSTER-IP    EXTERNAL-IP       PORT(S)        AGE\r\nbookinfo-ingress-gateway-deployment-service   LoadBalancer   10.96.2.185   140.238.129.xxx   80:31821\/TCP   102m\r\n<\/code><\/pre>\n<p>\u8981\u901a\u8fc7Service Mesh\u663e\u793a\u5e94\u7528\u7a0b\u5e8f\uff0c\u9700\u8981\u4f7f\u7528\u4e3b\u673a\u540d\u8fdb\u884c\u8bbf\u95ee\uff0c\u6240\u4ee5\u8bf7\u5728\/etc\/hosts\u6587\u4ef6\u4e2d\u6dfb\u52a0\u4ee5\u4e0b\u5185\u5bb9\u3002<\/p>\n<pre class=\"post-pre\"><code>\u30fb\u30fb\u30fb\r\n140.238.129.xxx bookinfo.example.com\r\n<\/code><\/pre>\n<p>\u786e\u8ba4\u4f7f\u7528\u6d4f\u89c8\u5668\u6307\u5b9a\u4e3b\u673a\u540d\u8bbf\u95ee\uff0c\u5e76\u901a\u8fc7Service Mesh\u901a\u8fc7\u9a8c\u8bc1\u5e94\u7528\u7a0b\u5e8f\u53ef\u7528\u6027\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d534637434c4406ccf22b\/107-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2023-06-14 12.33.06.png\" \/><\/div>\n<h1>\u8bb0\u5f55\u8bbe\u7f6e<\/h1>\n<p>\u6211\u4eec\u5c06\u786e\u4fdd\u80fd\u591f\u83b7\u53d6Service Mesh\u7684\u65e5\u5fd7\u3002<\/p>\n<h2>\u521b\u5efa\u65e5\u5fd7\u7ec4<\/h2>\n<pre class=\"post-pre\"><code>$ oci logging log-group create --compartment-id ocid1.compartment.oc1..aaaaaaaamxxxxxxxxxxxx --region YYZ --display-name bookinfo\r\n{\r\n  \"opc-work-request-id\": \"ocid1.logworkrequest.oc1.ca-toronto-1.aaaaaaaamm6zcvgv7unjdsdjwkw7uxxxxxxxxxxxx\"\r\n}\r\n<\/code><\/pre>\n<p>\u786e\u8ba4\u5df2\u521b\u5efa\u7684\u65e5\u5fd7\u7ec4\u7684 OCID\u3002<\/p>\n<pre class=\"post-pre\"><code>$ oci logging log-group list --compartment-id ocid1.compartment.oc1..aaaaaaaaxxxxxxxxxxxxxx --region YYZ\r\n{\r\n  \"data\": [\r\n    {\r\n      \"compartment-id\": \"ocid1.compartment.oc1..aaaaaaaamyexxxxxxxxxxxxx\",\r\n      \"defined-tags\": {},\r\n      \"description\": null,\r\n      \"display-name\": \"bookinfo\",\r\n      \"freeform-tags\": {},\r\n      \"id\": \"ocid1.loggroup.oc1.ca-toronto-1.amaaaaaassl65iqa65ootlxxxxxxxxxxxx\", #\u3053\u308c\r\n      \"lifecycle-state\": \"ACTIVE\",\r\n      \"time-created\": \"2023-06-14T04:26:00.133000+00:00\",\r\n      \"time-last-modified\": \"2023-06-14T04:26:00.133000+00:00\"\r\n    }\r\n  ]\r\n}\r\n<\/code><\/pre>\n<h2>\u521b\u5efa\u81ea\u5b9a\u4e49\u65e5\u5fd7<\/h2>\n<pre class=\"post-pre\"><code>$ oci logging log create --log-group-id ocid1.loggroup.oc1.ca-toronto-1.amaaaaaassxxxxxxxxxxxxxxx --display-name bookinfo-logs --log-type custom --region YYZ\r\n{\r\n  \"opc-work-request-id\": \"ocid1.logworkrequest.oc1.ca-toronto-1.aaaaaaaasm7pzrxxxxxxxxxxxxxxx\"\r\n}\r\n<\/code><\/pre>\n<p>\u786e\u8ba4\u81ea\u5b9a\u4e49\u65e5\u5fd7\u7684OCID<\/p>\n<pre class=\"post-pre\"><code>$ oci logging log list --log-group-id ocid1.loggroup.oc1.ca-toronto-1.amaaaaaassxxxxxxxxxxxxxx --region YYZ\r\n{\r\n  \"data\": [\r\n    {\r\n      \"compartment-id\": \"ocid1.compartment.oc1..aaaaaaaamaxxxxxxxxxxxxxx\",\r\n      \"configuration\": null,\r\n      \"defined-tags\": {},\r\n      \"display-name\": \"bookinfo-logs\",\r\n      \"freeform-tags\": {},\r\n      \"id\": \"ocid1.log.oc1.ca-toronto-1.amaaaaaassxxxxxxxxxxxxxx\", #\u3053\u308c\r\n      \"is-enabled\": true,\r\n      \"lifecycle-state\": \"ACTIVE\",\r\n      \"log-group-id\": \"ocid1.loggroup.oc1.ca-toronto-1.amaaaaaassl65ixxxxxxxxxxxxxx\",\r\n      \"log-type\": \"CUSTOM\",\r\n      \"retention-duration\": 30,\r\n      \"time-created\": \"2023-06-14T04:29:30.510000+00:00\",\r\n      \"time-last-modified\": \"2023-06-14T04:29:30.510000+00:00\"\r\n    }\r\n  ]\r\n}\r\n<\/code><\/pre>\n<h2>\u521b\u5efa\u4ee3\u7406\u4eba<\/h2>\n<p>\u4f7f\u7528\u6559\u7a0b\u4e2d\u63d0\u4f9b\u7684\u793a\u4f8b\u6587\u4ef6\uff0c\u521b\u5efa\u914d\u7f6e\u6587\u4ef6\u3002<br \/>\n\u5728\u4e2d\u8f93\u5165\u81ea\u5b9a\u4e49\u65e5\u5fd7\u7684OCID\uff0c\u5728\u4e2d\u8f93\u5165\u90e8\u7f72\u5e94\u7528\u7684\u547d\u540d\u7a7a\u95f4\uff08\u672c\u4f8b\u4e2d\u4e3abookinfo\uff09\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"p\">{<\/span>\r\n  <span class=\"nl\">\"configurationType\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"LOGGING\"<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"nl\">\"destination\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"logObjectId\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"&lt;your-custom-log-ocid&gt;\"<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"nl\">\"sources\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n      <span class=\"p\">{<\/span>\r\n        <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"proxylogs\"<\/span><span class=\"p\">,<\/span>\r\n        <span class=\"nl\">\"parser\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n          <span class=\"nl\">\"fieldTimeKey\"<\/span><span class=\"p\">:<\/span> <span class=\"kc\">null<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"nl\">\"isEstimateCurrentEvent\"<\/span><span class=\"p\">:<\/span> <span class=\"kc\">null<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"nl\">\"isKeepTimeKey\"<\/span><span class=\"p\">:<\/span> <span class=\"kc\">null<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"nl\">\"isNullEmptyString\"<\/span><span class=\"p\">:<\/span> <span class=\"kc\">null<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"nl\">\"messageKey\"<\/span><span class=\"p\">:<\/span> <span class=\"kc\">null<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"nl\">\"nullValuePattern\"<\/span><span class=\"p\">:<\/span> <span class=\"kc\">null<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"nl\">\"parserType\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"NONE\"<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"nl\">\"timeoutInMilliseconds\"<\/span><span class=\"p\">:<\/span> <span class=\"kc\">null<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"nl\">\"types\"<\/span><span class=\"p\">:<\/span> <span class=\"kc\">null<\/span>\r\n        <span class=\"p\">},<\/span>\r\n        <span class=\"nl\">\"paths\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n          <span class=\"s2\">\"\/var\/log\/containers\/*&lt;app-namespace&gt;*oci-sm-proxy*.log\"<\/span>\r\n        <span class=\"p\">],<\/span>\r\n        <span class=\"nl\">\"source-type\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"LOG_TAIL\"<\/span>\r\n      <span class=\"p\">}<\/span>\r\n    <span class=\"p\">]<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<p>\u521b\u5efa\u81ea\u5b9a\u4e49\u4ee3\u7406\u3002<\/p>\n<pre class=\"post-pre\"><code>$ oci logging agent-configuration create --compartment-id ocid1.compartment.oc1..aaaaaaaamyxxxxxxxxxxxxxx --is-enabled true --service-configuration file:\/\/logconfig.json --display-name bookinfoLoggingAgent --description \"Custom agent config for mesh\" --group-association '{\"groupList\": [\"ocid1.dynamicgroup.oc1..aaaaaaaajqxxxxxxxxxxxxxxxxx\"]}' --region YYZ\r\n{\r\n  \"opc-work-request-id\": \"ocid1.logworkrequest.oc1.ca-toronto-1.aaaaaaaaaulxxxxxxxxxxxxxxx\"\r\n}\r\n<\/code><\/pre>\n<p>\u901a\u8fc7\u670d\u52a1\u7f51\u683c\u8bbf\u95ee\u5e94\u7528\u7a0b\u5e8f\u5e76\u8fdb\u884c\u9002\u5f53\u64cd\u4f5c\uff0c\u786e\u8ba4\u65e5\u5fd7\u5df2\u88ab\u6536\u96c6\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d534637434c4406ccf22b\/124-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2023-06-14 14.37.11.png\" \/><\/div>\n<h1>\u76d1\u63a7\u8bbe\u7f6e<\/h1>\n<p>\u90e8\u7f72Prometheus\u548cGrafana\uff0c\u5e76\u76d1\u6d4bService Mesh\u7684\u72b6\u6001\u3002<\/p>\n<h2>\u666e\u7f57\u7c73\u4fee\u65af<\/h2>\n<p>\u521b\u5efa\u4e00\u4e2a\u547d\u540d\u7a7a\u95f4\u3002<\/p>\n<pre class=\"post-pre\"><code>$ kubectl create namespace monitoring\r\nnamespace\/monitoring created\r\n<\/code><\/pre>\n<p>\u4f7f\u7528\u6559\u7a0b\u4e2d\u7684manifest\u6587\u4ef6prometheus.yaml\u6765\u90e8\u7f72Prometheus\u3002<\/p>\n<pre class=\"post-pre\"><code>$ k apply -f prometheus.yaml \r\nserviceaccount\/prometheus created\r\nclusterrole.rbac.authorization.k8s.io\/prometheus created\r\nclusterrolebinding.rbac.authorization.k8s.io\/prometheus created\r\nconfigmap\/prometheus-server-conf created\r\nservice\/prometheus created\r\ndeployment.apps\/prometheus-deployment created\r\n<\/code><\/pre>\n<p>\u6211\u4f1a\u7a0d\u7b49\u4e00\u4e0b\uff0c\u5982\u679cPod\u4ecd\u7136\u5904\u4e8e\u6302\u8d77\u72b6\u6001\uff0c\u6211\u4f1a\u8fdb\u884c\u786e\u8ba4\u3002<\/p>\n<pre class=\"post-pre\"><code>$ k -n monitoring describe pod\r\nName:             prometheus-deployment-68c76cdd7-8nfdt\r\nNamespace:        monitoring\r\n\u30fb\u30fb\u30fb\r\n    Limits:\r\n      cpu:     1\r\n      memory:  1Gi\r\n    Requests:\r\n      cpu:        1\r\n      memory:     1Gi\r\n    Environment:  &lt;none&gt;\r\n\u30fb\u30fb\u30fb\r\nEvents:\r\n  Type     Reason            Age    From               Message\r\n  ----     ------            ----   ----               -------\r\n  Warning  FailedScheduling  4m16s  default-scheduler  0\/1 nodes are available: 1 Insufficient cpu. preemption: 0\/1 nodes are available: 1 No preemption victims found for incoming pod..\r\n<\/code><\/pre>\n<p>\u7531\u4e8e\u8be5\u96c6\u7fa4\u53ea\u67091\u4e2a\u8282\u70b9\u548c1\u4e2aOCPU\uff082vCPU\uff09\uff0c\u4f3c\u4e4eCPU\u4e0d\u591f\u7528\u3002<br \/>\n\u672c\u6765\u5e94\u8be5\u6dfb\u52a0\u8d44\u6e90\uff0c\u4f46\u8fd9\u6b21\u6211\u4eec\u5c06\u901a\u8fc7\u6ce8\u91ca\u6389Limits\u7684\u8bbe\u7f6e\u6765\u5904\u7406\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"s\">\u30fb\u30fb\u30fb<\/span>\r\n<span class=\"nn\">---<\/span>\r\n<span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">apps\/v1<\/span>\r\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Deployment<\/span>\r\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">prometheus-deployment<\/span>\r\n  <span class=\"na\">namespace<\/span><span class=\"pi\">:<\/span> <span class=\"s\">monitoring<\/span>\r\n  <span class=\"na\">labels<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">app<\/span><span class=\"pi\">:<\/span> <span class=\"s\">prometheus-server<\/span>\r\n<span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">replicas<\/span><span class=\"pi\">:<\/span> <span class=\"m\">1<\/span>\r\n  <span class=\"na\">selector<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">matchLabels<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">app<\/span><span class=\"pi\">:<\/span> <span class=\"s\">prometheus-server<\/span>\r\n  <span class=\"na\">template<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">namespace<\/span><span class=\"pi\">:<\/span> <span class=\"s\">monitoring<\/span>\r\n      <span class=\"na\">labels<\/span><span class=\"pi\">:<\/span>\r\n        <span class=\"na\">app<\/span><span class=\"pi\">:<\/span> <span class=\"s\">prometheus-server<\/span>\r\n    <span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">serviceAccountName<\/span><span class=\"pi\">:<\/span> <span class=\"s\">prometheus<\/span>\r\n      <span class=\"na\">containers<\/span><span class=\"pi\">:<\/span>\r\n        <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">prometheus<\/span>\r\n          <span class=\"na\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">prom\/prometheus<\/span>\r\n          <span class=\"na\">args<\/span><span class=\"pi\">:<\/span>\r\n            <span class=\"pi\">-<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">--storage.tsdb.retention.time=30d\"<\/span>\r\n            <span class=\"pi\">-<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">--config.file=\/etc\/prometheus\/prometheus.yml\"<\/span>\r\n            <span class=\"pi\">-<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">--storage.tsdb.path=\/prometheus\/\"<\/span>\r\n            <span class=\"pi\">-<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">--web.enable-lifecycle\"<\/span>\r\n          <span class=\"na\">ports<\/span><span class=\"pi\">:<\/span>\r\n            <span class=\"pi\">-<\/span> <span class=\"na\">containerPort<\/span><span class=\"pi\">:<\/span> <span class=\"m\">9090<\/span>\r\n<span class=\"c1\">#          resources:<\/span>\r\n<span class=\"c1\">#            limits:<\/span>\r\n<span class=\"c1\">#              cpu: 1<\/span>\r\n<span class=\"c1\">#              memory: 1Gi<\/span>\r\n          <span class=\"na\">volumeMounts<\/span><span class=\"pi\">:<\/span>\r\n            <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">prometheus-config-volume<\/span>\r\n              <span class=\"na\">mountPath<\/span><span class=\"pi\">:<\/span> <span class=\"s\">\/etc\/prometheus\/<\/span>\r\n            <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">prometheus-storage-volume<\/span>\r\n              <span class=\"na\">mountPath<\/span><span class=\"pi\">:<\/span> <span class=\"s\">\/prometheus\/<\/span>\r\n      <span class=\"na\">volumes<\/span><span class=\"pi\">:<\/span>\r\n        <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">prometheus-config-volume<\/span>\r\n          <span class=\"na\">configMap<\/span><span class=\"pi\">:<\/span>\r\n            <span class=\"na\">defaultMode<\/span><span class=\"pi\">:<\/span> <span class=\"m\">420<\/span>\r\n            <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">prometheus-server-conf<\/span>\r\n \r\n        <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">prometheus-storage-volume<\/span>\r\n          <span class=\"na\">emptyDir<\/span><span class=\"pi\">:<\/span> <span class=\"pi\">{}<\/span>\r\n<\/code><\/pre>\n<p>\u518d\u6b21\u90e8\u7f72\u5e76\u8fdb\u884c\u786e\u8ba4\u3002<\/p>\n<pre class=\"post-pre\"><code>$ k -n monitoring get all\r\nNAME                                         READY   STATUS    RESTARTS   AGE\r\npod\/prometheus-deployment-67fd84d9ff-847m7   1\/1     Running   0          25s\r\n\r\nNAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE\r\nservice\/prometheus   ClusterIP   10.96.165.166   &lt;none&gt;        9090\/TCP   26s\r\n\r\nNAME                                    READY   UP-TO-DATE   AVAILABLE   AGE\r\ndeployment.apps\/prometheus-deployment   1\/1     1            1           26s\r\n\r\nNAME                                               DESIRED   CURRENT   READY   AGE\r\nreplicaset.apps\/prometheus-deployment-67fd84d9ff   1         1         1       26s\r\n<\/code><\/pre>\n<h2>Grafana: \u539f\u7ecf\u6587<\/h2>\n<p>\u4f7f\u7528\u6559\u7a0b\u4e2d\u7684manifest-grafana.yaml\u6587\u4ef6\u90e8\u7f72Grafana\u3002<br \/>\n\u5c06\u793a\u4f8b\u4e2d\u7684X.Y.Z\u66ff\u6362\u4e3aGrafana\u7684\u7248\u672c\u53f7\u3002\u5c3d\u7ba1\u6700\u65b0\u7248\u672c\u662f10.0.0\uff0c\u4f46\u6211\u4eec\u9009\u62e9\u4e86\u7a0d\u65e7\u76849.5.3\u7248\u672c\u3002<br \/>\n\u7531\u4e8e\u6709\u51e0\u4e2a\u5730\u65b9\u9700\u8981\u66ff\u6362\uff0c\u6211\u4eec\u5c06\u4f7f\u7528sed\u547d\u4ee4\u8fdb\u884c\u66ff\u6362\u3002<\/p>\n<pre class=\"post-pre\"><code>$ sed -i -e 's\/X.Y.Z\/9.5.3\/g' grafana.yaml \r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>$ k apply -f grafana.yaml \r\nserviceaccount\/grafana created\r\nconfigmap\/grafana created\r\nservice\/grafana created\r\ndeployment.apps\/grafana created\r\nconfigmap\/mesh-demo-grafana-dashboards created\r\n<\/code><\/pre>\n<p>\u597d\u7684\uff0c\u6211\u786e\u8ba4\u3002<\/p>\n<pre class=\"post-pre\"><code>$ k -n monitoring get all\r\nNAME                                         READY   STATUS    RESTARTS   AGE\r\npod\/grafana-77f85bf7bd-clqms                 1\/1     Running   0          41s\r\npod\/prometheus-deployment-67fd84d9ff-847m7   1\/1     Running   0          15m\r\n\r\nNAME                 TYPE           CLUSTER-IP      EXTERNAL-IP      PORT(S)        AGE\r\nservice\/grafana      LoadBalancer   10.96.167.31    140.238.148.xx   80:32492\/TCP   41s\r\nservice\/prometheus   ClusterIP      10.96.165.166   &lt;none&gt;           9090\/TCP       15m\r\n\r\nNAME                                    READY   UP-TO-DATE   AVAILABLE   AGE\r\ndeployment.apps\/grafana                 1\/1     1            1           42s\r\ndeployment.apps\/prometheus-deployment   1\/1     1            1           15m\r\n\r\nNAME                                               DESIRED   CURRENT   READY   AGE\r\nreplicaset.apps\/grafana-77f85bf7bd                 1         1         1       42s\r\nreplicaset.apps\/prometheus-deployment-67fd84d9ff   1         1         1       15m\r\n<\/code><\/pre>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d534637434c4406ccf22b\/144-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2023-06-14 15.33.06.png\" \/><\/div>\n<p>\u4eceDashboards\u7684mesh-demo\u4e2d\u9009\u62e9Bookinfo\u4eea\u8868\u677f\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d534637434c4406ccf22b\/146-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2023-06-14 15.38.37.png\" \/><\/div>\n<p>\u8fd9\u6837\u770b\u8d77\u6765\u5dee\u4e0d\u591a\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d534637434c4406ccf22b\/148-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2023-06-14 15.41.34.png\" \/><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u9996\u5148 \u6211\u5011\u5c07\u6309\u7167\u4ee5\u4e0b\u624b\u518a\u7684\u6307\u793a\u4f86\u5617\u8a66OCI\u670d\u52d9\u7db2\u683c\u3002 &nbsp; \u9884\u5148\u51c6\u5907 \u521b\u5efa OKE \u96c6\u7fa4 \u6211\u5df2\u4e8b\u5148\u521b\u5efa [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-43558","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u8bd5\u7528OCI Service Mesh - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u8bd5\u7528oci-service-mesh\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u8bd5\u7528OCI Service Mesh\" \/>\n<meta property=\"og:description\" content=\"\u9996\u5148 \u6211\u5011\u5c07\u6309\u7167\u4ee5\u4e0b\u624b\u518a\u7684\u6307\u793a\u4f86\u5617\u8a66OCI\u670d\u52d9\u7db2\u683c\u3002 &nbsp; \u9884\u5148\u51c6\u5907 \u521b\u5efa OKE \u96c6\u7fa4 \u6211\u5df2\u4e8b\u5148\u521b\u5efa [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u8bd5\u7528oci-service-mesh\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-19T02:04:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-29T14:08:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d534637434c4406ccf22b\/26-0.png\" \/>\n<meta name=\"author\" content=\"\u96c5, \u609f\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u96c5, \u609f\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"19 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e8%af%95%e7%94%a8oci-service-mesh\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e8%af%95%e7%94%a8oci-service-mesh\/\",\"name\":\"\u8bd5\u7528OCI Service Mesh - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-07-19T02:04:57+00:00\",\"dateModified\":\"2024-04-29T14:08:34+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/f044a4b7fa4ee2701702942002419ca6\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e8%af%95%e7%94%a8oci-service-mesh\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e8%af%95%e7%94%a8oci-service-mesh\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e8%af%95%e7%94%a8oci-service-mesh\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u8bd5\u7528OCI Service Mesh\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/f044a4b7fa4ee2701702942002419ca6\",\"name\":\"\u96c5, \u609f\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e71a913e914f1aad1efc391f92084294bac54bc782acd289638580134cf667a6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e71a913e914f1aad1efc391f92084294bac54bc782acd289638580134cf667a6?s=96&d=mm&r=g\",\"caption\":\"\u96c5, \u609f\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/yawu\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e8%af%95%e7%94%a8oci-service-mesh\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u8bd5\u7528OCI Service Mesh - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u8bd5\u7528oci-service-mesh\/","og_locale":"zh_CN","og_type":"article","og_title":"\u8bd5\u7528OCI Service Mesh","og_description":"\u9996\u5148 \u6211\u5011\u5c07\u6309\u7167\u4ee5\u4e0b\u624b\u518a\u7684\u6307\u793a\u4f86\u5617\u8a66OCI\u670d\u52d9\u7db2\u683c\u3002 &nbsp; \u9884\u5148\u51c6\u5907 \u521b\u5efa OKE \u96c6\u7fa4 \u6211\u5df2\u4e8b\u5148\u521b\u5efa [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u8bd5\u7528oci-service-mesh\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-07-19T02:04:57+00:00","article_modified_time":"2024-04-29T14:08:34+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d534637434c4406ccf22b\/26-0.png"}],"author":"\u96c5, \u609f","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u96c5, \u609f","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"19 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e8%af%95%e7%94%a8oci-service-mesh\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e8%af%95%e7%94%a8oci-service-mesh\/","name":"\u8bd5\u7528OCI Service Mesh - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-07-19T02:04:57+00:00","dateModified":"2024-04-29T14:08:34+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/f044a4b7fa4ee2701702942002419ca6"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e8%af%95%e7%94%a8oci-service-mesh\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e8%af%95%e7%94%a8oci-service-mesh\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e8%af%95%e7%94%a8oci-service-mesh\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u8bd5\u7528OCI Service Mesh"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/f044a4b7fa4ee2701702942002419ca6","name":"\u96c5, \u609f","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/e71a913e914f1aad1efc391f92084294bac54bc782acd289638580134cf667a6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e71a913e914f1aad1efc391f92084294bac54bc782acd289638580134cf667a6?s=96&d=mm&r=g","caption":"\u96c5, \u609f"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/yawu\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e8%af%95%e7%94%a8oci-service-mesh\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/43558","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=43558"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/43558\/revisions"}],"predecessor-version":[{"id":87928,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/43558\/revisions\/87928"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=43558"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=43558"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=43558"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}