Đầu tiên bạn cài chartmuseum bằng helm chart lên k8s.
Chúng ta có thể lựa chọn backend hay các file helm-package sẽ được store ở đâu khi sử dụng chartmuseum.
1) Install Chartmuseum
mình chọn lưu trên s3 nên chúng ta cần tạo User IAM và lấy access key và secret key.
với policy như sau:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListObjects", "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": "arn:aws:s3:::chart-museum-devops" }, { "Sid": "AllowObjectsCRUD", "Effect": "Allow", "Action": [ "s3:DeleteObject", "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::chart-museum-devops/*" } ] }
Tiếp đến bạn tạo 1 s3:
https://artifacthub.io/packages/helm/chartmuseum/chartmuseum?modal=install
Bạn có thể tham khảo values sau:
ingress: enabled: true annotations: kubernetes.io/ingress.class: nginx hosts: - name: chartmuseum.nimtechnology.com path: / env: open: DISABLE_API: false STORAGE: amazon STORAGE_AMAZON_BUCKET: chartmuseum-nimtechnology STORAGE_AMAZON_PREFIX: STORAGE_AMAZON_REGION: us-east-1 secret: AWS_ACCESS_KEY_ID: "XXXXXXXXXXXXXXXXXXX" AWS_SECRET_ACCESS_KEY: "XXXXXXXXXXXXXXXXXXXXXXxQANiL+5s" BASIC_AUTH_USER: nim BASIC_AUTH_PASS: nim123
Bạn thấy là việc để AWS_SECRET_ACCESS_KEY trên value thì cũng không ổn lắm.
Bạn có thể sử dụng kustomize và tính năng merge, bạn click vào links nhé.
Bạn sẽ cần tạo secret trên k8s trước
apiVersion: v1 kind: Secret metadata: name: chartmuseum-devops namespace: chartmuseum type: Opaque data: AWS_ACCESS_KEY_ID: XXXXXXXXXXXXXXXXXXXRN04= AWS_SECRET_ACCESS_KEY: XXXXXXXXXXXXXXXXXXXRN04XXXXXXXXXXXXXXXXXXXRN04==
Bạn tạo tiếp patchesStrategicMerge
apiVersion: apps/v1 kind: Deployment metadata: name: chartmuseum spec: template: spec: automountServiceAccountToken: false containers: - name: chartmuseum env: - name: AWS_ACCESS_KEY_ID valueFrom: secretKeyRef: key: AWS_ACCESS_KEY_ID name: chartmuseum-devops - name: AWS_SECRET_ACCESS_KEY valueFrom: secretKeyRef: key: AWS_SECRET_ACCESS_KEY name: chartmuseum-devops
Kết quả là file đã được sửa và thêm như bên dưới
Nếu cài mà bạn bị lỗi POST /api/charts returns 404 not found thì có thểm tham khảo Issue trên github
2) Push the helm package to Chartmuseum.
Để push helm package lên Museum thì bạn có thể tham khảo.
Cách 1: là dụng curl
https://medium.com/stakater/using-chartmuseum-as-a-chart-repository-for-helm-b4d12205f4c9
Cách 2: là dùng helm-push
https://github.com/chartmuseum/helm-push
Cách 3: nếu bạn sử s3 làm backend cho chartmuseum thì bạn cứ đầy file lên S3