使用上一篇文章成功安装 k8s
和 calico
后,使用 istio
管控微服务。
下载 istio
1 2 3 4 5
| curl -L https://istio.io/downloadIstio | sh -
cd istio-*
export PATH=$PWD/bin:$PATH
|
安装
- https://istio.io/docs/setup/install/istioctl/
使用默认配置安装
验证是否安装成功
1 2
| istioctl manifest generate > istio.yaml istioctl verify-install -f istio.yaml
|
部署
这里简单地引用了 gitea
作为部署镜像,若为微服务,修改相应路由即可。
创建 test
namespaces
1
| kubectl create namespace test
|
创建 configmaps
1 2 3 4 5 6 7 8
| apiVersion: v1 kind: ConfigMap metadata: name: config namespace: test data: DB_TYPE: sqlite3
|
1
| kubectl apply -f config.yaml
|
部署
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| apiVersion: v1 kind: Service metadata: name: web namespace: test spec: type: ClusterIP ports: - name: http-web port: 80 targetPort: 3000 selector: app: web --- apiVersion: apps/v1 kind: Deployment metadata: name: web namespace: test spec: replicas: 1 selector: matchLabels: app: web template: metadata: labels: app: web spec: containers: - name: test image: gitea/gitea:latest ports: - name: port containerPort: 3000 envFrom: - configMapRef: name: config --- apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: web namespace: test spec: hosts: - "*" gateways: - istio-system/istio-ingressgateway http: - match: - uri: prefix: "/" route: - destination: host: web port: number: 80
|
1
| kubectl apply -f gitea.yaml
|
查看
修改 istio-ingressgateway
的 LoadBalancer
为 NodePort
将端口暴露出去。
1
| kubectl edit service istio-ingressgateway -n istio-system
|
1
| kubectl get service -n istio-system
|
1
| istio-ingressgateway NodePort 10.96.203.60 <none> 80:31893/TCP 25m
|
最后访问 http://${ip}:31893/
就可以看到 Gitea
的页面了。