ArgoCD 安装-内网安装
ArgoCD是什么请自行百度,这里只是记录安装步骤。
一、准备:
1、一个k8s集群
2、下载安装yaml文件
1 | $ wget https://raw.githubusercontent.com/argoproj/argo-cd/v1.5.5/manifests/install.yaml |
二、开始安装:
1、创建argocd命名空间
1 | $ kubectl create namespace argocd |
2、我安装的服务器只能用内网,所以我打开了install.yaml,找到里面的所有镜像,在有网的地方下载了,再拷贝到了服务器,
如:image: argoproj/argocd:v1.5.5
外网电脑:
1 2 | $ docker pull argoproj/argocd:v1.5.5 $ docker save -o argocd1.5.5.tar argoproj/argocd:v1.5.5 |
把argocd1.5.5.tar拷贝到内网服务器,在内网服务器执行:
1 | $ docker load < argocd1.5.5.tar |
这里所有的镜像都是这样操作,把install.yaml也拷贝到内网服务器,由于后面需要使用ssh和bitbucket进行认证,这里需要生成一对sshkey。
1 2 | #遇到提示需要输入,全部按回车键。 $ ssh-keygen -t rsa |
1 2 | #生成一个名字是ssh-key-secret的k8s secret。 $ kubectl create secret generic ssh-key-secret -n argocd --from-file=ssh-privatekey=/root/.ssh/id_rsa --from-file=ssh-publickey=/root/.ssh/id_rsa.pub |
修改install.yaml,使得argocd-server的pod可以拥有这一对sshkey,把argocd-server的deployment的volumeMounts和volumes修改为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | volumeMounts: - mountPath: /app/config/ssh name: ssh-known-hosts - mountPath: /app/config/tls name: tls-certs - name: secret-volume readOnly: true mountPath: /etc/secret-volume serviceAccountName: argocd-server volumes: - emptyDir: {} name: static-files - configMap: name: argocd-ssh-known-hosts-cm name: ssh-known-hosts - configMap: name: argocd-tls-certs-cm name: tls-certs - secret: secretName: ssh-key-secret name: secret-volume |
volumeMounts中添加的部分:
1 2 3 | - name: secret-volume readOnly: true mountPath: /etc/secret-volume |
volumes中添加的部分:
1 2 3 | - secret: secretName: ssh-key-secret name: secret-volume |
执行下面命令进行部署
1 | $ kubectl apply -n argocd -f install.yaml |
1 2 | #执行检查是否所有pod都是running状态 $ kubectl get pods -n argocd |
三、配置域名访问方式
1、新增ingress.yaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | apiVersion: extensions/v1beta1 kind: Ingress metadata: name: argocd-server-http-ingress namespace: argocd annotations: kubernetes.io/ingress.class: "nginx" nginx.ingress.kubernetes.io/force-ssl-redirect: "true" nginx.ingress.kubernetes.io/backend-protocol: "HTTP" spec: rules: - http: paths: - backend: serviceName: argocd-server servicePort: http host: example.argocd.com tls: - hosts: - example.argocd.com secretName: argocd-secret |
2、执行
1 | $ kubectl create -n argocd -f ingress.yaml |
3、编辑argocd-server deployment以将–insecure标志添加 到argocd-server命令:
1 2 3 4 5 6 7 8 9 10 11 12 | spec: template: spec: name: argocd-server containers: - command: - /argocd-server - --staticassets - /shared/app - --repo-server - argocd-repo-server:8081 - --insecure #追加 |
将k8s集群某一台宿主机的ip加上网址,添加到hosts文件中,添加后可通过浏览器访问example.argocd.com
1 | 10.11.38.29 example.argocd.com |
到此ArgoCD的安装就完成了,登录的用户名是admin,密码为argo-server的pod名字,可以通过命令查找出来。
1 | $ kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-server -o name | cut -d'/' -f 2 |
登录这里我遇到一个坑,用pod名字作为密码无论怎么都登录不成功,提示用户名或者密码错误,最后只能修改密码来登录。密码要先通过Bcrypt进行加密,网址https://www.jisuan.mobi/p163u3BN66Hm6JWx.html。
1 2 3 4 5 | #密码A123456 $ kubectl -n argocd patch secret argocd-secret -p '{"stringData": { "admin.password": "$2a$10$88NHgAw3gSbPmMGvPH8wl.E.wh/JpxF6LpAkN.3YzI8vCKqz92rpi", "admin.passwordMtime": "'$(date +%FT%T%Z)'" }}' |
至此,安装完成。
参考文章:https://blog.csdn.net/weixin_37546425/article/details/105137539
https://argoproj.github.io/argo-cd/getting_started/#port-forwarding