EKS 101 动手实验(四)编写yaml配置文件使用ECR上的镜像部署部署应用

有关EKS系列文档和实验的汇总,请点击这里跳转

一、确认ECR上镜像URI

进入ECR界面,新建一个镜像仓库名为phpdemo,并复制其URI地址是:

461072029761.dkr.ecr.ap-southeast-1.amazonaws.com/phpdemo

注意,不同region的名称不一样,以及最后要包含tag版本号。

将本地名为phpdocker的image的最新版本打上tag,ECR上版本号定为1。

docker tag phpdocker:latest 420029960748.dkr.ecr.cn-northwest-1.amazonaws.com.cn/phpdocker:1

将Image版本号为1的镜像push到ECR上:

docker push 420029960748.dkr.ecr.cn-northwest-1.amazonaws.com.cn/phpdocker:1

发布完成。

二、编写yaml文件

格式如下。注意替换里边的ECR容器镜像的完整URI地址,包含region、名称和版本号。

---
apiVersion: v1
kind: Namespace
metadata:
  name: mydemo
---
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: mydemo
  name: phpdocker
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: phpdocker
  replicas: 3
  template:
    metadata:
      labels:
        app.kubernetes.io/name: phpdocker
    spec:
      containers:
      - image: 461072029761.dkr.ecr.ap-southeast-1.amazonaws.com/phpdemo:1
        imagePullPolicy: Always
        name: phpdocker
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  namespace: mydemo
  name: phpdocker
spec:
  ports:
    - port: 80
      targetPort: 80
      protocol: TCP
  type: NodePort
  selector:
    app.kubernetes.io/name: phpdocker
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: mydemo
  name: ingress-phpdocker
  annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/target-type: ip
spec:
  rules:
    - http:
        paths:
        - path: /
          pathType: Prefix
          backend:
            service:
              name: phpdocker
              port:
                number: 80

请替换以上yaml文件中,namespace、deployment、image、service、alb ingress等可替换为自己的标识。

将以上文件保存为phpdocker.yaml,然后从本地启动部署。

三、启动环境

执行如下命令:

kubectl apply -f phpdocker.yaml

四、访问环境

执行如下命令检查pod运行状态:

kubectl get pods -n mydemo

返回结果:

NAME                         READY   STATUS    RESTARTS   AGE
phpdocker-69d447587b-fxjv5   1/1     Running   0          10m
phpdocker-69d447587b-kgklt   1/1     Running   0          10m
phpdocker-69d447587b-kk6th   1/1     Running   0          10m

执行如下命令查看ALB Ingress入口:

kubectl get ingress -n mydemo

返回结果:

NAME                CLASS    HOSTS   ADDRESS                                                                     PORTS   AGE
ingress-phpdocker   <none>   *       k8s-mydemo-ingressp-d0c41bb86f-601116587.ap-southeast-1.elb.amazonaws.com   80      71s

使用浏览器访问上述ALB地址即可访问成功。

五、删除实验环境

如果从本地启动的,则执行如下命令:

kubectl delete -f phpdocker.yaml

实验完成。