istio 里部署我们自己的应用

前提

kubernates 集群里已经安装好了 istio
注意:命令都是在k8s 集群的master 机器上执行的哦

1. 创建命名空间

namespace 可以用来隔离容器和服务

创建一个dev,并且打开自动注入

kubectl create ns dev
kubectl label namespace dev istio-injection=enabled
kubectl get ns  -L istio-injection

2. 创建secret

因为我们的镜像是私有仓库,必须登陆才能pull
所以在集群内创建secret,方便pull 镜像
(敏感信息已脱敏)

kubectl -n dev create secret docker-registry geek-secret \
--docker-server=registry.cn-shenzhen.aliyuncs.com \
--docker-username=xxxx\
--docker-password=xxxxx \
[email protected]

其中,docker-registrysecret类型,不能修改
geek-secret 是name,随意修改
页面查看

image.png

语法点我

检验

[root@iZwz983wql3f1yerh738xeZ fanggeek]# kubectl get secrets -n dev
NAME                  TYPE                                  DATA      AGE
default-token-cg9tc   kubernetes.io/service-account-token   3         52m
geek-secret           kubernetes.io/dockerconfigjson        1         1m
istio.default         istio.io/key-and-cert                 3         52m
my-secret             kubernetes.io/dockerconfigjson        1         14m

3. 创建并部署

kubectl -n dev create -f ./sms-dev.yaml

输出

[root@iZwz983wql3f1yerh738xeZ fanggeek]# kubectl -n dev create -f ./sms-dev-injected.yaml
service "ms-sms" created
deployment.extensions "ms-sms-v1" created

解释
-n dev 安装到dev这个namespace

4. check

检查、确认一下,执行两个命令,分别查看podservice

[root@iZwz9d2n2uc00beimb4u5kZ fanggeek]# kubectl get pod -n prod
NAME                        READY     STATUS    RESTARTS   AGE
ms-sms-v1-768fd445b-2n94p   2/2       Running   0          3m
ms-sms-v1-768fd445b-6bfxr   2/2       Running   0          3m

注意:数量必须是2,才表明istioproxy注入进去了

5. 卸载

kubectl -n dev delete -f ./sms-dev.yaml
[root@iZwz983wql3f1yerh738xeZ fanggeek]# kubectl -n dev delete -f ./sms-dev-injected.yaml
service "ms-sms" deleted
deployment.extensions "ms-sms-v1" deleted

6. nothing

在这里贴一下我用的 sms-dev.yaml


##################################################################################################
# sms-dev service
##################################################################################################
apiVersion: v1
kind: Service   # 定义一个服务
metadata:
  namespace: dev
  name: ms-sms
  labels:
    app: ms-sms   
spec:
  ports:
  - port: 8080   # port是service对外的端口,targetPort是容器的端口,如果不写 targetPort, 那么就默认和port 一样
    name: http
  selector:
    app: ms-sms   # 这个service 把所有的 labels 为“app: ms-sms” 的pod选中,抽象为一个service,统一对-外提供服务
---
apiVersion: extensions/v1beta1
kind: Deployment         # 定义部署,多个 Deployment 可以组成一个 service
metadata:
  namespace: dev
  name: ms-sms-v1
spec:
  replicas: 1     #副本数量
  template:
    metadata:
      labels:
        app: ms-sms      #定义一个标签,可以被service 使用
        version: v1
    spec:
      imagePullSecrets:
      - name: geek-secret     #pull 私有镜像的时候,使用的密钥文件
      containers:
      - name: ms-sms
        image: xxxxxxxxxx/sms-dev:latest
        imagePullPolicy: Always    # Always:不管镜像是否存在都会进行一次拉取,适合我们标记为 latest的私有镜像
        ports:
        - containerPort: 8080
---

你可能感兴趣的:(istio 里部署我们自己的应用)