Deploying an Application Through the Helm v2 Client

Prerequisites

The Kubernetes cluster created on CCE has been connected to kubectl. For details, see Using kubectl.

Installing Helm v2

This section uses Helm v2.17.0 as an example.

For other versions, visit https://github.com/helm/helm/releases.

  1. Download the Helm client from the VM connected to the cluster.

    wget https://get.helm.sh/helm-v2.17.0-linux-amd64.tar.gz
    
  2. Decompress the Helm package.

    tar -xzvf helm-v2.17.0-linux-amd64.tar.gz
    
  3. Copy Helm to the system path, for example, /usr/local/bin/helm.

    mv linux-amd64/helm /usr/local/bin/helm
    
  4. RBAC is enabled on the Kubernetes API server. Create the service account name tiller for the tiller and assign cluster-admin, a system ClusterRole, to the tiller. Create a tiller resource account as follows:

    vim tiller-rbac.yaml

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: tiller
      namespace: kube-system
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: tiller
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: cluster-admin
    subjects:
      - kind: ServiceAccount
        name: tiller
        namespace: kube-system
    
  5. Deploy the tiller resource account.

    kubectl apply -f tiller-rbac.yaml
    
  6. Initialize the Helm and deploy the pod of tiller.

    helm init --service-account tiller --skip-refresh
    
  7. Query the status.

    kubectl get pod -n kube-system -l app=helm
    

    Command output:

    NAME                             READY   STATUS    RESTARTS   AGE
    tiller-deploy-7b56c8dfb7-fxk5g   1/1     Running   1          23h
    
  8. Query the Helm version.

    # helm version
    Client: &version.Version{SemVer:"v2.17.0", GitCommit:"a690bad98af45b015bd3da1a41f6218b1a451dbe", GitTreeState:"clean"}
    Server: &version.Version{SemVer:"v2.17.0", GitCommit:"a690bad98af45b015bd3da1a41f6218b1a451dbe", GitTreeState:"clean"}
    

Installing the Helm Chart

If the charts provided by CCE do not meet requirements, download a chart and install it.

You can obtain the required chart in the stable directory on this website, download the chart, and upload it to the node.

  1. Download and decompress the obtained chart. Generally, the chart is in ZIP format.

    unzip chart.zip
    
  2. Install the Helm chart.

    helm install aerospike/
    
  3. After the installation is complete, run the helm list command to check the status of the chart releases.

Common Issues

  • The following error message is displayed after the Helm version command is run:

    Client:
    &version.Version{SemVer:"v2.17.0",
    GitCommit:"a690bad98af45b015bd3da1a41f6218b1a451dbe", GitTreeState:"clean"}
    E0718 11:46:10.132102    7023 portforward.go:332] an error occurred
    forwarding 41458 -> 44134: error forwarding port 44134 to pod
    d566b78f997eea6c4b1c0322b34ce8052c6c2001e8edff243647748464cd7919, uid : unable
    to do port forwarding: socat not found.
    Error: cannot connect to Tiller
    

    The preceding information is displayed because the socat is not installed. Run the following command to install the socat:

    yum install socat -y
    
  • When you run the yum install socat -y command on a node running EulerOS 2.9, the following error message is displayed:

    No match for argument: socat

    Error: Unable to find a match: socat

    The image does not contain socat. In this case, manually download the RPM chart and run the following command to install it (replace the RPM chart name with the actual one):

    rpm -i socat-1.7.3.2-8.oe1.x86_64.rpm
    
  • When the socat has been installed and the following error message is displayed after the helm version command is run:

    test@local:~/k8s/helm/test$ helm version
    Client: &version.Version{SemVer:"v3.3.0", GitCommit:"021cb0ac1a1b2f888144ef5a67b8dab6c2d45be6", GitTreeState:"clean"}
    Error: cannot connect to Tiller
    

    The Helm chart reads the configuration certificate from the .Kube/config file to communicate with Kubernetes. The preceding error indicates that the kubectl configuration is incorrect. In this case, reconnect the cluster to kubectl. For details, see Using kubectl.

  • Storage fails to be created after you have connected to cloud storage services.

    This issue may be caused by the annotation field in the created PVC. Change the chart name and install the chart again.

  • If kubectl is not properly configured, the following error message is displayed after the helm install command is run:

    [root@prometheus-57046 ~]# helm install prometheus/ --generate-name
    WARNING: This chart is deprecated
    Error: Kubernetes cluster unreachable: Get "http://localhost:8080/version?timeout=32s": dial tcp [::1]:8080: connect: connection refused
    

    Solution: Configure kubeconfig for the node. For details, see Using kubectl.