现在我们可以创建一个 WorkloadGroup 资源并将其保存到 workloadgroup.yaml
中:
cat <<EOF > workloadgroup.yaml apiVersion: networking.istio.io/v1alpha3 kind: WorkloadGroup metadata:name: "${VM_APP}"namespace: "${VM_NAMESPACE}" spec:metadata:labels:app: "${VM_APP}"template:serviceAccount: "${SERVICE_ACCOUNT}"network: "${VM_NETWORK}" EOF
虚拟机需要关于集群和 Istio 的控制平面的信息来连接到它 。为了生成所需文件,我们可以运行 getmesh istioctl x workload entry
命令 。我们将所有生成的文件保存到 $WORK_DIR
中:
$ getmesh istioctl x workload entry configure -f workloadgroup.yaml -o "${WORK_DIR}" --clusterID "${CLUSTER}" Warning: a security token for namespace "vm-namespace" and service account "vm-sa" has been generated and stored at "/vmfiles/istio-token" configuration generation into directory /vmfiles was successful
4.4 配置虚拟机现在是时候创建和配置一个虚拟机了 。我在 GCP 中运行这个虚拟机,就像 Kubernetes 集群一样 。虚拟机使用的是 Debian GNU/Linux 10(Buster)镜像 。确保你在防火墙部分勾选了 "允许 HTTP 流量",并且你有 SSH 访问该实例的权限 。
在这个例子中,我们在 80 端口运行一个简单的 Python HTTP 服务器 。你可以在不同的端口上配置任何其他服务 。只要确保你配置了相应的安全和防火墙规则 。
- 将
$WORK_DIR
中的文件复制到实例的主文件夹中 。相应地替换USERNAME
和INSTANCE_IP
。
$ scp $WORK_DIR/* [USERNAME]@[INSTANCE_IP]:~ Enter passphrase for key '/Users/peterj/.ssh/id_rsa': bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) cluster.env100%58912.6KB/s00:00 hosts100%380.8KB/s00:00 istio-token100%90619.4KB/s00:00 mesh.yaml100%66714.4KB/s00:00 root-cert.pem100% 109423.5KB/s00:00
或者,你可以使用 gcloud
命令和实例名称: gcloud compute scp --zone=us-west1-b ${WORK_DIR}/* [INSTANCE_NAME]:~
。- SSH 进入实例,将根证书复制到
/etc/certs
:
sudo mkdir -p /etc/certs sudo cp root-cert.pem /etc/certs/root-cert.pem
- 拷贝
istio-token
文件到/var/run/secrets/tokens
目录:
sudo mkdir -p /var/run/secrets/tokens sudo cp istio-token /var/run/secrets/tokens/istio-token
- 下载和安装 Istio sidecar 包:
curl -LO https://storage.googleapis.com/istio-release/releases/1.10.3/deb/istio-sidecar.deb sudo dpkg -i istio-sidecar.deb
- 拷贝
cluster.env
到/var/lib/istio/envoy/
:
sudo cp cluster.env /var/lib/istio/envoy/cluster.env
- 将 Mesh 配置(
mesh.yaml
)添加到/etc/istio/config/mesh
:
sudo cp mesh.yaml /etc/istio/config/mesh
- 将 istiod host 添加到
/etc/hosts
文件中:
sudo sh -c 'cat $(eval echo ~$SUDO_USER)/hosts >> /etc/hosts'
- 将
/etc/certs
和/var/lib/istio/envoy
的所有者修改为 Istio proxy:
sudo mkdir -p /etc/istio/proxy sudo chown -R istio-proxy /var/lib/istio /etc/certs /etc/istio/proxy /etc/istio/config /var/run/secrets /etc/certs/root-cert.pem
以上都就绪后,就可以在虚拟机中启动 Istio: sudo systemctl start istio
此刻,虚拟机被配置为与 Kubernetes 集群中 Istio 的控制平面通信 。4.5 从虚拟机访问服务让我们在 Kubernetes 集群中部署一个 Hello world 应用程序 。首先,我们需要在
default
命名空间中启用自动 sidecar 注入: $ kubectl label namespace default istio-injection=enabled namespace/default labeled
经验总结扩展阅读
- 2023年农历七月十一结婚怎么样 是不是吉祥的日子
- 2023年农历七月二十一是不是结婚吉日 今天可以迎亲吗
- 2023年农历八月十一结婚会幸福吗
- 2023年农历十一月搬家吉日查询 哪几天搬迁最顺利
- 九 Istio:istio安全之授权
- 哪些星座组合在婚姻中容易滑向疲软的漩涡
- Python数据分析:实用向
- 五 Istio:使用服务网格Istio进行流量路由
- 眼膜小的一头面向哪边?
- 2023年七月十一出生苏姓男孩名字叫什么生辰八字五行查询