Skip to content

Installer image hardening #1248

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Oct 16, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 1 addition & 8 deletions components/installer/deploy/installer/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,16 +1,9 @@
FROM alpine:3.7
FROM alpine:3.8

LABEL source="[email protected]:kyma-project/kyma.git"

RUN apk --no-cache add ca-certificates
RUN apk add --no-cache curl
RUN apk add --no-cache bash

# Install kubectl
ARG KUBECTL_CLI_VERSION=1.9.0
RUN curl -Lo /usr/local/bin/kubectl https://storage.googleapis.com/kubernetes-release/release/v$KUBECTL_CLI_VERSION/bin/linux/amd64/kubectl
RUN chmod +x /usr/local/bin/kubectl
RUN /bin/bash -c 'printf "\n########################################\nkubectl version: $(kubectl version)\n########################################\n"'

ADD installer ./installer

Expand Down
31 changes: 2 additions & 29 deletions components/installer/pkg/apis/installer/v1alpha1/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ func (i *Installation) ShouldInstall() bool {
}

func (i *Installation) canInstall() bool {
return (i.Status.State == StateEmpty || i.Status.State == StateUninstalled)
return (i.Status.State == StateEmpty || i.Status.State == StateUninstalled || i.Status.State == StateInstalled)
}

// ShouldUninstall returns true when user requested uninstall action
Expand All @@ -41,22 +41,7 @@ func (i *Installation) ShouldUninstall() bool {
}

func (i *Installation) canUninstall() bool {
return (i.Status.State == StateInstalled || i.Status.State == StateUpdated || i.Status.State == StateError)
}

// ShouldUpdate returns true when user requested update action
func (i *Installation) ShouldUpdate() bool {
action := i.ObjectMeta.Labels["action"]

if i.Status.State == StateEmpty {
return false
}

return action == ActionUpdate && i.canUpdate()
}

func (i *Installation) canUpdate() bool {
return (i.Status.State == StateInstalled || i.Status.State == StateUpdated)
return (i.Status.State == StateInstalled || i.Status.State == StateError)
}

func (i *Installation) hasCondition(condition InstallationConditionType) bool {
Expand Down Expand Up @@ -121,9 +106,6 @@ const (
// StateInstalled means installation of kyma is done
StateInstalled StateEnum = "Installed"

// StateUpdated means installation of kyma is updated
StateUpdated StateEnum = "Updated"

// StateUninstalled means installation is removed without errors
StateUninstalled StateEnum = "Uninstalled"

Expand All @@ -139,12 +121,6 @@ const (
// ConditionInstalling .
ConditionInstalling InstallationConditionType = "Installing"

// ConditionUpdated .
ConditionUpdated InstallationConditionType = "Updated"

// ConditionUpdating .
ConditionUpdating InstallationConditionType = "Updating"

// ConditionUninstalled .
ConditionUninstalled InstallationConditionType = "Uninstalled"

Expand All @@ -160,9 +136,6 @@ const (
// ActionInstall .
ActionInstall string = "install"

// ActionUpdate .
ActionUpdate string = "update"

// ActionUninstall .
ActionUninstall = "uninstall"
)
Expand Down
63 changes: 0 additions & 63 deletions components/installer/pkg/conditionmanager/condition-manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,6 @@ type Interface interface {
InstallSuccess() error
InstallError() error

UpdateStart() error
UpdateSuccess() error
UpdateError() error

UninstallStart() error
UninstallSuccess() error
UninstallError() error
Expand Down Expand Up @@ -58,7 +54,6 @@ func (cm *impl) InstallSuccess() error {
cm.setCondition(installation, installationv1alpha1.CondtitionInstalled, v1.ConditionTrue)
cm.setCondition(installation, installationv1alpha1.ConditionInstalling, v1.ConditionFalse)
cm.setCondition(installation, installationv1alpha1.ConditionInProgress, v1.ConditionFalse)
cm.setCondition(installation, installationv1alpha1.ConditionUpdated, v1.ConditionFalse)
cm.setCondition(installation, installationv1alpha1.ConditionUninstalled, v1.ConditionFalse)
cm.setCondition(installation, installationv1alpha1.ConditionError, v1.ConditionFalse)

Expand Down Expand Up @@ -89,62 +84,6 @@ func (cm *impl) InstallError() error {
return nil
}

func (cm *impl) UpdateStart() error {
installation, err := cm.getInstallation()
if err != nil {
return err
}

cm.setCondition(installation, installationv1alpha1.ConditionUpdating, v1.ConditionTrue)
cm.setCondition(installation, installationv1alpha1.ConditionInProgress, v1.ConditionTrue)
cm.setCondition(installation, installationv1alpha1.ConditionError, v1.ConditionFalse)

err = cm.update(installation)
if err != nil {
return err
}

return nil
}

func (cm *impl) UpdateSuccess() error {
installation, err := cm.getInstallation()
if err != nil {
return err
}

cm.setCondition(installation, installationv1alpha1.ConditionUpdated, v1.ConditionTrue)
cm.setCondition(installation, installationv1alpha1.ConditionUpdating, v1.ConditionFalse)
cm.setCondition(installation, installationv1alpha1.ConditionInProgress, v1.ConditionFalse)
cm.setCondition(installation, installationv1alpha1.ConditionError, v1.ConditionFalse)

err = cm.update(installation)
if err != nil {
return err
}

return nil
}

func (cm *impl) UpdateError() error {
installation, err := cm.getInstallation()
if err != nil {
return err
}

cm.setCondition(installation, installationv1alpha1.ConditionUpdated, v1.ConditionFalse)
cm.setCondition(installation, installationv1alpha1.ConditionUpdating, v1.ConditionFalse)
cm.setCondition(installation, installationv1alpha1.ConditionInProgress, v1.ConditionFalse)
cm.setCondition(installation, installationv1alpha1.ConditionError, v1.ConditionTrue)

err = cm.update(installation)
if err != nil {
return err
}

return nil
}

func (cm *impl) UninstallStart() error {
installation, err := cm.getInstallation()
if err != nil {
Expand All @@ -169,8 +108,6 @@ func (cm *impl) UninstallSuccess() error {
return err
}

cm.setCondition(installation, installationv1alpha1.ConditionUpdated, v1.ConditionFalse)
cm.setCondition(installation, installationv1alpha1.ConditionUpdating, v1.ConditionFalse)
cm.setCondition(installation, installationv1alpha1.ConditionUninstalling, v1.ConditionFalse)
cm.setCondition(installation, installationv1alpha1.ConditionUninstalled, v1.ConditionTrue)
cm.setCondition(installation, installationv1alpha1.CondtitionInstalled, v1.ConditionFalse)
Expand Down
18 changes: 0 additions & 18 deletions components/installer/pkg/installation/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -213,24 +213,6 @@ func (c *Controller) syncHandler(key string) error {
if err != nil {
return err
}
} else if installation.ShouldUpdate() {

err = c.conditionManager.UpdateStart()
if err != nil {
return err
}

err = c.kymaSteps.InstallKyma(installationData, overrideProvider)
if err != nil {
c.conditionManager.UpdateError()

return err
}

err = c.conditionManager.UpdateSuccess()
if err != nil {
return err
}
}

c.recorder.Event(installation, corev1.EventTypeNormal, SuccessSynced, MessageResourceSynced)
Expand Down
7 changes: 0 additions & 7 deletions components/installer/pkg/statusmanager/status-manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import (
type StatusManager interface {
InProgress(description string) error
InstallDone(url, kymaVersion string) error
UpdateDone(url, kymaVersion string) error
UninstallDone() error
Error(description string) error
}
Expand Down Expand Up @@ -51,12 +50,6 @@ func (sm *statusManager) InstallDone(url, kymaVersion string) error {
return sm.update(instStatus)
}

//UpdateDone .
func (sm *statusManager) UpdateDone(url, kymaVersion string) error {
instStatus := getStatus(installationv1alpha1.StateUpdated, "Kyma updated", url, kymaVersion)
return sm.update(instStatus)
}

//UninstallDone .
func (sm *statusManager) UninstallDone() error {
instStatus := getStatus(installationv1alpha1.StateUninstalled, "Kyma uninstalled", "", "")
Expand Down
40 changes: 0 additions & 40 deletions components/installer/pkg/statusmanager/status-manager_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -209,46 +209,6 @@ func TestStatusManager(t *testing.T) {
So(kymaInst.Status.URL, ShouldEqual, testURL)
So(kymaInst.Status.KymaVersion, ShouldEqual, testVersion)
})

Convey("should update state, description, url and kyma version after update", func() {
oldState := installationv1alpha1.StateInstalled
oldDescription := "installing kyma"
oldURL := "installedURL"
oldVersion := "0.0.1"

testState := installationv1alpha1.StateUpdated
testDescription := "Kyma updated"
testURL := "fakeURL"
testVersion := "0.0.2"

testInst := &installationv1alpha1.Installation{
ObjectMeta: metav1.ObjectMeta{
Name: consts.InstResource,
Namespace: consts.InstNamespace,
},
Spec: installationv1alpha1.InstallationSpec{
URL: testURL,
KymaVersion: testVersion,
},
Status: installationv1alpha1.InstallationStatus{
State: oldState,
Description: oldDescription,
URL: oldURL,
KymaVersion: oldVersion,
},
}
testStatusManager := getTestSetup(testInst)

err := testStatusManager.UpdateDone(testURL, testVersion)

kymaInst, _ := testStatusManager.client.InstallerV1alpha1().Installations(consts.InstNamespace).Get(consts.InstResource, metav1.GetOptions{})

So(err, ShouldBeNil)
So(kymaInst.Status.State, ShouldEqual, testState)
So(kymaInst.Status.Description, ShouldEqual, testDescription)
So(kymaInst.Status.URL, ShouldEqual, testURL)
So(kymaInst.Status.KymaVersion, ShouldEqual, testVersion)
})
})
}

Expand Down
2 changes: 1 addition & 1 deletion installation/scripts/update.sh
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,4 @@ if [ $LOCAL -eq 1 ]; then
bash $CURRENT_DIR/copy-resources.sh
fi

kubectl label installation/${CR_NAME} action=update --overwrite
kubectl label installation/${CR_NAME} action=install --overwrite