微软云azure和 aks系列文章 - 含azure az安装 - curl安装kubectl

kubeclt工具下载:

https://kubernetes.io/docs/tasks/tools/#kubectl

AKS简介

Azure Kubernetes 服务 (AKS) 通过将操作开销卸载到 Azure,简化了在 Azure 中部署托管 Kubernetes 群集的过程。 作为一个托管的 Kubernetes 服务,Azure 可以自动处理运行状况监视和维护等关键任务。 创建 AKS 群集时,系统会自动创建和配置控制平面。 此控制平面作为提取自用户的 Azure 托管资源免费提供。 你只为附加到 AKS 群集的节点付费并对其进行管理。

零  先决条件 Azure基础之 az安装

# az是微软云的cmd工具,可以执行各种cmd命令,比如拉取aks证书等,所以我们先安装az工具

# 先决条件
# 安装 az
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
echo -e "[azure-cli]
name=Azure CLI
baseurl=https://packages.microsoft.com/yumrepos/azure-cli
enabled=1
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc" | sudo tee /etc/yum.repos.d/azure-cli.repo
yum -y install azure-cli 
# 登录 az
# 打开 Azure CLI 切换到中国区  -n AzureChinaCloud
az cloud set -n AzureChinaCloud  # /切换至AzureChina
az login # /登录Azure
# 运行以下命令 
az account set --subscription 45xxxx-75df-475d-ad1b-xxxxxxxx # 45xxx换成自己的订阅号
az account set -n AzureChinaCloud --subscription 45xxxx-75df-475d-ad1b-xxxxxxxx # 45xxx换成自己的订阅号
#
az aks get-credentials --resource-group uat-all --name uat-k8s-all # 换成自己的aks name

如果习惯kubectl:


# 安装 kubectl
curl -LO https://dl.k8s.io/release/v1.22.0/bin/linux/amd64/kubectl

一 认证

先了解一下 原生K8S证书基础知识  :

图来自于:https://www.cnblogs.com/chinasoft/p/15896403.html

原生K8S操作步骤:

操作步骤文章:https://jimmysong.io/kubernetes-handbook/guide/kubectl-user-authentication-authorization.html

Azure的rbac ,一句话该块的话就是: 基于K8S进行授权,但是认证体系走azure部分。

推荐文章(已测试可用):AKS (9) 基于Azure AD的AKS RBAC访问控制 - Lei Zhang的博客 - 博客园

示例:

  第一步:az api创建  web组 web用户 获取到 web组的 id

webgroup_id=$(az ad group create --display-name webgroup --mail-nickname webgroup --query objectId -o tsv)

webuser_id=$(az ad user create  --display-name "web user" \
  --user-principal-name "webuser@mtr.partner.onmschina.cn" \
  --password "Password" \
  --query objectId -o tsv)
  
AKS_ID=$(az aks show \
--resource-group test-all-group \
--name test-k8s-all \
--query id -o tsv)

webgroupid:
7e9c40f2-eaf4-4cef-a3b3-f298f776f282

  第二步:把AKS和web组联系起来  在集群设置里面添加 web这个组

                设置AKS集群允许Azure AD RBAC认证

  第三步:创建namespace,创建Role和Role Binding

cat web-ns-role.yaml  这个权限其实也不是完全fuul,只是常用的资源,缺少 statatfulset 和daemon等资源的权限


kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: web-full-access #  绑定的时候会用到
  namespace: web
rules:
- apiGroups: ["", "extensions", "apps"]
  resources: ["services", "endpoints", "pods","deployments","replicasets"]
  verbs: ["get", "list", "watch","update","patch", "delete","create"]

 # 这个是只读 留着备用

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: web-limited-access # 绑定的时候会用到
  namespace: web
rules:
- apiGroups: ["", "extensions", "apps"]
  resources: ["services", "endpoints", "pods","deployments","replicasets"]
  verbs: ["get", "list", "watch"] # 去掉了 update等权限

cat web-full-rolebind.yaml


kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: web-group-access-1  
  namespace: web

roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: web-full-access   # 绑定的role的名字 如果想只读就用 web-limited-access

subjects:
- kind: Group
  namespace: web
  name: 7e9c40f2-eaf4-4cef-a3b3-f298f776f282 # Azure的web组的id
kubectl apply -f web-ns-role.yaml
kubectl apply -f web-full-rolebind.yaml

# 获取 kubeconfig到当前用户    会提示 az 和kubectl 使用 web用户登录的浏览器

后期推荐使用命令行直接登录:

https://github.com/Azure/kubelogin

GitHub - Azure/kubelogin: A Kubernetes credential (exec) plugin implementing azure authentication

az aks get-credentials --resource-group test-all-group --name test-k8s-all --overwrite-existing

二 存储

默认自带的几个sc都可以用,默认的pvc的创建的name是随机的 英文名称,创建好之后会在azure的存储账户里面看到。

# azure 创建pvpvc流程

# 1 创建sc aks 默认也有一些sc

kubectl get sc

W1219 03:23:12.990766 3957588 azure.go:92] WARNING: the azure auth plugin is deprecated in v1.22+, unavailable in v1.26+; use https://github.com/Azure/kubelogin instead.

To learn more, consult https://kubernetes.io/docs/reference/access-authn-authz/authentication/#client-go-credential-plugins

NAME                    PROVISIONER          RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE

azurefile               file.csi.azure.com   Delete          Immediate              true                   33d

# azurefile-csi:使用 Azure 标准存储创建 Azure 文件共享。

# azurefile-csi-premium:使用 Azure 高级存储创建 Azure 文件共享。

azurefile-csi           file.csi.azure.com   Delete          Immediate              true                   33d

azurefile-csi-premium   file.csi.azure.com   Delete          Immediate              true                   33d

azurefile-premium       file.csi.azure.com   Delete          Immediate              true                   33d

default (default)       disk.csi.azure.com   Delete          WaitForFirstConsumer   true                   33d

managed                 disk.csi.azure.com   Delete          WaitForFirstConsumer   true                   33d

managed-csi             disk.csi.azure.com   Delete          WaitForFirstConsumer   true                   33d

managed-csi-premium     disk.csi.azure.com   Delete          WaitForFirstConsumer   true                   33d

managed-premium         disk.csi.azure.com   Delete          WaitForFirstConsumer   true                   33d

my-azurefile            file.csi.azure.com   Delete          Immediate              true                   25d

my-azurefile2           file.csi.azure.com   Delete          Immediate              true                   16d

# 例子1 azurefile-csi

# cat azure-pvc2.yaml

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

  name: azurefile-csi-pvc

spec:

  accessModes:

    - ReadWriteMany

  storageClassName: azurefile-csi

  resources:

    requests:

      storage: 10Gi

# kubectl get pvc

NAME                STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS    AGE

azurefile-csi-pvc   Bound    pvc-eb9ecda6-12a9-48b8-a176-5cac9f46a66b   10Gi       RWX            azurefile-csi   3s

# 官方文档参考

https://learn.microsoft.com/zh-cn/azure/aks/azure-files-csi

三 网络

aks的网络 类似于 腾讯tke,pod网络和是和 linux虚拟机可以互通的,因此也要注意pod的网段的划分

可以直接创建一个 waf 绑定到ask直接使用

# ingress示例

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mytest
  labels:
    app: mytest
spec:
  replicas: 1
  selector:
    matchLabels:
      app: cybeego
  template:
    metadata:
      labels:
        app: cybeego
    spec:
      containers:
      - name: cybeego
        image: testharbor.azurecr.cn/it/nginx_cybeego
        ports:
        - containerPort: 8888
---
apiVersion: v1
kind: Service
metadata:
  name: mytest-service
spec:
  selector:
    app: cybeego
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8888
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: cybeego
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/health-probe-path: "/"
spec:
  rules:
  - http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: mytest-service
            port:
              number: 80

执行之后会自动在微软waf上面创建 后端池、后端、侦听器、规则四块需要ui操作的,还是挺方便的。

四 监控 日志

aks监控可以直接接入grafana,有成熟模板,后期再补充示例。

日志是azure统一的日志,事件暂时没有找到持久化存储的相关产品,后续补充。

五 安全

待续。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值