K8S 部署 harbor 私有项目

一、部署 harbor 服务器

修改主机名

hostnamectl set-hostname hub.m.com

所有节点加上主机名映射

echo '192.168.23.20 hub.m.com' >> /etc/hosts

安装 docker

yum install -y yum-utils device-mapper-persistent-data lvm2 
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
yum install -y docker-ce docker-ce-cli containerd.io

mkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": ["https://6ijb8ubo.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "insecure-registries": ["https://hub.m.com"]
}
EOF

systemctl start docker
systemctl enable docker

所有 node 节点都修改 docker 配置文件,加上私有仓库配置

cat > /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": ["https://6ijb8ubo.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "insecure-registries": ["https://hub.m.com"]
}
EOF

systemctl daemon-reload
systemctl restart docker


安装 Harbor

# 上传 harbor-offline-installer-v1.2.2.tgz 和 docker-compose 文件到 /opt 目录
cd /opt
cp docker-compose /usr/local/bin/
chmod +x /usr/local/bin/docker-compose

tar zxvf harbor-offline-installer-v1.2.2.tgz
cd harbor/
vim harbor.cfg
5  hostname = hub.m.com
9  ui_url_protocol = https
24 ssl_cert = /data/cert/server.crt
25 ssl_cert_key = /data/cert/server.key
59 harbor_admin_password = Harbor123123

image-20230907164006184

生成证书

mkdir -p /data/cert
cd /data/cert

# 生成私钥
openssl genrsa -des3 -out server.key 2048
# 输入两遍密码:123123

# 生成证书签名请求文件
openssl req -new -key server.key -out server.csr
输入私钥密码:123123
输入国家名:CN
输入省名:BJ
输入市名:BJ
输入组织名:m
输入机构名:m
输入域名:hub.m.com
输入管理员邮箱:admin@m.com
其它全部直接回车

#备份私钥
cp server.key server.key.org

#清除私钥密码
openssl rsa -in server.key.org -out server.key
# 输入私钥密码:123123

#签名证书
openssl x509 -req -days 1000 -in server.csr -signkey server.key -out server.crt
 
chmod +x /data/cert/*


image-20230907165719694

image-20230907170315843

image-20230907172952484

生成 harbor

cd /opt/harbor/
./install.sh

image-20230907173057518

在本地使用火狐浏览器访问:https://hub.m.com

添加例外 -> 确认安全例外

用户名:admin

密码:Harbor123123

image-20230907173959630

image-20230907174019056

在每个node节点上登录harbor 私有仓库

docker login -u admin -p Harbor123123 https://hub.m.com

二、上传镜像到 harbor私有仓库

浏览器访问 harbor 服务器,创建项目

image-20230914193729784

在 node01 节点获取 tomcat 镜像

docker pull tomcat:8.0.52
docker images

image-20230914194523157

image-20230914194556465

创建tomcat标签

docker tag tomcat:8.0.52 hub.m.com/my/tomcat:v1
docker images

image-20230914195723312

上传镜像

docker push hub.m.com/my/tomcat:v1

image-20230914195841996

image-20230914200012480

三、创建 harbor 登录凭据资源清单

创建 harbor 登录凭据资源清单,用于 K8S 访问 Harbor 私服拉取镜像所需要的密钥权限凭证 secret 资源

docker login -u admin 
# 在登录过harbor服务器的节点操作,查看登录凭证
cat /root/.docker/config.json | base64 -w 0
ewoJImF1dGhzIjogewoJCSJodWIubS5jb20iOiB7CgkJCSJhdXRoIjogIllXUnRhVzQ2U0dGeVltOXlNVEl6TVRJeiIKCQl9Cgl9Cn0=

image-20230915084125815

编辑secret yaml文件

secret是用于存储敏感信息的一种机制,如API密钥、密码、证书等。这些敏感信息可以被Pod容器挂载,以便在应用程序内部使用

vim harbor-pull-secret.yaml 

apiVersion: v1
kind: Secret
metadata:
  name: harbor-pull-secret
data:
  .dockerconfigjson: ewoJImF1dGhzIjogewoJCSJodWIubS5jb20iOiB7CgkJCSJhdXRoIjogIllXUnRhVzQ2U0dGeVltOXlNVEl6TVRJeiIKCQl9Cgl9Cn0=
type: kubernetes.io/dockerconfigjson

创建secret

kubectl apply -f harbor-pull-secret.yaml
kubectl get secret

image-20230915084854262

四、创建资源

编辑资源yaml文件

vim tomcat-deployment.yaml 

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-tomcat
spec:
  replicas: 2
  selector:
    matchLabels:
      app: my-tomcat
  template:
    metadata:
      labels:
        app: my-tomcat
    spec:
      imagePullSecrets:
      - name: harbor-pull-secret
      containers:
      - name: my-tomcat
        image: hub.m.com/my/tomcat:v1
        ports:
        - containerPort: 80

---
apiVersion: v1
kind: Service
metadata:
  name: my-tomcat
spec:
  type: NodePort
  ports:
  - port: 8080
    targetPort: 8080
    nodePort: 31111
  selector:
    app: my-tomcat

创建pod资源

kubectl apply -f tomcat-deployment.yaml 
kubectl get pod

image-20230915085521753

五、检验

kubectl get svc

image-20230915085836625

浏览器访问:192.168.23.5:31111

image-20230915085947717

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值